Etiquetar. El eslabon mas debil.
Hola Lector! espero te encuentres bien.
En el mundo da la IA, una tarea "comun" es la actividad de etiquetado.
Pensandolo bien, en realidad deberia haberlo puesto subrayado, algo asi:
"En el mundo de IA, una tarea COMUN es la actividad de etiquetado". Ya que, es cierto que no tiene nada de comun!. En realidad es una actividad laboriosa, que no solo requiere de mucha concentracion y capacidad analitica humana, sino que tambien requiere de un despliegue enorme de creatividad, simplificacion y precision.
Espero que con lo dicho no te sientas frustrado y puedas darte cuenta que etiquetar es todo menos una tarea "comun", sin embargo a pesar de esta circunstancia. No logro consegir informacion sustanciosa y fundamental que me permita lograr mejorar el etiquetado. Al menos hasta la fecha. Pero estoy seguro de que voy a lograrlo!.
Entonces caminando al nucleo del tema en cuestion si queremos ETIQUETAR tenemos que seguir una serie de pasos fundamentales y necesarios a saber:
- Contar con una cantidad suficiente de datos para establecer caracteristicas. Por ejemplo si nuestra tarea implica identificar vehiculos, deberemos contar con suficientes datos (imagenes), que contengan vehiculos.
- Imagen a imagen o frame a frame en caso de ser un video, mediante la utilizacion de software dedicado, representar en la imagen mediante una serie de puntos el area de interes que la red luego debera tener en cuenta.
- Distribuir las imagenes y sus representaciones (etiquetas) en una estructura acorde a la red que queremos entrenar.
Identificar.
Segun IBM "...Requiere la identificación de datos sin procesar...", y me pregunto... Realmente entendera IBM que significa identificar?
Es una tarea mayuscula la de identificar.
Requiere que logres sin lugar a dudas asociar caracteristicas o elementos suficientes a un objeto. Que permita a cualquier persona, sea quien sea, y con conocimiento basico acerca de la tematica que represente el objeto de la tarea. Saber! que representan esas caracteristicas.
Imaginemos el caso de la figura anterior un "Felino". Cualquiera puede saber que se trata de un Felino pero alguien lo podria identificar con solo verlo? Es decir alguien podria decirme rapidamente esa foto es de un... por ejemplo "Tigre"?
Ahora si logran dimensionar que la palabra "identificar". No es solo un mero verbo?.
Bueno antes de seguir te quiero decir que el felino de arriba es un... abri y descubrilo! . Este felino, tiene caracteristicas que lo distinguen y diferencian del resto de felinos similares de su especie. Entonces, si logramos establecer esas caracteristicas de forma cierta, podemos decir que estariamos "identificandolo".
Etiquetar.
Existen diversas herramientas de codigo abierto para esta tarea en Imagenes por ejemplo tenemos dentro de las mas conocidas a:
- LabelImg - escrita en python de facil uso e implementacion, el repositorio github donde podes descargarlo es LabelImg donde ademas, vas a ver como se utiliza de forma rapida.
- voTT - de Microsoft, tambien de codigo abierto, con una interfaz distinta y con algunas funcionalidades mas que LabelImg. El repositorio donde podes descargarla es voTT de igual manera que la anterior podes ver el README y facilmente usarla.
Hay mas! claro, pero con estas dos es mas que suficiente para empezar.
Por cierto y antes de que se me pase. Si decidis usar LabelImg, puede que tengas algunos "problemas" al usarlo. Como por ejemplo, que intentes etiquetar algo y de repente se te cierre la aplicacion.
Si ese es tu caso y te sale algo asi como error en Qt5 porque no logra convertir de flotante a entero. Vas a tener que hacer algunos cambios en tu libreria libs de python, especificamente en el script canvas.py
# En la linea 526, por defecto tiene esto:
p.drawRect(left_top.x(), left_top.y(), rect_width), int(rect_height)
# Tenes que cambiarlo por esto:
p.drawRect(int(left_top.x()), int(left_top.y()), int(rect_width), int(rect_height))
# En la linea 530, por defecto tiene esto:
p.drawLine( self.prev_point.x(), 0, self.prev_point.x(), self.pixmap.height())
# Tenes que cambiarlo por esto:
p.drawLine( int(self.prev_point.x()), 0, int(self.prev_point.x()), int(self.pixmap.height()))
# En la linea 531, por defecto tiene esto:
p.drawLine( 0, self.prev_point.y(), self.pixmap.width(), self.prev_point.y())
# Tenes que cambiarlo por esto:
p.drawLine( 0, int(self.prev_point.y()), int(self.pixmap.width()), int(self.prev_point.y()))
Ademas vas a tener que buscar la libreria LabelImg y en el script labelImg.py, vas a hacer los siguientes cambios:
# En la linea 965 por defecto tiene esto:
bar.setValue(bar.value() + bar.singleStep() * units)
# Cambialo por esto:
bar.setValue(int(bar.value() + bar.singleStep() * units))
Con esos cambios deberias poder hacer uso de LabelImg sin problemas y ya solo quedaria dar inicio a la tarea de etiquetado para lo cual te recomiendo que antes te prepares unos buenos termos de mate o de cafe en su defecto y un buen almohadon para la silla. 🤣
Metodos.
En cuanto a la forma de llevar adelante la tarea de etiquetado puedo decirte que muchos la categorizan, como actividad de "preprocesamiento". Y yo no podria estar mas en desacuerdo!, ya que al usar esa palabra de forma sencilla, da a entender al usuario que dicha actividad es menor y no requiere mas atencion de la necesaria.
Personalmente recomiendo siempre hacer las cosas por uno mismo peroo... cuando la tarea es mayuscula, lo mejor es conseguir capital humano de ayuda. Y justo ahi es cuando nos topamos con la gran problematica de todos los investigadores, el capital humano necesario para el desarrollo en investigacion.
Hay sitios que ofrecen ayudarte con la tarea por un determinado precio claro, como:
- Turk de Amazon, que permite contratar a una comunidad global para realizar tareas de etiquetado manual de datos.
- Appen, para proyectos que involucran texto, imágenes, audio y video. Igual que turk mediante colaboradores.
Y tambien hay otros mas claro! pero la idea no es promocionarlos sino, que veas que los servicios de terceros, primero se pagan y segundo requieren de otros seres humanos. Por lo tanto podriamos usar la referencia famosa de los jueguitos en linea que para lograr el objetivo de tu investigacion "PAY TO WIN".
Ademas claro! de la complicacion que tus datos seran distribuidos por el mundo a quien sabe que personas, con la posibilidad de que los mismos sean utilizados por terceros.
Hardware.
Creo que este es el punto mas amigable por llamarlo de alguna manera. Ya que con cualquier minimo hardware podes llevar adelante una tarea de etiquetado. Teniendo en cuenta claro que vas a necesitar de MUCHO espacio de almacenamiento.
Si la tarea es mayuscula pero no como esas tareas de las que solicita Elon Musk a su gente. Entonces con unos cuantos discos externos o internos de almacenamiento podes tener varios terabytes de almacenaje.
Hasta aca llegamos por hoy!
Espero que te sirva y te haya agradado la lectura. Nos vemos en la proxima y ya sabes no dudes en mandar un mail si necesitas ayuda.