Пример #1
0
def entrenarSomnolencia(red):
    #Se inicializa el dataset
    ds = SupervisedDataSet(4096,1)

    """Se crea el dataset, para ello procesamos cada una de las imagenes obteniendo los rostros,
       luego se le asignan los valores deseados del resultado la red neuronal."""

    print "Somnolencia - cara"
    for i,c in enumerate(os.listdir(os.path.dirname('/home/taberu/Imágenes/img_tesis/somnoliento/'))):
        try:
            im = cv2.imread('/home/taberu/Imágenes/img_tesis/somnoliento/'+c)
            pim = pi.procesarImagen(im)
            cara = d.deteccionFacial(pim)
            if cara == None:
                print "No hay cara"
            else:
                print i
                ds.appendLinked(cara.flatten(),10)
        except:
            pass

    trainer = BackpropTrainer(red, ds)
    print "Entrenando hasta converger"
    trainer.trainUntilConvergence()
    NetworkWriter.writeToFile(red, 'rna_somnolencia.xml')
Пример #2
0
def entrenarSonoliento(red):
    #Se inicializa el dataset
    ds = SupervisedDataSet(4096,1)

    """Se crea el dataset, para ello procesamos cada una de las imagenes obteniendo los rostros,
       luego se le asignan los valores deseados del resultado la red neuronal."""


    for i,c in enumerate(os.listdir(os.path.dirname(path + '/static/img/sleepy/'))):
        a = 0
        while a < 50:
            try:
                a += 1 
                im3 = cv2.imread(path + '/static/img/sleepy/'+c)
                procesado = p.procesarImagen(im3)
                cara = d.deteccionFacial1(procesado)
                ds.addSample(cara.flatten(),10)
            except:
                pass
            

    trainer = BackpropTrainer(red, ds)
    print "Entrenando hasta converger"
    trainer.trainOnDataset(ds,100)
    NetworkWriter.writeToFile(red, 'rna_somnolencia.xml')



#para entrenar operadores manualmente
#red_operador = NetworkReader.readFrom('rna_operador.xml')
#entrenarOperador(red_operador)

#para entrenar somnolencia manualmente
#red_somno = NetworkReader.readFrom('rna_somnolencia.xml')
#entrenarSonoliento(red_somno)
Пример #3
0
    def guardarimagen(self, filUpload):
        mensaje = ""
        imagenes = []
        path = os.path.dirname(__file__)

       # cherrypy.cherry.session['filUpload'] = filUpload
        data_name = filUpload.filename
        upload_path = path + '/static/img/temp/' + filUpload.filename

        size = 0
        all_data = bytearray()
        while True:
            data = filUpload.file.read(8192)
            all_data += data
            if not data:
                break
            size += len(data)
        
        #Se guarda la imagen temporalmente
        saved_file=open(upload_path, 'wb') 
        saved_file.write(all_data) 
        saved_file.close()

        #Se hace la deteccion para verificar si la foto sirve
        try:
            img = cv2.imread(upload_path)
            procesado = p.procesarImagen(img)
            d.deteccionFacialImg(data_name,procesado)
            
            mensaje = "La foto fue guardada con exito"
            cv2.imwrite(path + '/static/img/operadores/'+data_name,img)
            os.remove(upload_path)
        except:
            mensaje = "Debe subir una foto clara tipo carnet para poder ser procesada"
            os.remove(upload_path)
        
        
        for i,c in enumerate(os.listdir(os.path.dirname(path + '/static/img/operadores/'))):
            imagenes.append(c)
        tmpl = env.get_template('index.html')
        return tmpl.render(mensaje=mensaje,imagenes=imagenes)
