entrenar opencv _ c o p l e c.pdf

Upload: gregoriotororivera

Post on 02-Jun-2018

239 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    1/14

    Comunidad de Programadores de Software Libre del Ecuador

    Enviado por palichis en Mi, 08/04/2010 - 22:30

    Como veo que Tonny esta interesado en opencv.. les traigo ahora los pasos para entrenar la red

    neuronal para el reconocimiento de patrones, ahora ya podemos entrenarlo para que reconozca lo

    que queramos

    Cuando se instala la librera Opencv se puede jugar con algunos ejemplos bsicos para detectar rostro, boca, ojos,

    nariz. Para ello se utiliza unos archivos *.xml de muestra que trae OpenCV.

    Pero que hay de generar nuestros propios archivos para reconocimientos de objetos?

    Proceso

    El proceso completo lleva una serie de 4 pasos

    1 Adquisicin de imagenes

    2 Crear muestra

    3 Entrenamiento

    4 Pruebas

    Lo primero que debemos hacer es generar una estructura de directorio para poder trabajar:

    training

    data

    cascade

    negativas

    positivas

    1.Adquisicin de imgenes:

    negativas: las denominadas imgenes negativas son cualquier grupo de imgenes en las cuales no aparece el

    objeto sobre el cual queremos generar el entrenamiento.

    Para estas imgenes tambin hay que generar un archivo (negativas.txt) que sirve de indice para las etapas

    posteriores, con la siguiente estructura:

    negativas/img1.jpg

    nar opencv | C O P L E C http://www.coplec.org/2010/08/05/entrena

    4 29-11-20

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    2/14

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    3/14

    -mode ALL

    -data: directorio de salida para la generacin del entrenamiento.

    -vec: archivo con muestras generado en la etapa anterior.

    -bg: archivo indice con las imgenes negativas.

    -nstages: nmero de etapas de entrenamiento. Es directamente proporcional a la calidad del clasificador a generar.

    -nsplit: debilidad del clasificador.

    -minhitrate: mnimo rango de cada etapa.-maxfalsealarm: determina el rango mximo de falsas alarmas admitidas para cada etapa.

    -npos: numero de imgenes positivas indexadas.

    -nneg: numero de imgenes negativas indexadas.

    -w: ancho.

    -h: alto.

    -mem: memoria a utilizar en el proceso.

    4.Pruebas:

    como vemos en la imagen capturada lo he entrenado para que detecte las placas de los vehculos y lo saco en una

    ventana nueva

    oment rios

    Wow impresionante palichis(/comment/570#comment-570)Enlace permanente(/comment/570#comment-570) Enviado por Tonny en Jue, 08/05/2010 - 21:26

    Wow impresionante palichis los tutoriales estn excelentes sera mejor moverlos al libro de coplec

    que cheveres cosas que se pueden hacer con sw libre

    as q tenga tiempo sigo jugando con estas librerias, es chevere cuando mas personas ponen mas contenido en el

    sitio.

    Saludos.

    (http://www.fsf.org/resources/formats/playogg)

    Tienes el cdigo en python ?(/comment/581#comment-581)Enlace permanente(/comment/581#comment-581) Enviado por Tonny en Dom, 08/29/2010 - 16:04

    nar opencv | C O P L E C http://www.coplec.org/2010/08/05/entrena

    4 29-11-20

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    4/14

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    5/14

    Esta excelente este post gracias palichis por favor tu debes tener ya listo el xml sera que me podrias ayudar

    con eso por favor... Y bueno de paso como veo que andas empapado del tema consultarte algunas cosas...

    Gracias, saludos

    Justo lo que buscaba(/comment/856#comment-856)Enlace permanente(/comment/856#comment-856) Enviado por slawert en Vie, 10/15/2010 - 11:37

    Hola.

    Estoy haciendo un reconocedor de seales de trfico. Cuntas imgenes positivas y negativas crees que

    necesitara por lo menos ? COnoces alguna base de datos o algun fichero xml que las contengan ya? Un saludo

    y muchas gracias.

    Saludos slawer, no entiendo(/comment/857#comment-857)Enlace permanente(/comment/857#comment-857) Enviado por palichis en Mar, 10/19/2010 - 09:12

    Saludos slawer, no entiendo muy bien lo que necesitas.. si puedes describir un poco mejor

    tu proyecto, para poder ayudarte....

    ahora si hablas de seales(/comment/858#comment-858)Enlace permanente(/comment/858#comment-858) Enviado por palichis en Mar, 10/19/2010 - 09:24

    ahora si hablas de seales quiere decir que son varias, recuerda que el entrenamiento es parareconocer ciertos patrones, si bien las placas no son todas iguales, tienen caractersticas

    similares, tienen 3 letras son de la misma tipografa, se le entrena para reconocimiento de 3 o cuatro nmeros

    etc.

    Si entiendo bien tu quieres ver las seales de transito, como "pare" "no estacionar" "ceda el paso" etc. nota que

    tienen primero distinta forma, segundo el contenido al se amplio entonces los patrones no te van a coincidir.

    Para esto debes tener un entrenamiento por separado de las N seales de transito.

    Otra opcin es usar un reconocimiento o una comparacin con imgenes... algo como... http://coplec.org

    /?q=2010/08/06/buscar-un-objeto-dentro-de-una-escena(http://coplec.org/?q=2010/08/06/buscar-un-objeto-dentro-

    nar opencv | C O P L E C http://www.coplec.org/2010/08/05/entrena

    4 29-11-20

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    6/14

    de-una-escena) , pero en este caso tambin deberas hacer N comparaciones, segn las seales.

    Cualquier novedad nos escribes

    saludos

    Hablo de seales :)(/comment/861#comment-861)Enlace permanente(/comment/861#comment-861) Enviado por slawert en Lun, 10/25/2010 - 12:31

    Hola y gracias por contestar tan rpido.

    Realmente no quiero comparar con N imgenes, supongo que eso har que el vaya todo demasiado lento.

    Me interesa algo como lo de las matriculas, darle ejemplos y que el programa se las arregle solo. Debera

    separar, por ejemplo, las seales triangulares de las redondas en dos tipos (2 xml)?No hara, tambin, que

    todo fuese muy lento? Mi intencin era realizar un nico xml.

    un saludo y gracias.

    Hola(/comment/867#comment-867)Enlace permanente(/comment/867#comment-867) Enviado por palichis en Vie, 10/29/2010 -

    08:50

    Pues la verdad si tendras que realizar algunos xml para que te reconozca por separado

    las seales, ya que como deca son diferentes, cada una tiene particularidades distintas comenzando

    desde la forma, una solucin para que el reconocimiento sea rpido es escalar la imagen obtenida a la

    mitas o menos..

    O tal vez realizar un entrenamiento de toda la seal, es decir desde el poste al raz del suelo hasta la

    parte superior, pero ah tendrs varios falsos positivos de letreros que no sean seales de transito.. es

    una posible solucin.. se tendra que probar para ver la factibilidad de implementacin de este tipo

    entrenamiento....

    Cualquier duda o si pones en practica el entrenamiento de esta ultima idea nos comentas

    saludos

    nar opencv | C O P L E C http://www.coplec.org/2010/08/05/entrena

    4 29-11-20

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    7/14

    Hola(/comment/868#comment-868)Enlace permanente(/comment/868#comment-868) Enviado por slawert en Vie, 10/29/2010 - 11:25

    Y una vez ms gracias por contestar.

    He probado lo que me sugeriste anteriormente y funciona, el problema que tengo ahora es que solopuedo usar un fichero xml cada vez, por ejemplo, tengo un xml de seales triangulares y otro de

    seales redondas. Mi pregunta es la siguiente: Puedo usarlos a la vez, es decir, puedo sobre el

    mismo video capturar a la vez las seales triangulares y las redondas?o opencv me restringe a solo

    un xml?

    Espero haberme explicado bien.

    Un saludo y Gracias.

    A ver,.. lo que se tendra(/comment/869#comment-869)Enlace permanente(/comment/869#comment-869) Enviado por palichis en Dom, 10/31/2010 - 12:00

    A ver,.. lo que se tendra que hacer en este caso hacer comparaciones, si frame capturado y

    primer xml tienen reconocimiento entonces sigue la secuencia, caso contrario mandas al otro

    reconocimiento

    redondas = cv.HaarDetectObjects(small_img, cascadered, cv.CreateMemStorage(0),haar_scale, min_neighbors,

    haar_flags, min_size)

    if redonas:

    print redondas

    elif:

    trinangulares = cv.HaarDetectObjects(small_img, cascadetri, cv.CreateMemStorage(0),haar_scale, min_neighbors,

    haar_flags, min_size)

    if triangulares:

    print triangulares

    elifexagonales = cv.HaarDetectObjects(small_img, cascade, cv.CreateMemStorage(0), haar_scale, min_neighbors,

    haar_flags, min_size)

    if exagonales;

    print exagonales

    y as con todos los xml que tengas... la verdad no te permite usar mas de un xml por funcin

    saludos

    nar opencv | C O P L E C http://www.coplec.org/2010/08/05/entrena

    4 29-11-20

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    8/14

    Gracias(/comment/870#comment-870)Enlace permanente(/comment/870#comment-870) Enviado por slawert en Lun, 11/01/2010 - 15:24

    Muchas gracias por todo.

    Creo que ya tengo toda la informacin que necesito. Muchas gracias por todo. Y felicidades por los

    tutoriales, estn muy bien.

    Un saludo y gracias.

    Pregunta(/comment/872#comment-872)Enlace permanente(/comment/872#comment-872) Enviado por sramirez en Mar, 11/09/2010 - 09:56

    Me parece muy bueno lo que has publicado, he trabajado con reconocimientos de rostros pero no me imaginaba

    que se podia hacer un entrenamiento para cualquier objeto, pero me guatara que me aclares algo, las imagenes

    de muestra tanto positivas y negativas deben ser obtenidas en el campo donde se va aplicar el algoritmo de

    detencin o pueden ser adquiridas en otro lugar?

    Gracias.

    Saludos sramirez, pues las(/comment/873#comment-873)Enlace permanente(/comment/873#comment-873) Enviado por palichis en Mar, 11/09/2010 - 18:28

    Saludos sramirez, pues las imgenes pueden ser de cualquier lugar, incluso de cualquier

    perspectiva, es decir de lado, de frente, desde arriba de abajo, etc etc, las imgenes negativas

    pueden ser cualquier imagen, capturas de pantalla, fotos personales, tu galera de imgenes etc, siempre y

    cuando no est el objeto a reconocer en ninguna de ellas,

    nar opencv | C O P L E C http://www.coplec.org/2010/08/05/entrena

    4 29-11-20

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    9/14

    Gracias por la aclaracin,(/comment/874#comment-874)Enlace permanente(/comment/874#comment-874) Enviado por sramirez en Mi, 11/10/2010 - 08:57

    Gracias por la aclaracin, una pregunta ms, en las imagenes positivas de alguna forma es necesario especificar

    donde esta el objeto o algo por el estilo? Por ejemplo en la imagen de prueba que tienes en el foro fue necesario

    decir en que lugar estaba o slo bast con decirle que es una imagen positiva.

    Gracias.

    Aqu un documento como(/comment/877#comment-877)Enlace permanente(/comment/877#comment-877) Enviado por Tonny en Dom, 11/14/2010 - 15:29

    Aqu un documento como entrenar opencv no recuerdo de donde lo descargue pero puede servirte.

    http://www.coplec.org/files/training.odt(http://www.coplec.org/files/training.odt)

    (http://www.fsf.org/resources/formats/playogg)

    Pues si, el documento que te(/comment/880#comment-880)Enlace permanente(/comment/880#comment-880) Enviado por palichis en Lun, 11/15/2010 -

    10:34

    Pues si, el documento que te da tonny es similar a mi howto, ah tienes las coordenadas

    de la imagen 130 900 30 31 x y y tamao.

    Pero puedes cortar la imagen como te deca en el post anterior

    y as tener 0 0 32 31.. x y y tamao de la imagen, para evitarte estar controlando las coordenadas de la

    imagen

    saludos

    nar opencv | C O P L E C http://www.coplec.org/2010/08/05/entrena

    4 29-11-20

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    10/14

    Hola.. Pues si, si la imagen(/comment/879#comment-879)Enlace permanente(/comment/879#comment-879) Enviado por palichis en Lun, 11/15/2010 - 10:24

    Hola..

    Pues si, si la imagen contiene mas objetos debes especificar las coordenadas de la imagen.. o lo que io hago

    es cortar el espacio en donde se encuentra la imagen y pues las coordenadas serian 0 0 y el tamao de laimagen 100 200 por ejemplo. siempre deja un los colores de fondo, no borres nada que le tape o que este a

    lado de la imagen, esto sirve para mejorar el reconocimiento

    Camara IP(/comment/876#comment-876)Enlace permanente(/comment/876#comment-876) Enviado por norberto en Vie, 11/12/2010 - 13:41

    Buenas, recien estoy comenzando a utilizar opencv, y no encuentro la solucin para poder obtener imagenes

    desde una camara ip, podrias ayudarme o darme un consejo al respecto?

    Desde ya muchas gracias

    en que lenguaje estas(/comment/878#comment-878)Enlace permanente(/comment/878#comment-878) Enviado por Tonny en Dom, 11/14/2010 - 15:32

    en que lenguaje estas programando

    aqu hay un trozo en c

    Capt ur e * capt ur e = cvCr eat eFi l eCapt ur e( "ht t p: / / 172. 16. 0. 201" ) ; / / cr eat e a camer a

    (http://www.fsf.org/resources/formats/playogg)

    Dudas..(/comment/886#comment-886)Enlace permanente(/comment/886#comment-886) Enviado por eduarv2015 en Lun, 11/22/2010 - 14:53

    Hola que tal palichis, excelente post... En este momento me encuentro desarrollando un proyecto y estoy

    nar opencv | C O P L E C http://www.coplec.org/2010/08/05/entrena

    14 29-11-20

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    11/14

    empezando a familiarizarme con opencv pero no entiendo varias cosas.. Como se genera el xml? Cual seria el

    codigo a ejecutar? el mismos que se encuentra en la carpeta samples?? Muchas Gracias

    A ver... los pasos que hay(/comment/887#comment-887)Enlace permanente(/comment/887#comment-887) Enviado por palichis en Lun, 11/22/2010 - 15:27

    A ver... los pasos que hay que seguir estn al inicio... el entrenamiento te genera el xml.. los

    comandos son

    opencv-createsamples -info positivas.txt -vec data/muestra.vec -num 1500 -w 20 -h 20

    opencv-haartraining -data data/cascade -vec data/muestra.vec

    claro que primero tienes que seguir los pasos anteriores....

    el cdigo a generar?

    si te refieres al cdigo para usar el xml, pues este cdigo va a depender de lo que necesites que realice tu

    programa... si te sirven los que estn en samples, pues puedes usarlos

    Palichis, segn entiendo(/comment/889#comment-889)Enlace permanente(/comment/889#comment-889) Enviado por Tonny en Lun, 11/22/2010 - 22:36

    Palichis, segn entiendo recortaste las imgenes positivas, lo hiciste en lote o como lo hiciste o con que

    herramientas?

    saludos!!!

    (http://www.fsf.org/resources/formats/playogg)

    tonny con gimp una a una....(/comment/903#comment-903)Enlace permanente(/comment/903#comment-903) Enviado por palichis en Vie, 11/26/2010 - 22:54

    tonny con gimp una a una.... ufff fue un trabajo muy arduo :P

    nar opencv | C O P L E C http://www.coplec.org/2010/08/05/entrena

    14 29-11-20

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    12/14

    Hola Palichis!(/comment/938#comment-938)Enlace permanente(/comment/938#comment-938) Enviado por eduarv2015 en Lun, 01/10/2011 - 22:16

    Hola Palichis espero que todo bien... no se si recuerdas de que te escribi hace un tiempo acerca de un proyecto

    de reconocimiento...trate de hacerlo por el otro ejemplo de hallar el objeto en la imagen pero aunque resulta

    mas facil aplicarlo es mas complicado trabajar con el de una manera eficiente. Estoy intentando ahora con haar

    pero tengo unas dudas...

    Estoy utilizando mingw para compilar... sabes los comandos que me sirvan para entrenar la red?? o comogenerar los xml bajo windows?

    y debo hacer el reconocimiento de manera recursiva, pasandole una serie de imagenes... algun consejo de como

    hacer esto??

    Muchas Gracias palichis

    Muy buen post(/comment/939#comment-939)Enlace permanente(/comment/939#comment-939) Enviado por miguel en Lun, 01/17/2011 - 14:46

    Excelente ejemplo palichis... Una pregunta palichis cuantas imagenes utilizaste para este ejemplo? Cual piensas

    tu que seria el minimo necesario para una imagen sencilla que no cambie mucho por ejemplo una oreja o algo

    asi??

    gracias miguel... Pues use(/comment/940#comment-940)Enlace permanente(/comment/940#comment-940) Enviado por palichis en Sb, 01/22/2011 - 17:34

    gracias miguel...

    Pues use aprox 500 positivas y unas 1500 negativas, en el ejemplo tengo varios falsos

    positivos que se pueden corregir con un entrenamiento bien realizado...

    nar opencv | C O P L E C http://www.coplec.org/2010/08/05/entrena

    14 29-11-20

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    13/14

  • 8/11/2019 Entrenar opencv _ C O P L E C.pdf

    14/14

    detectar sonrisas(/comment/2475#comment-2475)Enlace permanente(/comment/2475#comment-2475) Enviado por ana en Vie, 11/25/2011 - 13:53

    porfavor de manera urgente necesito ayuda, mi tesis es acerca de detectar sonrisas hice el procesos de

    entrenamiento pero no m creo un .xml me creo carpetas con .txt dentro no se como ocuparlo y estoy a poko

    tiempo de entregarlo por favor ayudame

    Hola, ana(/comment/2476#comment-2476)Enlace permanente(/comment/2476#comment-2476) Enviado por palichis en Vie, 11/25/2011 - 16:05

    Hola, ana

    Es normal que te salga un montn de carpetas con txt, eso es parte del entrenamiento, y al final de todo el

    proceso las carpetas van a quedarse ah pero tambin se te generar el archivo xml que es la cascada con la

    informacin de tu entrenamiento, no cortes este entrenamiento en ningn momento porque el xml

    aparecer al final de todo el proceso.

    Te recuerdo que el entrenamiento se demorar dependiendo del nmero de imgenes positivas y negativas,

    pero igual mientras mas positivas tengas mejor resultados obtendrs

    Como entrenar una red neuronal en Opencv(/comment/2478#comment-2478)Enlace permanente(/comment/2478#comment-2478) Enviado por caprilu5 en Mi, 11/30/2011 - 17:39

    Hola a todos, soy nueva y la info que hay es buena, lo que pasa es que no se como generar los archivos .txt para

    las imagenes positiva y negativas, para el entrenamiento de la red, es decir no se cmo guardar las imagenes,

    me podrian ayudar en esto, es que estoy haciendo mi trabajo de grado y necesito entrenar un red neuronal con

    opencv. Gracias

    nar opencv | C O P L E C http://www.coplec.org/2010/08/05/entrena