Pular para o conteúdo principal

Detecção de Capacete de Segurança com Edge Impulse

Introdução

Em ambientes de trabalho como locais industriais ou de construção, um capacete de segurança é obrigatório e essencial para proteger a cabeça das pessoas contra ferimentos causados por objetos que caem, impacto com outros objetos, detritos, chuva e choque elétrico. Ele melhora a segurança, mas às vezes as pessoas subestimam sua importância, tanto individual quanto industrialmente. Assim, um monitor baseado em vídeo para detectar capacetes de segurança pode ser uma solução otimizada para esse problema de segurança.

Portanto, com crédito para Louis Moreau e Mihajlo Raljic, fornecemos este projeto fundamental em que vamos treinar um modelo de Aprendizado de Máquina embarcado para detectar capacetes de segurança e implantá‑lo no Jetson Nano. O Jetson NX e o Jetson AGX também são compatíveis.

Primeiros passos

O Edge Impulse permite que desenvolvedores criem a próxima geração de soluções de dispositivos inteligentes com Aprendizado de Máquina embarcado. O Aprendizado de Máquina na borda possibilitará o uso valioso de 99% dos dados de sensores que hoje são descartados devido a limitações de custo, largura de banda ou energia. Aqui vamos aplicar o Edge Impulse para treinar um modelo de Aprendizado de Máquina embarcado.

Hardware

Hardware Necessário

Neste projeto, os dispositivos necessários são mostrados abaixo:

Configuração de Hardware

Tanto o PC quanto o NVIDIA Jetson Nano devem estar ligados e conectados à internet. Recomenda‑se configurar o NVIDIA Jetson Nano como um PC.

Software

Aqui vamos treinar um modelo de Aprendizado de Máquina embarcado para detectar capacete de segurança. Há várias maneiras de fazer isso.

Preparação

Antes de começarmos nosso projeto, há alguns trabalhos de preparação que precisam ser feitos primeiro.

  • Passo 2. Clique em "Create new project" e digite o nome do projeto.

Aqui digitamos "Hard hat detection".

  • Passo 3. Vamos treinar um modelo de ML embarcado para detectar capacetes de segurança, portanto aqui a opção "image" deve ser selecionada.
  • Passo 4. Configure a opção como "Classify multiple objects (object detection)".

Agora podemos começar o projeto.

Treinamento do Modelo de ML para Detecção de Capacete de Segurança

Treinamento de Modelo de ML com Base em Conjunto de Dados Públicos

O Edge Impulse oferece várias maneiras de coletar dados. Primeiro vamos enviar os dados públicos para o site e tentar desenvolver um Aprendizado de Máquina embarcado.

  • Passo 1. Selecione a página "Data acauistion" na coluna da esquerda e colete dados.

Clique no botão "upload data" na página "Data acquisition" e envie os conjuntos de dados baixados.

É opcional enviar dados existentes para o projeto no formato Data Acquisition (CBOR, JSON, CSV), como arquivos WAV, JPG ou PNG.

  • Passo 3. Uma vez enviados, os dados coletados são preenchidos com imagens rotuladas. Continue clicando em "Impulse desigh" à esquerda da página.
  • Passo 4. Escolha o bloco adequado de processamento de imagem e o bloco de aprendizado de imagem e salve o impulso.
  • Passo 5. Clique em "image" à esquerda da página.

Configure como "GRB" e clique em "Save Parameters"; a página irá mudar automaticamente para o site "Generate features".

Então podemos gerar as features.

  • Passo 6. Quando "Job completed" for exibido, clique em "Object detection" à esquerda da página.

Clique em "start training" e deixe o Edge Impulse treinar um modelo com base nas features geradas.

  • Passo 7. Quando "job done" for exibido, clique em "Model testing" para verificar como o modelo funciona.

Treinamento de Modelo de ML com Base em Conjuntos de Dados Personalizados com Câmera do PC

O Edge Impulse oferece várias maneiras de coletar dados. Aqui vamos personalizar nossas próprias imagens e enviá‑las para o site capturando as fotos pela câmera do PC.

  • Passo 1. Permaneça na página "Dashboard" e então clique em "LET'S COLLECT SOME DATA".

