Tabla de contenido:
- Paso 1: antes de comenzar
- Paso 2: crear un modelo de AA personalizado en Lobe
- Paso 3: Constrúyalo: ¡Hardware
- Paso 4: Codifíquelo: ¡Software
- Paso 5: Pruébelo: ¡Ejecute el programa
- Paso 6: (Opcional) Constrúyalo: ¡Finalice su circuito
- Paso 7: (Opcional) Constrúyalo: ¡Estuche
- Paso 8: ¡Instalar e implementar
Video: ¡Haga un clasificador de basura Pi con ML !: 8 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
El proyecto Trash Classifier, conocido cariñosamente como "¿A dónde va?", Está diseñado para hacer que tirar cosas sea más rápido y más confiable.
Este proyecto utiliza un modelo de aprendizaje automático (ML) entrenado en Lobe, un constructor de modelos ML para principiantes (¡sin código!), Para identificar si un objeto va a la basura, al reciclaje, al compost o a los desechos peligrosos. Luego, el modelo se carga en una computadora Raspberry Pi 4 para que se pueda usar en cualquier lugar donde pueda encontrar contenedores de basura.
Este tutorial le muestra cómo crear su propio proyecto de clasificador de basura en una Raspberry Pi a partir de un modelo Lobe TensorFlow en Python3.
Dificultad: Principiante ++ (algunos conocimientos con circuitos y codificación son útiles)
Tiempo de lectura: 5 min
Tiempo de construcción: 60 - 90 min
Costo: ~ $ 70 (incluido Pi 4)
Suministros:
Software (lado de la PC)
- Lóbulo
- WinSCP (u otro método de transferencia de archivos SSH, puede usar CyberDuck para Mac)
- Terminal
- Conexión de escritorio remoto o RealVNC
Hardware
- Raspberry Pi, tarjeta SD y fuente de alimentación USB-C (5 V, 2,5 A)
- Cámara Pi
- Presionar el botón
-
5 LED (4 LED indicadores y 1 LED de estado)
- LED amarillo: basura
- LED azul: reciclar
- LED verde: abono
- LED rojo: residuos peligrosos
- LED blanco: estado
- 6 resistencias de 220 ohmios
- 10 cables de puente de M a M
- Protoboard, tamaño medio
Si elige soldar:
- 1 conector JST, solo extremo hembra
- 2 cables de puente de M a F
- 10 cables de puente de F a F
- tarjeta de circuito impreso
Recinto
- Caja del proyecto (por ejemplo, cartón, madera o caja de plástico, aprox. 6 "x 5" x 4 ")
-
Cuadrado de plástico transparente de 0,5 "x 0,5" (2 cm x 2 cm)
P.ej. de la tapa de un recipiente de plástico para alimentos
- Velcro
Instrumentos
- Cortadores de alambre
- Cuchillo de precisión (p. Ej., Cuchillo exacto) y tapete de corte
- Soldador (opcional)
- Herramienta de fusión en caliente (u otro pegamento no conductor; el epoxi funciona muy bien pero es permanente)
Paso 1: antes de comenzar
Este proyecto asume que está comenzando con una Raspberry Pi completamente configurada en una configuración sin cabeza. Aquí hay una guía para principiantes sobre cómo hacer esto.
También ayuda tener algún conocimiento de lo siguiente:
-
Familiaridad con la Raspberry Pi
- ¡Aquí tienes una práctica guía de inicio!
- También es útil: Introducción a la cámara Pi
-
Leer y editar código Python (no necesitará escribir un programa, solo editar)
Introducción a Python con Raspberry Pi
- Leer los diagramas de cableado de Fritzing
-
Usando una placa de pruebas
Cómo usar un tutorial de protoboard
Descubra a dónde va su basura
Cada ciudad de los EE. UU. (Y supongo que el mundo) tiene su propia basura / reciclaje / compost / etc. Sistema de colección. Esto significa que para hacer un clasificador de basura preciso, necesitaremos 1) construir un modelo ML personalizado (cubriremos esto en el siguiente paso, ¡sin código!) Y 2) saber dónde va cada basura.
Como no siempre sabía cuál era el contenedor adecuado para cada artículo que usaba para entrenar mi modelo, utilicé el folleto de Seattle Utilities (Foto 1), y también este útil "¿A dónde va?" herramienta de búsqueda para la ciudad de Seattle! Compruebe qué recursos están disponibles en su ciudad buscando la utilidad de recolección de basura de su ciudad y examinando su sitio web.
Paso 2: crear un modelo de AA personalizado en Lobe
Lobe es una herramienta fácil de usar que tiene todo lo que necesita para dar vida a sus ideas de aprendizaje automático. Muéstrele ejemplos de lo que desea que haga y entrena automáticamente un modelo de aprendizaje automático personalizado que se puede exportar para dispositivos y aplicaciones de borde. No se requiere ninguna experiencia para comenzar. ¡Puedes entrenar en tu propia computadora gratis!
Aquí hay una descripción general rápida sobre cómo usar Lobe:
1. Abra el programa Lobe y cree un nuevo proyecto.
2. Tome o importe fotos y etiquételas en las categorías adecuadas. (Foto 1) Necesitaremos estas etiquetas más adelante en la parte de software del proyecto.
Hay dos formas de importar fotografías:
- Tome fotos de elementos directamente desde la cámara web de su computadora, o
-
Importe fotos de carpetas existentes en su computadora.
Tenga en cuenta que el nombre de la carpeta de fotos se utilizará como el nombre de la etiqueta de categoría, así que asegúrese de que coincida con las etiquetas existentes
Aparte: terminé usando ambos métodos, ya que cuantas más fotos tengas, más preciso será tu modelo.
3. Utilice la función "Reproducir" para probar la precisión del modelo. Cambie las distancias, la iluminación, las posiciones de las manos, etc. para identificar dónde está el modelo y dónde no es exacto. Agregue más fotos según sea necesario. (Fotos 3-4)
4. Cuando esté listo, exporte su modelo de Lobe ML en un formato TensorFlow (TF) Lite.
Consejos:
-
Antes de importar fotos, haga una lista de todas las categorías que necesitará y cómo desea etiquetarlas (por ejemplo, "basura", "reciclar", "abono", etc.)
Nota: Utilice las mismas etiquetas que se muestran en la foto "Etiquetas de modelo de lóbulo" de arriba para reducir la cantidad de código que necesita cambiar
- Incluya una categoría para "no basura" que tenga fotos de cualquier otra cosa que pueda estar en la foto (por ejemplo, sus manos y brazos, el fondo, etc.)
- Si es posible, tome fotos de la cámara Pi e impórtelas en Lobe. ¡Esto mejorará enormemente la precisión de su modelo!
- ¿Necesitas más fotos? ¡Consulte los conjuntos de datos de código abierto en Kaggle, incluido este conjunto de imágenes de clasificación de basura!
- Necesitas más ayuda? ¡Conéctese con Lobe Coommunity en Reddit!
Paso 3: Constrúyalo: ¡Hardware
1. Conecte con cuidado la cámara Pi a Pi (visite la guía de introducción de Pi Foundation para obtener más información). (Foto 1)
2. Siga el diagrama de cableado para conectar el botón y los LED a los pines Pi GPIO.
- Botón pulsador: Conecte una pata del botón pulsador al pin GPIO 2. Conecte el otro, mediante una resistencia, a un pin GPIO GND.
- LED amarillo: conecte la pata positiva (más larga) al pin 17 de GPIO. Conecte la otra pata, a través de una resistencia, a un pin GPIO GND.
- LED azul: Conecte la pata positiva al pin GPIO 27. Conecte la otra pata, a través de una resistencia, a un pin GPIO GND.
- LED verde: Conecte la pata positiva al pin 22 de GPIO. Conecte la otra pata, a través de una resistencia, a un pin GPIO GND.
- LED rojo: Conecte la pata positiva al pin GPIO 23. Conecte la otra pata, a través de una resistencia, a un pin GPIO GND.
- LED blanco: Conecte la pata positiva al pin GPIO 24. Conecte la otra pata, a través de una resistencia, a un pin GPIO GND.
3. Se recomienda probar su circuito en una placa y ejecutar el programa antes de soldar o hacer permanente alguna de las conexiones. Para hacer esto, necesitaremos escribir y cargar nuestro programa de software, ¡así que vayamos al siguiente paso!
Paso 4: Codifíquelo: ¡Software
1. En su PC, abra WinSCP y conéctese a su Pi. Cree una carpeta Lobe en el directorio de inicio de su Pi y cree una carpeta modelo en ese directorio.
2. Arrastre el contenido de la carpeta Lobe TF resultante al Pi. Tome nota de la ruta del archivo: / home / pi / Lobe / model
3. En Pi, abra una terminal y descargue la biblioteca lobe-python para Python3 ejecutando los siguientes comandos de bash:
pip3 instalar
pip3 instalar lóbulo
4. Descargue el código del clasificador de basura (rpi_trash_classifier.py) de este repositorio al Pi (haga clic en el botón "Código" como se muestra en la foto 1).
- ¿Prefieres copiar / pegar? Obtén el código sin procesar aquí.
- ¿Prefieres descargarlo en tu computadora? Descargue el repositorio / código en su computadora y luego transfiera el código Python al Pi a través de WinSCP (o su programa de transferencia de archivos remoto preferido).
5. Una vez que haya conectado el hardware a los pines GPIO de Pi, lea el código de ejemplo y actualice las rutas de archivo según sea necesario:
- Línea 29: ruta de archivo al modelo Lobe TF
- Líneas 47 y 83: ruta de archivo a las imágenes capturadas a través de la cámara Pi
6. Si es necesario, actualice las etiquetas del modelo en el código para que coincidan exactamente con las etiquetas de su modelo Lobe (incluidas las mayúsculas, la puntuación, etc.):
- Línea 57: "basura"
- Línea 60: "reciclar"
- Línea 63: "abono"
- Línea 66: "instalación de desechos peligrosos"
- Línea 69: "¡no basura!"
7. Ejecute el programa usando Python3 en la ventana de la terminal:
python3 rpi_trash_classifier.py
Paso 5: Pruébelo: ¡Ejecute el programa
Reseña del programa
Cuando ejecute el programa por primera vez, llevará algún tiempo cargar la biblioteca de TensorFlow y el modelo de Lobe ML. Cuando el programa esté listo para capturar una imagen, la luz de estado (LED blanco) parpadeará.
Una vez que haya tomado una imagen, el programa comparará la imagen con el modelo Lobe ML y generará la predicción resultante (línea 83). La salida determina qué luz se enciende: amarilla (basura), azul (reciclar), verde (abono) o roja (residuos peligrosos).
Si ninguno de los LED indicadores se enciende y el LED de estado vuelve al modo de pulso, significa que la imagen capturada "no era basura", en otras palabras, ¡vuelva a tomar la foto!
Capturar una imagen
Presione el botón para capturar una imagen. Tenga en cuenta que es posible que deba mantener presionado el botón pulsador durante al menos 1 segundo para que el programa registre la prensa. Se recomienda tomar algunas imágenes de prueba y luego abrirlas en el escritorio para comprender mejor la vista y el marco de la cámara.
Para que el usuario tenga tiempo de colocar el objeto y ajustar los niveles de luz de la cámara, se necesitan aproximadamente 5 segundos para capturar completamente una imagen. Puede cambiar estas configuraciones en el código (líneas 35 y 41), pero tenga en cuenta que Pi Foundation recomienda un mínimo de 2 segundos para el ajuste del nivel de luz.
Solución de problemas
El mayor desafío es garantizar que la imagen capturada sea lo que esperamos, así que tómese un tiempo para revisar las imágenes y comparar los resultados esperados con la salida del indicador LED. Si es necesario, puede pasar imágenes al modelo Lobe ML para una inferencia directa y una comparación más rápida.
Algunas cosas a tener en cuenta:
- Es probable que la biblioteca de TensorFlow arroje algunos mensajes de advertencia; esto es típico de la versión utilizada en este código de muestra.
- Las etiquetas de predicción deben ser exactamente como están escritas en la función led_select (), incluidas las mayúsculas, la puntuación y el espaciado. Asegúrese de cambiarlos si tiene un modelo de lóbulo diferente.
- El Pi requiere una fuente de alimentación constante. La luz de encendido del Pi debe ser de color rojo intenso y brillante.
- Si uno o más LED no se encienden cuando se espera, verifique forzándolos con el comando:
red_led.on ()
Paso 6: (Opcional) Constrúyalo: ¡Finalice su circuito
Ahora que hemos probado y, si es necesario, depurado nuestro proyecto para que funcione como se esperaba, ¡estamos listos para soldar nuestro circuito!
Nota: Si no tiene un soldador, puede omitir este paso. Una alternativa es cubrir las conexiones de los cables con pegamento caliente (esta opción le permitirá arreglar / agregar / usar cosas más adelante, pero es más probable que se rompa), o usar epoxi o un pegamento permanente similar (esta opción será mucho más duradera pero no podrá usar el circuito o potencialmente el Pi después de hacer esto)
Comentario rápido sobre mis opciones de diseño (Foto 1):
- Opté por cables de puente hembra para los LED y Pi GPIO porque me permiten eliminar los LED e intercambiar colores o moverlos si es necesario. Puede omitir estos si desea que las conexiones sean permanentes.
- Del mismo modo, elegí un conector JST para el pulsador.
¡Adelante a la construcción
1. Corte cada uno de los cables de puente hembra por la mitad (sí, ¡todos!). Con un pelacables, retire aproximadamente 1/4 (1/2 cm) del aislamiento del cable.
2. Para cada uno de los LED, suelde una resistencia de 220Ω a la pata negativa (más corta). (Foto 2)
3. Corte un trozo pequeño, de aproximadamente 1 (2 cm) de tubo termorretráctil y empuje sobre el LED y la unión de la resistencia. Asegúrese de que la otra pata de la resistencia sea accesible, luego caliente el tubo termorretráctil hasta que asegure la unión. (Foto 3)
4. Inserte cada LED en un par de cables de puente hembra. (Foto 4)
5. Etiquete los cables de puente (por ejemplo, con cinta), luego suelde los cables de puente en su placa de circuito impreso (PCB). (Foto 5)
6. A continuación, utilice un cable de puente hembra (cortado) para conectar cada LED a su respectivo pin Pi GPIO. Suelde y etiquete un cable de puente de modo que el metal desnudo se conecte a la pata del LED positivo a través de la PCB. (Foto 5)
Nota: El lugar donde suelde este cable dependerá del diseño de su PCB. También puede soldar este cable directamente al cable de puente LED positivo.
7. Suelde una resistencia de 220Ω al extremo negativo (negro) del conector JST. (Foto 6)
8. Suelde el conector JST y la resistencia al pulsador (Foto 6).
9. Conecte los cables de puente de M a F entre el conector del botón pulsador y las clavijas GPIO (recordatorio: el negro es GND).
10. Recubra las conexiones de la PCB con pegamento caliente o epoxi para una conexión más segura.
Nota: si elige usar epoxi, es posible que no pueda usar los pines GPIO de Pi para otros proyectos en el futuro. Si le preocupa esto, agregue un cable plano GPIO y conecte los cables de puente a ese en su lugar.
Paso 7: (Opcional) Constrúyalo: ¡Estuche
Cree un gabinete para su Pi que mantendrá la cámara, el botón pulsador y los LED en su lugar y, al mismo tiempo, protegerá el Pi. Diseñe su propio gabinete o siga nuestras instrucciones de construcción a continuación para crear rápidamente un prototipo de un gabinete de cartón.
-
En la parte superior de la pequeña caja de cartón, trace las ubicaciones del botón pulsador, la luz de estado, las luces de identificación y la ventana de la cámara pi (Foto 1).
Nota: la ventana de la cámara Pi debe ser de aproximadamente 3/4 "x 1/2"
-
Usando su cuchillo de precisión, corte los rastros.
Nota: es posible que desee probar los tamaños a medida que avanza (Foto 1)
- Opcional: ¡Pinta el estuche! Opté por pintura en aerosol:)
- Recorta una cubierta rectangular de "ventana" para la cámara Pi (Foto 4) y pégala en el interior de la caja.
-
Finalmente, corte la ranura para el cable de alimentación Pi.
Se recomienda instalar primero todos los componentes electrónicos para ubicar el mejor lugar para la ranura del cable de alimentación pi
Paso 8: ¡Instalar e implementar
¡Eso es todo! ¡Está listo para instalar e implementar su proyecto! Coloque el gabinete sobre sus contenedores de basura, conecte el Pi y ejecute el programa para obtener una forma más rápida y confiable de reducir nuestros desechos. ¡Hurra!
Avanzando
- ¡Comparta sus proyectos e ideas con otras personas a través de la comunidad de Lobe Reddit!
- Consulte el repositorio de Lobe Python GitHub para obtener una descripción general sobre cómo usar Python para implementar una variedad más amplia de proyectos de Lobe.
- ¿Preguntas o solicitudes de proyectos? Deje un comentario sobre este proyecto o comuníquese con nosotros directamente: [email protected]
Recomendado:
Contenedor clasificador: detecte y clasifique su basura: 9 pasos
Contenedor clasificador: detecte y clasifique su basura: ¿Alguna vez ha visto a alguien que no esté reciclando o lo esté haciendo de mala manera? ¿Alguna vez has deseado una máquina que reciclara por ti? ¡Sigue leyendo nuestro proyecto, no te arrepentirás! Sorter bin es un proyecto con una clara motivación de ayuda
Clasificador de basura CPE 133: 14 pasos
Clasificador de basura CPE 133: Para nuestra clase CPE 133 en Cal Poly, nos dijeron que creáramos un proyecto VHDL / Basys 3 que ayudaría al medio ambiente y era lo suficientemente simple como para poder implementarlo con nuestro nuevo conocimiento de diseño digital. La idea detrás de nuestro proyecto que, en general
Proyecto de clasificador de color Arduino con aplicación de control de PC: 4 pasos (con imágenes)
Proyecto de clasificador de color Arduino con aplicación de control de PC: En este proyecto, elegí el sensor de color TCS34725. Debido a que este sensor realiza una detección más precisa que los demás y no se ve afectado por el cambio de luz en el entorno. El robot de depuración del producto está controlado por el programa de interfaz
ROCAS DE BASURA - Elimine la basura no reciclable: 8 pasos
ROCAS DE BASURA - Elimina la basura no reciclable: para hacer una piedra de basura, primero se cose un saco con una red de pesca. Está lleno de basura y enlucido con cemento. Las conchas resultantes tienen una forma única y se ven muy naturales. Las rocas basura son una estética agradable y constructiva
Haga una pequeña linterna Dynamo con basura en 2 pasos
Haz una pequeña linterna Dynamo con basura en 2 pasos: ¡El poder de la basura! Aquí hay algo realmente genial para hacer con un reproductor de cintas / o un reproductor de CD y un LED. Cualquier LED antiguo funcionará, pero será mucho más brillante si puede encontrar algunos blancos de 5 mm. Casi todos los LED funcionarán felizmente (y para siempre) encendidos