Exemplo n.º 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')
Exemplo n.º 2
0
 def run(self):
     cara = d.deteccionFacial(self.imagen)
     if cara == None:
        """Si el sistema no encuentra ninguna cara debera generar una notificacion de sonido
           para avisar que hay algun problema"""
        self.alarma.deteccionNula()
     else:
         print "cara"
         self.resultado = rn.estimularRN(self.red,cara.flatten())
         return self.resultado
Exemplo n.º 3
0
 def run(self):
     cara = d.deteccionFacial(self.imagen)
     if cara == None:
         """Si el sistema no encuentra ninguna cara debera generar una notificacion de sonido
            para avisar que hay algun problema"""
         self.alarma.deteccionNula()
     else:
         print "cara"
         self.resultado = rn.estimularRN(self.red, cara.flatten())
         return self.resultado
Exemplo n.º 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()
Exemplo n.º 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)