Continuamos comprendiendo la magia moderna (visión artificial). La Parte 2 no significa que primero deba leer la Parte 1. La Parte 2 significa que ahora todo es serio: queremos entender todo el poder de las redes neuronales en la visión. Detección, seguimiento, segmentación, evaluación de la postura, reconocimiento de acciones ... ¡Las arquitecturas más modernas y modernas, cientos de capas y docenas de ideas brillantes ya te están esperando!

En la última serie
Permítanme recordarles que en la
primera parte nos familiarizamos con las redes neuronales convolucionales y su visualización, así como con las tareas de clasificar imágenes y construir sus representaciones efectivas (incrustaciones). Incluso discutimos las tareas de reconocimiento facial y reidentificación de personas.
Incluso en el artículo anterior hablamos sobre diferentes tipos de arquitecturas (sí, las mismas tabletas
que hice un mes ), y aquí Google no perdió el tiempo: lanzaron otra arquitectura
EfficientNet extremadamente rápida y precisa. Lo crearon utilizando el
NAS y el procedimiento especial de escalado compuesto. Mira el
artículo , vale la pena.
Mientras tanto, algunos investigadores
animan caras y
buscan besos en películas , nos ocuparemos de problemas más acuciantes.
Aquí la gente dice: "reconocimiento de imagen". Pero, ¿qué es el "reconocimiento"? ¿Qué es "comprensión (escena)"? En mi opinión, las respuestas a estas preguntas dependen de qué es exactamente lo que queremos "reconocer" y qué es exactamente lo que queremos "entender". Si estamos construyendo Inteligencia Artificial, que extraerá información sobre el mundo del flujo visual de manera tan eficiente (o incluso mejor) como las personas, entonces debemos pasar de las tareas a las necesidades. Históricamente, el moderno "reconocimiento" y "comprensión de la escena" se puede dividir en varias tareas específicas: clasificación, detección, seguimiento, evaluación de posturas y puntos faciales, segmentación, reconocimiento de acciones en el video y descripción de la imagen en el texto. Este artículo se centrará en las dos primeras tareas de la lista (ups, spoiler de la tercera parte), por lo que el plan actual es este:
- Encuéntrame si puedes: detección de objetos
- Detección de rostro: no atrapado - no es un ladrón
- Muchas letras: detección de texto (y reconocimiento)
- Video y seguimiento: en una sola transmisión
¡A rockear, superestrellas!
Encuéntrame si puedes: detección de objetos
Entonces, la tarea parece simple: se proporciona una imagen, debe encontrar objetos de clases predefinidas (persona, libro, manzana, basset-griffon artesiano-normando, etc.). Para resolver este problema con la ayuda de redes neuronales, lo planteamos en términos de tensores y aprendizaje automático.
Recordamos que una imagen en color es un tensor (H, W, 3) (si no lo recordamos, es decir,
parte 1 ). Anteriormente, solo sabíamos cómo clasificar la imagen completa, pero ahora nuestro objetivo es predecir las posiciones de los objetos de interés (coordenadas de píxeles) en la imagen y sus clases.
La idea clave aquí es resolver dos problemas a la vez: clasificación y regresión. Usamos una red neuronal para hacer retroceder las coordenadas y clasificar los objetos dentro de ellas.
Clasificación? Regresión?Permíteme recordarte que estamos hablando de las tareas del aprendizaje automático. En el problema de
clasificación ,
las etiquetas de
clase actúan como la calidad de las etiquetas verdaderas para los objetos, y predecimos la clase del objeto. En el problema de
regresión ,
los números reales actúan como
números reales , y predecimos el número (por ejemplo: peso, altura, salario, número de personajes que mueren en la próxima serie del Juego de Tronos ...). En más detalle: usted es
bienvenido a la tercera conferencia de DLSchool (FPMI MIPT) .
Pero las coordenadas del objeto, en general, pueden formalizarse de diferentes maneras, en DL hay tres formas principales:
detección (
cajas de objetos),
evaluación de la postura (puntos clave de los objetos) y
segmentación ("máscaras" de los objetos). Ahora
hablemos de predecir con precisión los
cuadros delimitadores , los puntos y la segmentación estarán más adelante en el texto.
Básicamente, los conjuntos de datos de detección están marcados con cuadros en el formato: "coordenadas de las esquinas superior izquierda e inferior derecha para cada objeto en cada imagen" (este formato también se denomina
arriba a la izquierda, abajo a la derecha ), y la mayoría de los enfoques de redes neuronales predicen estas coordenadas.
Sobre conjuntos de datos y métricas en el problema de detecciónDespués de configurar la tarea, es mejor ver qué datos están disponibles para la capacitación y qué métricas se utilizan para medir la calidad. De esto es de lo que hablo lentamente en la primera mitad de la
decimotercera conferencia de la Escuela de Aprendizaje Profundo (en x2.0 es lo máximo).
Antes de sumergirnos en los tipos de redes neuronales para la detección, pensemos juntos cómo resolver el problema de detectar cualquier cosa en las imágenes. Probablemente, si queremos encontrar un determinado objeto en la imagen, entonces sabemos aproximadamente cómo se ve y qué área debería ocupar en la imagen (aunque puede cambiar).
Inventar la detección desde ceroEl enfoque más simple e ingenuo sería simplemente hacer un algoritmo de "búsqueda de plantilla": dejar que la imagen sea de 100x100 píxeles, y estamos buscando un balón de fútbol. Que haya un patrón de bolas de 20x20 píxeles. Tome esta plantilla y la veremos como una convolución a lo largo de la imagen, contando la diferencia píxel por píxel. Así es como funciona la
coincidencia de plantillas (a menudo se usa algún tipo de correlación en lugar de la diferencia de píxel por píxel).
Si no hay una plantilla, pero hay un clasificador de red neuronal, entonces podemos hacer esto: iremos por una ventana de un tamaño fijo en la imagen y predeciremos la clase del área actual de la imagen. Luego, solo decimos que las regiones más probables de los objetos son aquellas en las que el clasificador respondió con confianza. Por lo tanto, podemos resolver el problema del hecho de que el objeto se ve diferente en apariencia diferente (ya que fue entrenado para clasificar en una muestra muy diversa).
Pero luego aparece un problema: los objetos en las imágenes tienen diferentes tamaños. El mismo balón de fútbol puede estar en toda la altura / anchura de la imagen, o puede estar lejos de la meta, tomando solo 10-20 píxeles de 1000. Me gustaría escribir el algoritmo de Fuerza Bruta: simplemente recorremos los tamaños de las ventanas. Supongamos que tenemos 100x200 píxeles, luego iremos a una ventana de 2x2, 2X3, 3x2, 2x4, 4x2, 3x3 ..., 3x4, 4x3 ... Creo que entiendes que el número de ventanas posibles será de 100 * 200, y cada una de las cuales pasaremos por la imagen , realizar operaciones de clasificación (100-W_window) * (200 - H_window), lo que lleva mucho tiempo. Me temo que no esperaremos hasta que dicho algoritmo funcione.
Por supuesto, puede elegir las ventanas más características según el objeto, pero esto también funcionará durante mucho tiempo, y si es rápido, es poco probable que sea exacto: en aplicaciones reales habrá una cantidad increíble de variaciones en el tamaño de los objetos en las imágenes.
Además, a veces me basaré en una
nueva revisión del área de detección a partir de enero de 2019 (las fotos también serán de ella). Esta es solo una lectura obligatoria si desea obtener rápidamente la visión más amplia posible de DL en la detección.
Uno de los primeros artículos sobre detección y localización usando CNN fue
Overfeat . Los autores afirman que primero utilizaron una red neuronal para la detección en ImageNet, reformulando el problema y cambiando la pérdida. El enfoque, por cierto, fue casi de extremo a extremo (a continuación se muestra el esquema de sobrecompresión).
La siguiente arquitectura importante fue la
Red neuronal convolucional basada en la
región (
RCNN ), inventada por investigadores de
FAIR en 2014. Su esencia es que primero predice muchas de las llamadas "regiones de interés" (RoI), dentro de las cuales potencialmente puede haber objetos (usando el algoritmo de búsqueda selectiva), y los clasifica y refina las coordenadas de los cuadros usando CNN.
Es cierto que tal canalización hizo que todo el sistema fuera lento, porque ejecutamos todas las regiones a través de la red neuronal (lo adelantamos miles de veces). Un año después, el mismo FAIR Ross Girshick actualizó RCNN a
Fast-RCNN . Aquí la idea era intercambiar la Búsqueda selectiva y la predicción de la red: primero, pasamos la imagen completa a través de una red neuronal pre-entrenada, y luego predecimos regiones de interés sobre el mapa de características emitido por la red troncal (por ejemplo, usando la misma Búsqueda selectiva, pero Hay
otros algoritmos ). Todavía era bastante lento, mucho más lento que el tiempo real (por ahora, suponemos que el tiempo real es inferior a 40 milisegundos por imagen).
La velocidad se vio afectada, sobre todo, no por CNN, sino por el algoritmo de generación de cajas en sí, por lo que se decidió reemplazarlo con una segunda red neuronal: la Red de Propuesta de Región (
RPN ), que se entrenará para predecir las regiones de interés de los objetos. Así es como
apareció Faster-RCNN (sí, obviamente no pensaron en el nombre durante mucho tiempo). Esquema:
Luego hubo otra mejora en la forma de
R-FCN , no hablaremos de ello en detalle, pero quiero mencionar a
Mask-RCNN . Mask-RCNN es único, la primera red neuronal que resuelve el
problema de la detección y la segmentación de instancias al mismo tiempo : predice las máscaras (siluetas) exactas de los objetos dentro de los cuadros delimitadores. Su idea es bastante simple: hay dos ramas: para la detección y la segmentación, y necesita capacitar a la red para ambas tareas a la vez. Lo principal es tener datos etiquetados. Mask-RCNN en sí es muy similar a Faster-RCNN: la columna vertebral es la misma, pero al final hay dos
"cabezas" (como se llaman a menudo las
últimas capas de la red neuronal) para dos tareas diferentes.
Estos fueron los llamados enfoques de
dos etapas (o
basados en la región ). Paralelamente a ellos, se desarrollaron análogos en la detección de DL: enfoques de una
etapa . Estos incluyen redes neuronales como: Detector de disparo único (SSD), Solo mira una vez (YOLO), Detector de objetos supervisados (DSOD), Red de bloqueo de campo receptivo (RFBNet) y muchos otros (consulte el mapa a continuación, desde
este repositorio )
Los enfoques de una etapa, a diferencia de las dos etapas, no utilizan un algoritmo separado para generar cuadros, sino que simplemente predicen varias coordenadas de cuadro para cada mapa de características producido por una red neuronal convolucional. YOLO actúa de manera similar, SSD es ligeramente diferente, pero solo hay una idea: una convolución 1x1 predice muchos números de los mapas de características recibidos en profundidad, sin embargo, acordamos de antemano qué número significa.