Há múltiplas opções que podemos escolher para coletar dados; aqui estamos usando nosso computador para proceder.

  • Passo 2. Depois de um tempo, a página mostrará que foi conectada ao computador. Clique em "Collecting images?" e depois em "Give access to the camera".
  • Passo 3. Clique em "Capture" para tirar a foto de você mesmo ou de outras pessoas. Os dados da imagem precisam ser rotulados como "Hard Hat" e "Head" na seção. Para rotular rapidamente a imagem, é altamente recomendável finalizar a aquisição de dados de uma categoria antes de passar para a próxima, ou seja, recomenda‑se terminar de capturar as fotos de "Hard Hat" e depois seguir para capturar as fotos de "Head".

As fotos capturadas serão armazenadas automaticamente em "Data acquistion". Para melhor desempenho do modelo de treinamento, é altamente recomendável coletar o máximo de fotos possível e coletar a mesma quantidade de dados em diferentes categorias.

  • Passo 4. Clique em "Labeling queue" para rotular os dados circulando a cabeça com um quadrado na imagem.

Use o mouse para arrastar uma caixa ao redor de um objeto para adicionar um rótulo. Em seguida, clique em Save labels para avançar para o próximo item.

Defina os rótulos como "Head" e "Hard Hat" e preencha a caixa de diálogo. Certifique‑se de que o quadrado enquadre a área da cabeça das pessoas.

  • Passo 5. Quando os dados tiverem sido rotulados, clique em "Save labels" e vá para "Impulse design"
  • Passo 6. Escolha o bloco adequado de processamento de imagem e o bloco de aprendizado de imagem e salve o impulso.
  • Passo 7. Clique em "image" à esquerda da página.

Configure como "GRB" e clique em "Save Parameters"; a página irá mudar automaticamente para o site "Generate features".

Em seguida, podemos gerar as features.

  • Passo 8. Quando "Job completed" for exibido, clique em "Object detection" à esquerda da página.

Clique em "start training" e deixe o Edge Impulse treinar um modelo com base nas features geradas.

  • Passo 9. Quando "job done" for exibido, clique em "Model testing" para verificar como o modelo funciona.

Treinamento de Modelo de ML com base em Conjuntos de Dados de Câmera NVIDIA Jetson Personalizados

O Edge Impulse fornece várias maneiras de coletar dados. Aqui vamos personalizar nossas próprias imagens e enviá‑las para o site capturando fotos pela câmera conectada ao Nvidia Jetson Nano.

  • Passo 2. Certifique‑se de que o seu Jetson Nano esteja conectado à Internet e configure o dispositivo no Edge Impulse.

Você pode verificar sua rede com os seguintes comandos:

ping -c 3 www.google.com

Se a rede estiver funcionando bem, o resultado deverá ser semelhante a:

3 packets transmitted, 3 received, 0% packet loss, time 2003ms

A configuração começa a ser executada com o comando abaixo:

edge-impulse-linux

Em seguida, o site solicitará a conta do Edge Impulse.

O conteúdo mostrado como abaixo significa que a conexão está completa. Todos os projetos que salvamos no Edge Impulse podem ser selecionados.

Estamos capturando fotos, portanto aqui precisamos selecionar nossa USB‑Camera para aplicar no site.

Nomeie o dispositivo que queremos conectar ao site

É possível ver claramente que o dispositivo Jetson Nano agora está conectado ao projeto.

  • Passo 3. Volte para a página do Edge Impulse e selecione a coluna "Devices". O Jetson Nano conectado é mostrado como abaixo:
  • Passo 4. Selecione o dispositivo que conectamos ao Edge Impulse e vá para a página "Data acquisation". Clique em "Capture" para tirar uma foto sua ou de outras pessoas. Os dados de imagem precisam ser rotulados como "Hard Hat" e "Head" na seção. Para rotular rapidamente a imagem, é altamente recomendável concluir a aquisição de dados de uma categoria antes de passar para a próxima, ou seja, é recomendável terminar de capturar as imagens de "Hard Hat" e depois passar a capturar as imagens de "Head".

As fotos capturadas serão armazenadas automaticamente em "Data acquistion". Para melhor desempenho do modelo de treinamento, é altamente recomendável coletar o máximo de imagens possível e coletar a mesma quantidade de dados em diferentes categorias.

  • Passo 5. Quando a coleta de dados estiver concluída, vá para "Impulse design"

  • Passo 6. Escolha o bloco de processamento de imagem adequado e o bloco de aprendizado de imagem e salve o impulse.

  • Passo 7. Clique em "image" à esquerda da página.

