¿Cuáles son los principales temas de investigación o proyectos que se relacionan entre la visión por computadora y la implementación de hardware en FPGA?

Definitivamente iría por un diagnóstico médico , detección de cáncer cerebral, … Lo siento, ¡iría por autos sin conductor ! Pero esperemos, pensemos, ¡la síntesis de voz es mucho mejor! … ¡Sabes qué, la clasificación de objetos y el reconocimiento facial son los mejores!

¡Supongo que realmente necesitamos resolver esto! Entonces, ¿qué pasaría si pudiéramos encontrar una implementación de hardware que no tenga ningún problema para hacer literalmente todas esas tareas tremendamente diferentes? – Parece una locura, pero sí, ¡creo que sería el tema de investigación más candente en hardware de visión por computadora!

Por lo tanto, me gustaría presentarles las infames implementaciones de hardware y aceleradores de redes neuronales de convolución (CNN) .

Intentaré mantener mi respuesta organizada tanto como sea posible:

A. ¿Qué son las CNN?
Las redes neuronales convolucionales, también llamadas ConvNets, son las redes neuronales más conocidas en el aprendizaje automático para la visión por computadora. Los CNN se han vuelto ampliamente conocidos y adaptados después de que la red de convolución profunda de Alex Krizshevsk ganó el desafío de reconocimiento visual IMAGENET a gran escala en 2012. Recomiendo este tutorial completo sobre cómo funciona un CNN y las matemáticas detrás de él. Además, consulte el video de este científico de datos de Facebook, Brandon Roher.

B. ¿Cómo pueden ser válidas las CNN para el diagnóstico médico, la síntesis del habla, los automóviles autónomos, etc.?
La respuesta clave es Entrenamiento, sobre qué conjuntos de datos se ha entrenado la red y lo que ha aprendido simplemente determina su función. Imagine una CNN o cualquier red neuronal como un estudiante de secundaria graduado que está listo para unirse a cualquier especialidad universitaria que decida. Si lo haces unirse a Ingeniería, ¡simplemente sería un Ingeniero! Si solo prefieres especializarse en medicina, él sería médico. Entonces, si una CNN está bien entrenada y el proceso de aprendizaje ha sido exitoso, hará lo que se supone que debe hacer.
Por ejemplo, si le da a la red 10,000 tomografías computarizadas de cerebros y le dice si el caso es positivo o negativo, aprendería cómo decidir y extraer características cruciales que usaría en otros escaneos de entrada para determinar. Ahora, la CNN es un radiólogo experto, ¡y en realidad podemos prescindir de los ~ 350k radiólogos pagados anualmente!

Detección de cáncer cerebral [Jermyn et al., JBO 2016]

Además, en el análisis y la síntesis del habla, puede representar la voz como patrones de frecuencias y entrenar a la red para reconocer qué patrón compone cada palabra. La metodología es la misma para los autos sin conductor; usted entrena la red para identificar personas, automóviles, letreros, carriles, etc.

C. ¿Por qué necesitamos hardware personalizado para CNN? ¿O por qué no podemos simplemente ejecutar CNN en un procesador de computadora como cualquier otro algoritmo?

En realidad, puede escribir un fragmento de código en cualquiera de las bibliotecas disponibles y ejecutar el programa en un procesador de computadora, pero tenga en cuenta que esas redes tienen que ser poco profundas, es decir, solo 1-3 capas convolucionales y 1 capa completamente conectada con una pequeña capacitación. conjuntos de datos El proceso de capacitación puede llevar horas o días dependiendo de la potencia computacional del procesador. Sin embargo, tales redes no serían útiles en absoluto porque no son lo suficientemente profundas como para dar con precisión los resultados esperados y no están capacitadas en grandes conjuntos de datos para poder implementarse en tareas prácticas y críticas como mencioné antes. Por analogía, imagine un CNN complejo complejo bien entrenado frente a un CNN simple pobre y poco profundo como graduado del MIT frente a un graduado de cualquier otra universidad extremadamente baja. Las CNN profundas pueden alcanzar 50 capas con ~ 30 millones de pesos y ~ 20 mil millones de operaciones de multiplicación y acumulación y cientos de miles o incluso millones de conjuntos de datos [por ejemplo, las imágenes de seguimiento de AlexNet de 1.3m]. Por lo tanto, necesitan recursos de hardware computacional personalizados muy potentes para hacer el trabajo.

Los CNN profundos de última generación en la clasificación de objetos [fuente: Tutorial sobre arquitecturas de hardware para redes neuronales profundas ]

D. ¿Cuáles son los equipos disponibles para la capacitación e inferencia de CNN?

Dos tipos:
1- GPU / CPU que generalmente son adecuadas para el aprendizaje profundo y todo tipo de redes neuronales, las más conocidas son:
→ i- Intel Knights Landing (2016).
→ ii-La larga lista de GPU Nividia para aprendizaje profundo.
→ ii- Nividia DGX-1, el monstruo para nuevas empresas de IA y proyectos de megainvestigación.

2- FPGA que también son generales para el aprendizaje profundo:
i- Intel / Altera Stratix 10
→ ii-Xilinx Virtex UltraSCALE

Además, recomendaría leer ¿Pueden los FPGA vencer a las GPU en la aceleración del aprendizaje profundo de próxima generación?

E. ¿Cómo puedo implementar una CNN en un FPGA?
Tienes 2 opciones, puedes construir un acelerador para el proceso de aprendizaje o el proceso de inferencia. El proceso de inferencia es la ejecución una vez que la red ha finalizado la capacitación y se puede implementar en la vida real. En ambos casos, necesitaría diseñar algún motor básico o bloques como convolución , la convolución en sí misma puede implementarse en hardware de muchas maneras diferentes. Para entrar en diferentes arquitecturas y flujos de datos de CNN, debe leer el mejor tutorial que he encontrado en Internet por Nividia cooperando con MIT.

arquitectura de motor de convolución estacionaria de peso estándar [fuente: Farabet et al, ICCV 2009]

F. ¿Tendría que cambiar mi diseño si cambia la función de la CNN?
No, solo necesitaría cambiar los parámetros, el número de capas y los valores de peso, mientras que la arquitectura principal y los módulos serían los mismos. Es como las clases y funciones que heredan y pasan diferentes parámetros en cualquier lenguaje OOP.

G. ¿Cuáles son las principales publicaciones sobre FPGA de CNN y diseños ASIC?
Hace 2 meses, logré recopilar ~ 20 artículos muy citados sobre FPGA de CNN y diseños ASIC.

H. ¿Cuáles son los proyectos principales en CNN FPGAs y diseños ASIC?
> Neuflow, universidad de Nueva York, (basada en FPGA)

> Eyeriss, MIT cooperando con Nividia.

Yo Muéstrame los FPGA de CNN y los diseños ASIC muestran un crecimiento en los últimos años.