¿Qué atributos debo usar al diseñar un algoritmo de aprendizaje automático para el reconocimiento de imágenes?

El atributo más importante es la elección o el diseño de sus funciones, que generalmente son el cuello de botella de la mayoría de los sistemas de visión por computadora. Es muy probable que un sistema con un método de aprendizaje simple pero con un conjunto de características rico y numeroso muy bien diseñado sea un sistema de vanguardia en términos de rendimiento.

El segundo atributo es la elección y el número de conjuntos de entrenamiento, generalmente necesita un número moderadamente grande de conjuntos de entrenamiento y deben ser representativos de las variaciones dentro de la clase de los datos que necesita clasificar. La tubería habitual para la clasificación de imágenes es la siguiente:

  • Para cada conjunto de entrenamiento en sus datos, debe extraer características basadas en bordes o gradientes a intervalos regulares, como el histograma de características de gradientes orientados. También puede diseñar el suyo si lo desea, pero también me gustan las características binarias como el DOT, ya que pueden funcionar bien para detectar contornos de manos.
  • Cree un libro de códigos de características con varios métodos de agrupación, es decir, agrupación aglomerativa o k-means.
  • Para cada conjunto de entrenamiento, cree una cuadrícula regular sobre el ejemplo de entrenamiento con tamaños de celda lo suficientemente grandes, cuente el número de características que se incluyen en cada celda o, en resumen, cree un histograma que resuma la distribución de características para cada conjunto de capacitación. Esto crea una representación de características robusta que está lista para ser alimentada a un clasificador hambriento. 🙂
  • Luego puede usar uno de los muchos algoritmos de aprendizaje simples como k – clasificador vecino más cercano, pero es posible que desee reducir los puntos de datos con el algoritmo vecino condensado más cercano (CNN) para un rendimiento rápido o máquina de vectores de soporte (SVM), etc.

Si no está interesado en la selección y el diseño de funciones, puede optar por las cosas difíciles, el aprendizaje profundo, especialmente la red neuronal convolucional. Lo bueno de estos algoritmos es que no tiene que diseñar características usted mismo, sino que necesita una cantidad extremadamente grande de datos de entrenamiento. A pesar de toda esa hambre de datos, todavía sufren de sobreajuste en su mayoría. Pero cuando puedes hacer que funcionen, es increíble ver Google Brain por ejemplo.

Espero que esto ayude.