Convertimos una aspiradora robot en un soldado universal

Todo comenzó con una pasión por el aprendizaje profundo, las redes neuronales y más abajo en la lista. Miré un par de cursos, participé en una competencia en Kaggle ... "¿qué más hacer?". Luego, una aspiradora robot (Xiaomi Vacuum Cleaner V1) rastreada por su propio negocio y arrojó una idea interesante ...



Larga introducción


Este artículo es un resumen provisional de un período de vida específico. Espero que sea útil para las personas que desean participar en el aprendizaje automático, pero aún no han decidido qué dirección desarrollar. Hace casi un año, una vez más cambié mi trabajo y lugar de residencia. En un lugar nuevo, hablaron mucho sobre el aprendizaje automático, pero sobre todo los gerentes que quieren promover un tema publicitario. El resto, se ocupó del tema sin mucho entusiasmo (aún así, trabajar para ellos).


Me preguntaba de qué se trataba el aprendizaje automático. Un año después, puedo decir que el tema es sorprendentemente voluminoso. Veamos qué aspectos específicos están disponibles para su uso en la vida y los negocios.


  1. Aprendizaje automático clásico.
    Brevemente: todo lo que era antes de la aparición. hypa aprendizaje profundo (aprendizaje profundo). Si tiene datos tabulares sobre ventas, clientes, transacciones y desea aumentar las ventas, atraer clientes, reconocer fraudes, aquí está. Aquí hay algunas buenas conferencias para ayudarlo a comprender cómo analizar datos y usar métodos como bosque aleatorio, K-means o XGBoost. También me gustaron los microcursos de Kaggle y la competencia de predicción de precios de la vivienda. Quizás cualquier empresa que tenga clientes reales (y, por lo tanto, una base de datos) puede aplicar estos métodos. Hay muchas cosas interesantes
  2. Aprendizaje profundo
    Autos no tripulados, autos no tripulados y reemplazando la cabeza de Jack Nicholson con la cabeza de Jim Carrey . Pero si bucea más profundo, cualquier cabeza dará la vuelta. Aquí está el reconocimiento de caras, emociones, posición corporal, extracción de semántica del video y todo tipo de transformaciones de transmisión de video. Transcripción automática y traducción automática, definición de enfermedades y malezas, bueno, ya sabes, casi cualquier cosa. Además de la visión por computadora, también hay procesamiento de lenguaje natural (PNL), procesamiento y simulación de transmisión de audio, redes neuronales de juegos GAN. Cualquiera que sea el aspecto del aprendizaje profundo que elija, puede dedicar tiempo a:

  • Profundizar en los detalles de la arquitectura de las redes neuronales.
    Esta área, en mi opinión, está más cerca de la ciencia y requiere un cuerpo correspondiente de conocimiento en matemáticas y ciencias de la computación. Si está ansioso por experimentar con una nueva función de activación asesina, gire las capas personalizadas, y para que la tasa de aprendizaje no solo disminuya trillado, sino que se convierta en un tubo, entonces esta área de aprendizaje profundo es para usted. Abra los últimos artículos científicos y comience a experimentar. Desde el punto de vista comercial, estas son las cosas que pueden hacer las empresas que están dispuestas a invertir específicamente en la discusión. Hay conferencias de la Universidad de Stanford para conocidos de YouTube en YouTube .


  • Profundización en detalles de infraestructura.
    La formación de imágenes de redes neuronales para el reconocimiento de imágenes requiere recursos de la máquina. La elección del hierro es amplia y limitada solo por el tamaño de la billetera. Creo que la GTX 1070 Ti puede considerarse un buen comienzo, pero no olvide que una tarjeta de video por sí sola no resuelve todos los problemas, porque los datos aún deben prepararse y alimentarse a las redes neuronales. Una CPU débil o un disco duro lento pueden convertirse en el cuello de botella de su sistema. Por lo tanto, compre un procesador i5 adicional, 16 gigas de RAM y un disco duro de estado sólido. El teclado, que así sea, saldrá del más barato. Otra opción, Google Cloud, Azure, AWS, Kaggle nuevamente. Los servicios en la nube ofrecen docenas, si no cientos de opciones, con un precio inicial de alrededor de 50 centavos por hora para el K80 (aproximadamente lo mismo que el GTX 1070 Ti). Google te da un depósito de $ 300 para practicar. Azure da $ 200, con Amazon no tuvo que lidiar. Me gustó la opción de Google porque puedes cambiar rápidamente las tarjetas de video ("Ah, camina como una caminata. Hoy será la V100"). Por supuesto, en comparación con los salarios de la fecha de la estrella de rock de las pruebas del sitio de su departamento de investigación, estos gastos serán centavos reales. Un pequeño truco de vida, cuando se conecta a una máquina en la nube, utiliza el reenvío de puertos: you_user@your_host -L 8888:127.0.0.1:8888 . Esto le permitirá ejecutar Jupyter remoto en la computadora local. También me gustaría decir sobre Google TPU. Se pueden usar completamente gratis directamente desde Google Colab, pero si puede usarlos, esa es la pregunta. Cuando trabaja con modelos más o menos estándar, todo se ve hermoso, pero los modelos personalizados se comportan de manera impredecible si solo se inician.


  • Profundización en la implementación en producción.
    Los experimentos con la arquitectura y la participación en concursos son cosas muy útiles, pero en realidad no es tan importante, su modelo ofrece una precisión del 85% o 87%. Para los automóviles no tripulados o las aplicaciones móviles en este caso, la velocidad de la toma de decisiones será más importante, y para las necesidades médicas, lo más probable es un bajo nivel de errores del segundo tipo ("¡Saludable! ¡Adiós!"). Es decir, la identificación de prioridades se destaca. Además, hay un montón de preguntas técnicas: cómo implementar y garantizar la operación continua en el entorno del producto, cómo entrenar el modelo en nuevos datos, cómo monitorear y evaluar los resultados del trabajo, cómo atrapar y corregir errores, finalmente. Ya tenemos todos estos problemas con el software normal, pero ahora van a un nivel diferente. Ya existen herramientas para el control de versiones (Git-LFS, Saturn Cloud), diseñadas específicamente para el aprendizaje automático, pero todavía no existen estándares generalmente aceptados, lo que ciertamente tiene su propio romance. Otro truco de vida: si mantiene hiperparámetros en archivos de configuración separados, puede restaurar fácilmente experimentos exitosos.


  • Uso de modelos listos y transferencia de aprendizaje.
    La parte más simple y atractiva del aprendizaje automático, para aquellos que quieren ver cómo funciona todo en realidad. Hay suficientes modelos confeccionados, un par de docenas de líneas de código y listo: cuadrados multicolores recorren la pantalla. No es necesario dedicar tiempo y recursos a entrenar el modelo desde cero. Incluso hay soluciones listas para usar en hardware si desea reconocimiento en el sitio (por cierto, una excelente visión general sobre ellas) . Parece, tómalo y úsalo, pero hay algunos matices. Los modelos ya preparados están capacitados en conjuntos de datos estándar. Por lo tanto, para averiguar quién roba la crema agria de su negocio: el gato Vaska o el gato Semyon, todavía tiene que ajustar el modelo (aprendizaje de transferencia). Quizás Baba Masha con una escoba le costará mucho menos al negocio.