Пример #4
0
def run():
    """Es la clase principal en el cual se sigue la secuencia del procesamiento"""
    a = Alarma()
    """Al inicializar genera un sonido inidicado queel dispositivo esa funcionando
    sin contratiempos"""
    a.inicio()

    #Crear Red Neuronal
    red1 = rn.crearRN()
    red2 = rn.crearRN()
    red3 = rn.crearRN()

    #Se verifica si el archivo xml que contiene la red neuronal entrenada existe
    path = os.path.dirname(__file__)

    if os.path.isfile('rna_somnolencia.xml'):
        red_somnolencia = NetworkReader.readFrom('rna_somnolencia.xml')
    else:
        print "No existe la red neuronal solicitada"

    if os.path.isfile('rna_atento.xml'):
        red_atento = NetworkReader.readFrom('rna_atento.xml')
    else:
        print "No existe la red neuronal solicitada"

    if os.path.isfile('rna_operador.xml'):
        red_operador = NetworkReader.readFrom('rna_operador.xml')
    else:
        print "No existe la red neuronal solicitada"

    #Se la camara con la que se va a trabajar
    #try:
    #    camara = v.capturarVideo()
    #except:
    #    print "no camara",sys.exc_info()[0],sys.exc_info()[1]
    #    a.noCamara()

    camara = cv2.VideoCapture(0)
    #camara.set(15,8.0)
    camara.set(cv2.cv.CV_CAP_PROP_BRIGHTNESS, 160)
    camara.set(cv2.cv.CV_CAP_PROP_EXPOSURE, 20.0)
    time.sleep(3)
    while True:
        Somnolencia = 0.00001
        Atencion = 0.00001
        Operador = 0.00001
        #print "leyendo camara"
        is_sucessfully_read, img = camara.read()

        # is_sucessfuly_read retorna falso cuando no puede apturar de la camara
        if (is_sucessfully_read):
            cv2.imshow("Camera Feed", img)
        else:
            print "No se pudo detectar entrada de video desde %s. Saliendo..." % capture
            break

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

        #print "procesando imagen"
        frame = img
        #    #Procesar imagenes del video
        improcesada = pi.procesarImagen(frame)
        cara = d.deteccionFacial(improcesada)
        try:
            if not cara:
                print "No hay operador frente el Monitor"
                a.ajeno()
        except ValueError:
            #print "procesando somno"
            Somnolencia = rn.estimularRN(red_somnolencia, cara.flatten())
            #print "procesando atencion"
            Atencion = rn.estimularRN(red_atento, cara.flatten())
            #print "procesando operador"
            Operador = rn.estimularRN(red_operador, cara.flatten())
            print "Somnolencia: %s  Atencion: %s  Operador:%s" % (float(
                Somnolencia[0]), float(Atencion[0]), float(Operador[0]))
            if float(Operador[0]) < 5:
                print "Estado de la alarma: Persona no reconocida"
                a.ajeno()
            if float(Atencion[0]) < 5:
                print "Estado de la alarma: Distraido"
                a.distraido()
            if float(Somnolencia[0]) < 9.82:
                print "Estado de la alarma: Somnoliento"
                a.somnoliento()
            # try:
            #     Somnolencia = rn.estimularRN(red_somnolencia,cara.flatten())
            #     Atencion = rn.estimularRN(red_atento,cara.flatten())
            #     Operador = rn.estimularRN(red_operador,cara.flatten())

            # except:
            #     print "Nadie frente el Monitor"
            # Colocar junto a la linea de arriba para ver codigo de error ,sys.exc_info()[0],sys.exc_info()[1]
        #time.sleep(2)
    cv2.destroyAllWindows()
    camara.release()
Пример #5
0
def main():
    """Es la clase principal en el cual se sigue la secuencia del procesamiento"""

    a = Alarma()
    """Al inicializar genera un sonido inidicado queel dispositivo esa funcionando
    sin contratiempos"""
    a.inicio()

    #Crear Red Neuronal
    red1 = rn.crearRN()
    red2 = rn.crearRN()

    #Se verifica si el archivo xml que contiene la red neuronal entrenada existe
    path = os.path.dirname(__file__)

    if os.path.isfile(path + '/rna_somnolencia.xml'):
        red_somnolencia = NetworkReader.readFrom('rna_somnolencia.xml')
    else:
        e.entrenarSomnolencia(red1)
        red_somnolencia = NetworkReader.readFrom('rna_somnolencia.xml')

    if os.path.isfile(path + '/rna_atento.xml'):
        red_atento = NetworkReader.readFrom('rna_atento.xml')
    else:
        e.entrenarAtento(red2)
        red_atento = NetworkReader.readFrom('rna_atento.xml')

    #Se la camara con la que se va a trabajar
    try:
        camara = v.capturarVideo()
    except:
        a.noCamara()


    while True:
        Somnolencia = 0.00001
        Atencion = 0.00001
        #Obtener Video
        val, frame = v.obtenerVideo(camara)

        #Procesar imagenes del video
        improcesada = pi.procesarImagen(frame)


        """Se detecta la cara del video, luego se activa las redes neuronales para detectar
           los estados de somnolencia y atencion en el conductor"""

        cara = d.deteccionFacial(improcesada)
        if cara == None:
            """Si el sistema no encuentra ninguna cara debera generar una notificacion de sonido
               para avisar que hay algun problema"""
            #time.sleep(15)
            #a.deteccionNula()
        else:

            Somnolencia = rn.estimularRN(red_somnolencia,cara.flatten())
            Atencion = rn.estimularRN(red_atento,cara.flatten())

            """Se ingresan los valores obtenidos al bloque difusor el cual generara las
               alarmas en los casos que convengan."""
            estado = a.motorDifuso(Somnolencia,Atencion)
            print "Estado de la alarma", estado
            a.alertar(estado)