Estoy tratando de detectar el área de atención visual en una imagen determinada y recortar la imagen en esa área. Por ejemplo, dada una imagen de cualquier tamaño y un rectángulo de, digamos, LxW dimensión como entrada, me gustaría recortar la imagen en el área de atención visual más importante. Estoy buscando un enfoque de vanguardia para eso.
¿Tenemos alguna herramienta o SDK para implementar eso? Cualquier pieza de código o algoritmo realmente ayudaría.
Respuestas:
Puede buscar los siguientes títulos en papel:
Puede codificar en Python usando el marco Pytorch.
fuente
La "atención" en la red neuronal (visual) es el área de la imagen donde la red puede encontrar la mayor cantidad de características para clasificarla con gran confianza. Según su descripción, está hablando de "atención suave".
¿Tenemos alguna herramienta o SDK para implementar eso? No creo que haya SDK listos para usar disponibles. Es mucho mejor entrenar un modelo en su conjunto de datos con atención. Una vez que tenga listo su modelo base, es fácil agregarle un mecanismo de atención. Le sugiero que consulte https://arxiv.org/pdf/1502.03044.pdf .
fuente
Para que una computadora detecte y proporcione el cuadro delimitador o un círculo alrededor de un área de atención visual en una imagen, se debe determinar la base de la atención. Luego, se puede seleccionar el método para hacer que el sistema informático tome decisiones basadas en esa base. Lo primero es lo primero.
¿Es una cara, un cuerpo o un personaje del juego el que debe ser objeto de interés? ¿Será el objeto más dinámico en el marco en términos de movimiento? Si es una persona, ¿es siempre la misma persona? En cualquier caso, ¿su cara estará expuesta al ángulo de la cámara? ¿Solo hay tomas fijas, o las imágenes serán cuadros en una película?
Una vez que sepa cómo USTED distinguiría el objeto que requiere atención de otros objetos y antecedentes, puede comenzar a ver cómo una computadora podría simular ese reconocimiento. Al entrenar una red profunda que involucra núcleos de convolución (llamada CNN o red neuronal convolucional) y posiblemente células de memoria a largo plazo (LSTM), hay etapas para el reconocimiento.
Por lo general, los bordes de las cosas se detectan primero. En las películas, el movimiento de los bordes se rastrea como características de la imagen. Los elementos en la imagen que identifican qué tipo de objeto son los objetos es el segundo. Por ejemplo, un juguete podría detectarse por la forma en que el plástico refleja la luz y los tipos y formas de color comunes a los juguetes. Una cara puede reconocerse primero identificando ojos, nariz, boca, mentón y oídos.
Después de identificar las partes, se pueden identificar objetos completos a través de otra etapa de extracción de características. Los sistemas de visión siguen los mismos principios básicos de reconocimiento que utiliza nuestro sistema visual humano.
Hay muchos marcos y bibliotecas para ayudar con estas tareas, pero para usarlos, es importante obtener una imagen general del proceso y aclarar qué es lo que diferenciará los objetos importantes de otros objetos que pueden ser similares o completamente diferente para que la atención pueda enfocarse de la manera que desee.
Una vez que tengas(hmin,vmin);(hmax,vmax) , las coordenadas de las dos esquinas de su operación de recorte, que sería el objetivo de su entrenamiento de red, entonces cualquier biblioteca de manipulación de imágenes podría manejar el recorte.
Ese es el estado del arte. No hay un SDK de alto nivel que le permita a la computadora ordenarle a la computadora que encuentre el elemento más importante en el marco sin ninguna aclaración de lo que se entiende por eso y las operaciones de capacitación para enseñarle al software a encontrar lo que ha decidido que es importante según algunos criterios No todavía, de todos modos.
fuente