Cuerpo principal


Aquí volvemos al comienzo del post. Para cuando pasó la aspiradora robótica, quería hacer una aplicación o dispositivo que funcionara de manera simple usando visión artificial. Entonces surgió la idea de darle a la aspiradora otro canal de comunicación con el mundo exterior.
Si le atornillas una cámara pequeña, puedes usar modelos ya hechos o entrenar la tuya. Las posibilidades de aplicación están llenas. Desde la limpieza de manchas hasta el acecho del perro. Puedes idear algún tipo de juego en el espacio físico usando la GAN o jugar con modelos de PNL y enseñarle a hablar como un asistente de voz. En resumen, el tiempo para entrenar a su propio robot doméstico.


Por supuesto, debes comenzar con cosas simples. Por ejemplo, para buscar en Habré que ya está hecho para nosotros. Resulta estar "dentro de ella" Ubuntu 14.04, lo que significa que si tiene una raíz, puede, por ejemplo, controlarla desde el joystick . Si extrae los datos LIDAR, encontrará a la mano un prototipo de un automóvil no tripulado.
La elección ya comienza en esta etapa. ¿Tomar una cámara terminada con Wi-Fi y una batería o una placa para inferencia como Jetson Nano? ¿Y puedo ensamblar una cámara, Wi-Fi y batería en la Raspberry Pi? Cada enfoque es interesante a su manera, pero traté de cumplir con el objetivo principal: crear un dispositivo que funcione de manera simple utilizando el aprendizaje automático, así que elegí la primera opción.


Mientras la cámara estaba en camino, la aspiradora se puso en celo y montó sobre ella. Funciona perfectamente, todavía hay tiempo para soñar. Digamos que Héctor sacó un palo de la calle y lo tira, acostado sobre su alfombra favorita. La cámara, suspendida lo suficientemente alto, captura la contaminación (aquí recordé el desafío de los platos sucios ) y envía las coordenadas a la aspiradora. Cazar un perro es aún más fácil. Es suficiente colocar la cámara en la aspiradora y comenzar a avanzar cuando se detecta al perro, luego un círculo completo y volver a la base.


Pero estos son planes para el futuro. Ahora hagamos algo muy simple. Deje que la aspiradora emita diferentes sonidos según el objeto que apareció a la vista de la cámara. Para esto necesitamos dos hilos conectados por una cola común.


  • El modelo (utilicé uno de los modelos prefabricados del zoológico modelo TensorFlow) reconoce el objeto y pone su nombre en la cola.
  • Otro hilo toma el nombre del objeto de la cola y genera la URL al archivo de sonido.
  • La ruta se pasa a la aspiradora y toca la dirección recibida para el archivo a través de ftp o http.
  • En la carpeta de cada objeto hay varios archivos para un cambio. El archivo se selecciona al azar. Además, hay un parámetro para la probabilidad de reproducir sonido para que la aspiradora, que fija a Héctor a una velocidad de 10 fps, no suene como un loco, pero comunique algo de manera convincente y con dignidad.

El diagrama se ve así:



Así es como funciona:



Subtotal


El objetivo se logra: la aspiradora está hablando. Me alegro de no haber hecho muchas cosas a la vez. El siguiente paso es asociar el reconocimiento de patrones con el flujo que regula el movimiento, y también tratar de transferir el aprendizaje.


Inteligencia artificial, el tema es tan voluminoso que es difícil determinar qué emprender en primer lugar. En mi opinión, no hay un único punto de entrada. No es necesario comenzar con el cálculo de derivados complejos o cursos de programación de Python (aunque ambos son ciertamente útiles). Elija lo que le interese personalmente y que la fuerza lo acompañe para terminar lo que comenzó.


Los detalles de implementación de PS están en el repositorio . Comentarios y solicitudes de extracción son bienvenidos.

Source: https://habr.com/ru/post/474024/


All Articles