Configure como "GRB" e clique em "Save Parameters"; a página será redirecionada automaticamente para o site "Generate features".

Em seguida, podemos gerar as features.

  • Passo 8. Quando "Job completed" for exibido, clique em "Object detection" à esquerda da página.

Clique em "start training" e deixe o Edge Impulse treinar um modelo com base nas features geradas.

  • Passo 9. Quando "job done" for exibido, clique em "Model testing" para verificar como o modelo funciona.

É recomendável combinar os métodos que fornecemos acima e verificar o desempenho de cada modelo para ver qual é melhor.

Fazer o deploy do modelo de ML no Jetson Nano

Agora vamos fazer o deploy do modelo de ML treinado no Jetson Nano e aplicar os códigos para fazê‑lo funcionar.

Fazer o deploy do modelo de ML por meio do Edge Impulse Linux CLI

  • Passo 2. Certifique‑se de que o seu Jetson Nano esteja conectado à Internet e configure o dispositivo no Edge Impulse.

!!!Note Se você já conectou o Jetson Nano ao Edge Impulse na seção "ML Model Training based on Custimized NAVDIA Jetson Camera Datasets", este passo pode ser ignorado.

Você pode verificar sua rede com os seguintes comandos:

ping -c 3 www.google.com

Se a rede estiver funcionando bem, o resultado deverá ser semelhante a:

3 packets transmitted, 3 received, 0% packet loss, time 2003ms

A configuração começa a ser executada com o comando abaixo:

edge-impulse-linux

O site solicitará a conta do Edge Impulse.

O conteúdo mostrado como abaixo significa que a conexão está completa. Todos os projetos que salvamos no Edge Impulse podem ser selecionados.

Estamos capturando fotos, portanto aqui precisamos selecionar nossa USB‑Camera para aplicar no site.

Nomeie o dispositivo que queremos conectar ao site

É possível ver claramente que o dispositivo Jetson Nano agora está conectado ao projeto.

  • Passo 3. Baixe o modelo de ML para o Jetson Nano com o código a seguir.
edge-impulse-linux-runner

A conexão bem‑sucedida é mostrada como abaixo e o modelo será ativado automaticamente.

  • Passo 4. Copie o endereço exibido e abra‑o em um navegador.

A detecção será exibida no navegador.

E o resultado dos dados será mostrado como abaixo:

Fazer o deploy do modelo de ML por meio do Linux Python SDK

Neste projeto, vamos aplicar o modelo para exibir a detecção de Hard Hat na tela mostrando "No entry" e "Welcome". O Edge Impulse fornece uma biblioteca que possibilita a execução de modelos de ML e a coleta de dados de sensores em máquinas Linux usando Python. O SDK é open source e está hospedado no GitHub. Você também pode tentar a imagem espelho que já configuramos.

  • Passo 1. Instale a versão mais recente do Python 3(>=3.7) para Linux.

  • Passo 2. Instale o Linux Python SDK com o seguinte comando:

sudo apt-get install libatlas-base-dev libportaudio2 libportaudiocpp0 portaudio19-dev
pip3 install edge_impulse_linux
sudo apt install python3.7-dev
wget -q -0 - https://cdn.edgeimpulse.com/firmware/linux/jetson.sh | bash
  • Passo 4. Baixe o modelo de ML para o Jetson Nano com o comando abaixo:
edge-impulse-linux-runner --download modelfile.eim

Se esta for a primeira conexão entre o Jetson Nano e o Edge Impulse, o site solicitará as informações da sua conta Edge Impulse para fazer login.

!!!Note Isso baixa o arquivo para modelfile.eim, se você quiser alternar de projeto, isso pode ser feito adicionando '--clean'.

python3 hardhat_detectation.py /home/jetson-nano/modelfile.eim
  • Passo 6. O resultado deve ser semelhante a estes:

Ou pode ser uma imagem, implante seu aplicativo de ML para o pipeline de detecção de EPI em 5 minutos? Fique ligado conosco!

Suporte Técnico & Discussão sobre o Produto

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...