Índice:

Robô de classificação de reciclagem: 15 etapas (com imagens)
Robô de classificação de reciclagem: 15 etapas (com imagens)

Vídeo: Robô de classificação de reciclagem: 15 etapas (com imagens)

Vídeo: Robô de classificação de reciclagem: 15 etapas (com imagens)
Vídeo: O SEGREDO DO LIXO - Nostalgia Animado 2024, Novembro
Anonim
Image
Image
Obtendo os dados
Obtendo os dados

Você sabia que a taxa média de contaminação em comunidades e empresas chega a 25%? Isso significa que uma em cada quatro peças de reciclagem que você joga fora não é reciclada. Isso é causado por erro humano em centros de reciclagem. Tradicionalmente, os trabalhadores separam o lixo em diferentes lixeiras, dependendo do material. Os humanos cometem erros e acabam não separando o lixo de maneira adequada, levando à contaminação. À medida que a poluição e as mudanças climáticas se tornam ainda mais significativas na sociedade de hoje, a reciclagem desempenha um papel importante na proteção do nosso planeta. Ao usar robôs para separar o lixo, as taxas de contaminação diminuirão drasticamente, sem falar que serão muito mais baratas e sustentáveis. Para resolver isso, criei um robô de triagem de reciclagem que usa aprendizado de máquina para classificar entre diferentes materiais de reciclagem.

Etapa 1: Peças

Certifique-se de ter as seguintes partes para acompanhar este tutorial:

Peças impressas em 3D (veja a etapa abaixo)

Raspberry Pi RPI 4 4 GB

Google Coral USB Accelerator

Arduino Uno R3

Módulo de câmera Raspberry Pi V2

Fonte de alimentação de parede 5V 2A DC

Fonte de alimentação DC 12V

SG90 9g Micro Servos 4pcs.

M3 x 0,5 mm Aço Inoxidável Auto-Bloqueio Nylon Porca de bloqueio hexagonal 100 unidades.

Parafusos de titânio de cabeça de botão M3x20 10pcs.

MG996R Metal Gear Torque Servo Motor Analog 4pcs.

Samsung 32GB Selecione Cartão de Memória

Cabo Flex Adafruit para câmera Raspberry Pi - 1 metro

M2 macho fêmea espaçador de latão distanciador parafuso kit de sortimento de porca

Ventilador 60mm 12V

Caixa de projeto de 6,69 "x 5,12" x 2,95"

Etapa 2: peças impressas em 3D

Você precisará imprimir em 3D todas as peças do braço robótico. Você pode encontrar todos os arquivos aqui.

Etapa 3: Código

Clone meu repositório GitHub para acompanhar este tutorial.

Etapa 4: obtendo os dados

Para treinar o modelo de detecção de objetos que pode detectar e reconhecer diferentes materiais de reciclagem, usei o conjunto de dados trashnet que inclui 2527 imagens:

  • Vidro 501
  • 594 papel
  • Cartão 403
  • 482 plástico
  • 410 metal
  • 137 lixo

A imagem acima é um exemplo de uma das imagens do conjunto de dados.

Este conjunto de dados é muito pequeno para treinar um modelo de detecção de objetos. Existem apenas cerca de 100 imagens de lixo que são muito pequenas para treinar um modelo preciso, então decidi deixá-las de fora.

Você pode usar esta pasta do Google Drive para baixar o conjunto de dados. Certifique-se de baixar o arquivo dataset-resized.zip. Ele contém o conjunto de imagens que já foram redimensionadas para um tamanho menor para permitir um treinamento mais rápido. Se desejar redimensionar as imagens brutas de acordo com sua preferência, fique à vontade para baixar o arquivo dataset-original.zip.

Etapa 5: Rotulando as imagens

Rotulando as imagens
Rotulando as imagens

Em seguida, precisamos rotular várias imagens de diferentes materiais de reciclagem para que possamos treinar o modelo de detecção de objetos. Para fazer isso, usei o labelImg, um software gratuito que permite rotular caixas delimitadoras de objetos em imagens.

Rotule cada imagem com o rótulo adequado. Este tutorial mostra como. Certifique-se de fazer cada caixa delimitadora o mais próximo possível da borda de cada objeto para garantir que o modelo de detecção seja o mais preciso possível. Salve todos os arquivos.xml em uma pasta.

A foto acima mostra como rotular suas imagens.

Esta é uma experiência muito tediosa e entorpecente. Felizmente para você, já marquei todas as imagens para você! Você pode encontrá-lo aqui.

Etapa 6: Treinamento

Em termos de treinamento, decidi usar a aprendizagem por transferência usando o Tensorflow. Isso nos permite treinar um modelo decentemente preciso sem uma grande quantidade de dados.

Existem algumas maneiras de fazermos isso. Podemos fazer isso em nossa máquina desktop local na nuvem. O treinamento em nossa máquina local levará muito tempo dependendo da potência do seu computador e se você tiver uma GPU potente. Esta é provavelmente a maneira mais fácil na minha opinião, mas novamente com o lado negativo da velocidade.

Existem alguns pontos importantes a serem observados sobre a aprendizagem por transferência. Você precisa se certificar de que o modelo pré-treinado usado para o treinamento é compatível com o TPU Coral Edge. Você pode encontrar modelos compatíveis aqui. Usei o modelo MobileNet SSD v2 (COCO). Sinta-se à vontade para experimentar com outras pessoas também.