Por ejemplo, predecimos a partir de un mapa de características el tamaño de 13x13x256 es un mapa de características de 13x13x (4 * (5 + 80)) números, donde en profundidad predecimos 85 números para 4 cajas: los primeros 4 números en la secuencia son siempre las coordenadas de la caja, el 5to - confianza en el boxeo, y 80 números - las probabilidades de cada una de las clases (clasificación). Esto es necesario para luego enviar los números necesarios a las pérdidas necesarias y entrenar adecuadamente la red neuronal.
Quiero llamar la atención sobre el hecho de que la calidad del trabajo del detector depende de la calidad de la red neuronal para extraer características (es decir, una
red neuronal troncal ). Por lo general, este papel lo desempeña una de las arquitecturas, de la que hablé en un
artículo anterior (ResNet, SENet, etc.), pero a veces los autores presentan sus propias arquitecturas más óptimas (por ejemplo, Darknet-53 en YOLOv3) o modificaciones (por ejemplo,
Feature Pyramid Pooling (FPN)).
Una vez más, noto que entrenamos la red para la clasificación y la regresión al mismo tiempo. En la comunidad, esto se llama pérdida de tareas múltiples: la suma de las pérdidas para varias tareas (con algunos coeficientes) aparece en una pérdida.
Noticias con pérdida multitarea líderEn
Machines Can See 2019, uno de los oradores usó la pérdida de tareas múltiples para 7 tareas simultáneamente
, Carl . Resultó que algunas tareas se establecieron inicialmente como un contrapeso entre sí y se obtuvo un "conflicto", que impidió que la red aprendiera mejor que si estuviera entrenada para cada tarea por separado. Conclusión: si está utilizando la pérdida de tareas múltiples, asegúrese de que estas mismas tareas múltiples no entren en conflicto con la declaración (por ejemplo, predecir los límites de los objetos y su segmentación interna puede interferir entre sí, porque estas cosas pueden depender de diferentes signos dentro de la red). El autor evitó esto
agregando bloques separados de Exprimir y Excitar para cada tarea .
Recientemente, aparecieron artículos de 2019 en los que los autores declaran una relación velocidad / precisión aún mejor en la tarea de detección utilizando la
predicción de recuadro basada en puntos . Estoy hablando de los artículos
"Objetos como puntos" y
"CornerNet-Lite" .
ExtremeNet es una modificación de CornerNet. Parece que ahora se les puede llamar SOTA en la detección utilizando redes neuronales (pero esto no es exacto).
Si de repente mi explicación de los detectores todavía parecía caótica e incomprensible, en
nuestro video lo discuto lentamente. Quizás deberías verlo primero.
A continuación, he presentado tablas de redes neuronales en detección con enlaces al código y una breve descripción de los chips de cada red. Intenté recopilar solo aquellas redes que son realmente importantes para conocer (al menos sus ideas) para tener una buena idea sobre la detección de objetos hoy:
Detectores de redes neuronales (dos etapas) Detectores de redes neuronales (una etapa) Detectores de redes neuronales (varios) Detectores de redes neuronales (basados en puntos) Para comprender cómo se correlaciona la velocidad / calidad de cada arquitectura, puede consultar
esta revisión o su
versión más popular .
La arquitectura está bien, pero la detección es principalmente una tarea práctica. "No tengo cien redes, pero tengo al menos 1 en funcionamiento" - este es mi mensaje. Hay enlaces al código en la tabla anterior, pero personalmente, rara vez encuentro detectores de lanzamiento directamente desde los repositorios (al menos con el objetivo de un mayor despliegue en producción). Muy a menudo, se usa una biblioteca para esto, por ejemplo, la API de detección de objetos TensorFlow (consulte la
parte práctica de mi lección ) o una
biblioteca de investigadores de CUHK . Les traigo a su atención otra súper mesa (les gustan, ¿verdad?):
Bibliotecas para ejecutar modelos de detección A menudo necesita detectar un objeto de una sola clase, pero específico y altamente variable. Por ejemplo, para detectar todas las caras en la foto (para mayor verificación / conteo de personas), para detectar personas enteras (para reidentificación / conteo / seguimiento) o para detectar texto en la escena (para
OCR / traducción de palabras en la foto). En general, el enfoque de detección "ordinario" aquí funcionará hasta cierto punto, pero cada una de estas subtareas tiene sus propios trucos para mejorar la calidad.
Detección de rostro: no atrapado - no es un ladrón
Aquí aparece cierta especificidad, ya que las caras a menudo ocupan una parte bastante pequeña de la imagen. Además, las personas no siempre miran a la cámara, a menudo la cara solo es visible desde un lado. Uno de los primeros enfoques para el reconocimiento facial fue el famoso detector Viola-Jones basado en cascadas Haar, inventado en 2001.
Las redes neuronales
no estaban de moda entonces, todavía no tenían una visión tan fuerte, sin embargo, el buen enfoque hecho a mano hizo su trabajo. Se usaron activamente varios tipos de máscaras de filtro especiales, que ayudaron a extraer regiones faciales de la imagen y sus signos, y luego estos signos se enviaron al clasificador AdaBoost. Por cierto, este método realmente funciona bien y ahora, es lo suficientemente rápido y comienza
con OpenCV . La desventaja de este detector es que solo ve caras desplegadas frontalmente a la cámara. Uno solo tiene que darse la vuelta un poco y se viola la estabilidad de la detección.
Para casos tan complejos, puede usar
dlib . Esto es C ++, una biblioteca en la que se implementan muchos algoritmos de visión, incluso para la detección de rostros.
De los enfoques de redes neuronales en la detección de rostros, la
CNN en cascada multitarea (MTCNN) (
MatLab ,
TensorFlow ) es especialmente significativa. En general, ahora se usa activamente (en la misma
red ).
La idea de MTCNN es utilizar tres redes neuronales secuencialmente (por lo tanto, una
"cascada" ) para predecir la posición de una cara y sus puntos singulares. En este caso, hay exactamente 5 puntos especiales en la cara: el ojo izquierdo, el ojo derecho, el borde izquierdo de los labios, el borde derecho de los labios y la nariz. La primera red neuronal de la cascada (
P-Net ) se utiliza para generar regiones potenciales de la cara.
El segundo ( R-Net ) - para mejorar las coordenadas de los cuadros recibidos. La tercera red neuronal ( O-Net ) vuelve a retroceder las coordenadas de las cajas y, además, predice 5 puntos clave de la cara. Esta red es una tarea múltiple porque se resuelven tres tareas: regresión de puntos de cuadro, clasificación de cara / no cara para cada cuadro y regresión de puntos de cara. Además, MTCNN lo hace todo en tiempo real, es decir, requiere menos de 40 ms por imagen.¿Cómo, usted todavía no lee artículos con ArXiv?En este caso, te recomiendo que intentes leer el artículo original sobre MTCNN , si ya tienes experiencia en redes de convolución. Este artículo solo toma 5 páginas , pero establece toda la información que necesita para comprender el enfoque. Pruébalo, se apretará :) State-of-the-Art
Dual Shot Face Detector (DSFD) FaceBoxes . FaceBoxes CPU (!), DSFD ( 2019 ). DSFD , MTCNN, (
dilated convolutions ), . , dilated convolutions . DSFD (, ?).
,
, .
: ( )
. , , bounding box', ( ), . , , , recognition-,
.
bounding box', , ( ). , ,
EAST- .
EAST- , , :
- Text Score Map' ( )
, ( ), .
arxiv- :
( ) , :
TextBoxes++ (
Caffe )
SegLinks , EAST, , .
,
. — . , , , . ,
MORAN (
PyTorch )
ASTER (
TensorFlow ) .
- , : CNN RNN. , . MORAN': .
EAST', - , . , , .
, / .
Spatial Transformet Network (STN) , (, , ). / STN.
STN ,
( , )
PyTorch .
MORAN ( ) — ,
x y, , .
rectification , (
rectifier' ). :
Sin embargo, además de los enfoques para el reconocimiento de texto "modularmente" (red de detección -> red de reconocimiento), existe una arquitectura de extremo a extremo: la entrada es una imagen, y la salida es una detección y el texto se reconoce dentro de ellos. Y todo esto es una sola tubería que aprende ambas tareas a la vez. En esta dirección, existe el impresionante trabajo de
Spotting de texto orientado rápidamente con una red unificada ( FOTS ) ( código PyTorch ), donde los autores también señalan que el enfoque de extremo a extremo es dos veces más rápido que "detección + reconocimiento". A continuación se muestra el diagrama de la red neuronal FOTS, el bloque RoiRotate desempeña un papel especial, debido al cual es posible "emitir gradientes" desde la red para su reconocimiento en la red neuronal para su detección (esto es realmente más complicado de lo que parece)
Por cierto, cada año se
celebra la conferencia
ICDAR , a la que se
realizan varios concursos para el reconocimiento de texto en una variedad de imágenes.
Problemas actuales en la detección
En mi opinión, el principal problema en la detección ahora no es la calidad del modelo de detector, sino los datos: generalmente son largos y caros de marcar, especialmente si hay muchas clases que deben detectarse (pero por cierto, hay
un ejemplo de una solución para 500 clases). Por lo tanto,
muchos trabajos ahora se dedican a la generación de los datos más plausibles "sintéticamente" y a obtener un marcado "gratis". A continuación se muestra una imagen de
mi diploma de un artículo de Nvidia , que trata específicamente con la generación de datos sintéticos.
Pero aún así es genial que ahora podamos decir con certeza en qué parte de la imagen estar. Y si queremos, por ejemplo, calcular la cantidad de algo en el marco, entonces es suficiente para detectar esto y dar el número de cajas. En la detección de personas, YOLO ordinario también funciona bien, solo que lo principal es enviar una gran cantidad de datos. El mismo
Darkflow es adecuado, y la clase "humana" se encuentra en casi todos los principales conjuntos de datos de detección. Entonces, si queremos usar la cámara para contar la cantidad de personas que pasaron, por ejemplo, en un día, o la cantidad de productos que una persona tomó en una tienda, simplemente detectaremos y daremos la cantidad ...
Para Pero si vamos a detectar personas en cada imagen de la cámara, entonces podemos calcular su número en un cuadro y en dos, ya no, porque no podemos decir exactamente dónde está esa persona. Necesitamos un algoritmo que nos permita contar exactamente personas únicas en la transmisión de video. Puede ser un algoritmo de reidentificación, pero cuando se trata de video y detección, es un pecado no utilizar algoritmos de seguimiento.
Video y seguimiento: en una sola transmisión
Hasta ahora, solo hemos hablado de tareas en imágenes, pero lo más interesante sucede en el video. Para resolver el mismo reconocimiento de acciones, necesitamos usar no solo el llamado componente
espacial , sino también el
temporal , ya que el video es una secuencia de imágenes en el tiempo.
El seguimiento es un análogo de la detección de imágenes, pero para video. Es decir, queremos enseñarle a la red a predecir no el boxeo en la imagen, sino un tracklet en el tiempo (que es esencialmente una secuencia de cuadros). A continuación se muestra un ejemplo de una imagen que muestra las "colas": las pistas de estas personas en el video.
Pensemos cómo resolver el problema de seguimiento. Que haya un video, y sus marcos # 1 y # 2. Consideremos hasta ahora solo un objeto: rastreamos una bola. En el cuadro # 1, podemos usar un detector para detectarlo. En el segundo también podemos detectar una pelota, y si está allí sola, entonces todo está bien: decimos que el boxeo en el cuadro anterior es el boxeo de la misma bola que en el cuadro # 2. También puede continuar con los cuadros restantes, debajo del gif del
curso de visión
pyimagesearch .
Por cierto, para ahorrar tiempo, no podemos iniciar la red neuronal en el segundo cuadro, sino simplemente "cortar" la caja de la pelota desde el primer cuadro y buscar exactamente la misma
correlación en el segundo cuadro o píxel por píxel.
Los rastreadores de correlación utilizan este enfoque, se consideran simples y más o menos confiables si se trata de casos simples como "rastrear una pelota frente a la cámara en una habitación vacía". Esta tarea también se llama
Visual Object Tracking . A continuación se muestra
un ejemplo del trabajo del rastreador de correlación utilizando el ejemplo de una persona.
Sin embargo, si hay varias detecciones / personas, entonces debe poder hacer coincidir los cuadros del cuadro 1 y del cuadro 2. La primera idea que se me ocurre es tratar de hacer coincidir el cuadro con el que tiene el área de intersección más grande (
IoU ). Es cierto que en el caso de varias detecciones superpuestas, dicho rastreador será inestable, por lo que debe utilizar aún más información.
El enfoque con IoU se basa solo en los
signos de detección
"geométricos" , es decir, simplemente trata de compararlos por proximidad en los marcos. Pero tenemos a nuestra disposición una imagen completa (incluso dos en este caso), y podemos usar el hecho de que dentro de estas detecciones hay
signos "visuales" . Además, tenemos un historial de detecciones para cada persona, lo que nos permite predecir con mayor precisión su próxima posición en función de la velocidad y la dirección del movimiento, esto puede llamarse condicionalmente
signos "físicos" .
Uno de los primeros rastreadores en tiempo real, que era completamente confiable y capaz de hacer frente a situaciones difíciles, se publicó en 2016
Simple Online y Realtime Traker (SORT) (
código Python ). SORT no usó ningún signo visual y redes neuronales, sino que solo estimó una serie de parámetros de cada cuadro en cada cuadro: la velocidad actual (x e y por separado) y el tamaño (altura y ancho). La relación de aspecto de un cuadro siempre se toma desde la primera detección de ese cuadro. Además, las velocidades se predicen utilizando
filtros de Kalman (generalmente son buenas y ligeras en el mundo del procesamiento de señales), se construye la matriz de intersección de las cajas por IoU, y el
algoritmo húngaro asigna las detecciones.
Si le parece que las matemáticas ya se han vuelto un poco demasiado, entonces en
este artículo todo se explica de
manera accesible (esto es medio :).
Ya en 2017, se lanzó una modificación de SORT en forma de
DeepSORT (
código para TensorFlow ). DeepSORT ya ha comenzado a usar la red neuronal para extraer signos visuales, usándolos para resolver colisiones. La calidad del seguimiento ha crecido: no es por nada que se considera uno de los mejores rastreadores en línea en la actualidad.
El campo de rastreo se está desarrollando activamente: hay
rastreadores con redes neuronales siamesas y
rastreadores con RNN . Mantenga el dedo en el pulso, porque en cualquier día puede salir una arquitectura aún más precisa y rápida (o ya ha salido). Por cierto, es muy conveniente seguir tales cosas en
PapersWithCode , siempre hay enlaces a artículos y códigos para ellos (si los hay).
Epílogo
Realmente hemos experimentado mucho y aprendido mucho. Pero la visión por computadora es un área extremadamente vasta, y yo soy una persona extremadamente terca. Es por eso que lo veremos en el tercer artículo de este ciclo (¿será el último? Quién sabe ...), donde discutiremos con más detalle la segmentación, la evaluación de la postura, el reconocimiento de acciones en un video y la generación de una descripción de una imagen usando redes neuronales.
PD: Quiero expresar un agradecimiento especial a Vadim Gorbachev por sus valiosos consejos y comentarios en la preparación de este y el artículo anterior.