Este es un campo enorme y en crecimiento, y mi experiencia solo cubre un área pequeña, pero lo intentaré de todos modos. Primero, deberá decidir qué tipo de contenido utilizará para la recuperación. ¿Le interesan las funciones de imagen completa o la coincidencia basada en partes más pequeñas de imágenes? Por ejemplo, podría hacer un histograma de colores (número de píxeles de cada color), cubriendo toda la imagen, y buscar en su base de datos imágenes con histogramas coincidentes. Esa sería una característica a gran escala. Otras características a gran escala pueden incluir cuántos “bordes” hay y en qué orientación, como vertical, horizontal o qué ángulo. Su histograma podría contar la cantidad de píxeles que forman parte de cada dirección de borde.
En cuanto a las características a pequeña escala, los descriptores basados en puntos clave son populares para capturar pequeños detalles de imágenes. Un punto clave suele ser un píxel de “esquina”, o posiblemente el centro de un blob. Estos descriptores se recopilan a partir de una imagen, y los que coinciden se buscan en su base de datos. Las imágenes de la base de datos con más coincidencias sirven como resultado. Ver SIFT, SURF, RÁPIDO, BREVE, ORB, etc.
En PicLookup.com, utilizamos OpenCV para el procesamiento de imágenes y MySQL para nuestra base de datos. Nuestra técnica es similar al enfoque de punto clave. Uno podría llamar a esto “sintáctico”, en oposición a “semántico”. Un enfoque semántico va más allá, tratando de identificar objetos en la imagen para que pueda devolver imágenes de objetos similares, en lugar de imágenes con pequeñas características coincidentes.
- ¿Cómo es usar Theano en Python?
- ¿Es posible determinar cuánto 'aprende' una red neuronal desde un punto de datos dado en el conjunto de entrenamiento?
- ¿Cuál es el mejor software para implementar algoritmos de aprendizaje automático / minería de datos a gran escala?
- ¿Cuál es el mejor enfoque para abordar la compensación de exploración / explotación en los sistemas de recomendación?
- Estoy muy interesado en el aprendizaje profundo. ¿Cómo puedo ser contratado?
Las SVM y las redes neuronales parecen ser muy exitosas al combinar la información de bajo nivel (píxeles, características de puntos clave) con entrenamiento de alto nivel para lograr el reconocimiento de objetos. Por ejemplo, deje que la red aprenda “perro” mostrándole muchas fotos de perros. La red aprende las características clave y ensambla conexiones entre ellas en capas cada vez más altas (Deep Learning).
Para obtener una descripción general de alto nivel y ejemplos detallados con los que experimentar, considere mirar (PyImageSearch – Sea increíble al aprender OpenCV, Python y visión por computadora). La información que proporciona Adrian puede ahorrarle mucho tiempo y esfuerzo. Hth.