Para treinar em sua máquina local, eu recomendaria seguir o tutorial do Google ou o tutorial do EdjeElectronics se estiver executando no Windows 10. Pessoalmente, testei o tutorial do EdjeElectroncs e tive sucesso no meu desktop. Não posso confirmar se o tutorial do Google funcionará, mas ficaria surpreso se não funcionar.

Para treinar na nuvem, você pode usar AWS ou GCP. Encontrei este tutorial que você pode experimentar. Ele usa TPUs em nuvem do Google que podem treinar seu modelo de detecção de objetos de forma super rápida. Sinta-se à vontade para usar a AWS também.

Independentemente de você treinar em sua máquina local ou na nuvem, você deve acabar com um modelo de tensorflow treinado.

Etapa 7: Compilando o modelo treinado

Compilando o modelo treinado
Compilando o modelo treinado

Para que seu modelo treinado funcione com o Coral Edge TPU, você precisa compilá-lo.

Acima está um diagrama para o fluxo de trabalho.

Após o treinamento, você precisa salvá-lo como um gráfico congelado (arquivo.pb). Em seguida, você precisa convertê-lo em um modelo Tensorflow Lite. Observe como diz "Quantização pós-treinamento". Se você usou os modelos pré-treinados compatíveis ao usar o aprendizado por transferência, não é necessário fazer isso. Dê uma olhada na documentação completa sobre compatibilidade aqui.

Com o modelo Tensorflow Lite, você precisa compilá-lo em um modelo Edge TPU. Veja os detalhes de como fazer isso aqui.

Etapa 8: Modelo de detecção de reciclagem

Se você não quiser passar pelo aborrecimento de treinar, converter e compilar o modelo de detecção de objetos, verifique meu modelo de detecção de reciclagem aqui.

Etapa 9: implantar o modelo

Implantar o modelo
Implantar o modelo

A próxima etapa é configurar o Raspberry Pi (RPI) e o Edge TPU para executar o modelo de detecção de objeto treinado.

Primeiro, configure o RPI usando este tutorial.

Em seguida, configure o Edge TPU seguindo este tutorial.

Finalmente, conecte o módulo da câmera RPI ao raspberry pi.

Agora você está pronto para testar seu modelo de detecção de objetos!

Se você já clonou meu repositório, navegue até o diretório RPI e execute o arquivo test_detection.py:

python test_detection.py --model recycle_ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03 / detect_edgetpu.tflite --labels recycle_ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03 / labels.txt

Uma pequena janela deve aparecer e se você colocar uma garrafa de água de plástico ou outro material reciclado, ela deve detectá-lo como na imagem acima.

Pressione a letra "q" no teclado para encerrar o programa.

Etapa 10: construir o braço robótico

Construir o braço robótico
Construir o braço robótico

O braço robótico é um braço impresso em 3D que encontrei aqui. Basta seguir o tutorial de configuração.

A imagem acima mostra como ficou meu braço robótico.

Certifique-se de conectar os pinos do servo aos pinos de E / S do Arduino em meu código. Conecte os servos de baixo para cima do braço nesta ordem: 3, 11, 10, 9, 6, 5. Não conectá-los nesta ordem fará com que o braço mova o servo errado!

Teste para ver o funcionamento navegando até o diretório Arduino e executando o arquivo basicMovement.ino. Isso simplesmente agarrará um objeto que você colocar na frente do braço e o deixará cair para trás.

Etapa 11: Conectando o RPI e o braço robótico

Conectando o RPI e o braço robótico
Conectando o RPI e o braço robótico

Primeiro precisamos montar o módulo da câmera na parte inferior da garra. A imagem acima mostra como deve ficar.

Tente alinhar a câmera o mais reto possível para minimizar erros ao pegar o material reciclado reconhecido. Você precisará usar o cabo longo de fita do módulo da câmera, conforme visto na lista de materiais.

Em seguida, você precisa fazer o upload do arquivo roboticArm.ino para a placa Arduino.

Finalmente, só precisamos conectar um cabo USB entre a porta USB do RPI e a porta USB do Arduino. Isso permitirá que eles se comuniquem via serial. Siga este tutorial sobre como configurar isso.

Etapa 12: toques finais

Toques Finais
Toques Finais
Toques Finais
Toques Finais

Esta etapa é totalmente opcional, mas gosto de colocar todos os meus componentes em uma pequena caixa de projeto agradável.

As imagens acima mostram como fica.

Você pode encontrar a caixa do projeto na lista de materiais. Acabei de fazer alguns furos e usei suportes de latão para montar os componentes eletrônicos. Também montei 4 ventiladores de resfriamento para manter um fluxo de ar constante através do RPI e TPU quando quente.

Etapa 13: Correr

Agora você está pronto para ligar o braço robótico e o RPI! No RPI, você pode simplesmente executar o arquivo recycle_detection.py. Isso abrirá uma janela e o braço robótico começará a funcionar exatamente como no vídeo de demonstração! Pressione a letra "q" no teclado para encerrar o programa.

Sinta-se à vontade para brincar com o código e se divertir!

Etapa 14: Trabalho Futuro

Espero usar R. O. S. para controlar o braço robótico com movimentos mais precisos. Isso permitirá uma coleta mais precisa de objetos.

Etapa 15: Perguntas?

Sinta-se à vontade para deixar um comentário abaixo se você tiver alguma dúvida!

Recomendado: