A deteccção automatizada de Equipamentos de Proteção Individual (EPIs) é uma aplicação crítica de visão computacional em ambientes industriais e canteiros de obras. Utilizando o Safety-Helmet-Wearing-Dataset, este artigo analisa o desempenho de três variações do algoritmo YOLOv3, oferecendo métricas detalhadas e diretrizes para a escolha do modelo ideal conforme as restrições de hardware e requisitos de precisão.
Arquiteturas de Redes Neurais Avaliadas
O projeto disponibiliza três backbones distintos para o extrator de características, permitindo um equilíbrio entre custo computacional e acurácia:
- YOLOv3-Darknet53: Focado em alta precisão, utiliza uma rede profunda (Darknet53) para extrair detalhes complexos da imagem.
- YOLOv3-MobileNet1.0: Uma versão otimizada que substitui convoluções padrão por convoluções separáveis em profundidade, visando um equilíbrio entre peso e performance.
- YOLOv3-MobileNet0.25: Versão ultra-leve, projetada especificamente para dispositivos com recursos extremamente limitados.
Análise de Desempenho e Métricas
Os testes foram conduzidos em um ambiente controlado utilizando uma GPU NVIDIA GTX 1080Ti. Os resultados destacam as discrepâncias entre precisão e velocidade de processamento.
1. Precisão de Detecção (mAP)
| Arquitetura | mAP @ 0.5 | Acurácia de Identificação | Falsos Positivos |
|---|---|---|---|
| Darknet53 | 92.3% | 96.7% | 3.2% |
| MobileNet1.0 | 88.6% | 94.2% | 4.8% |
| MobileNet0.25 | 82.1% | 90.5% | 7.5% |
2. Eficiência Computacional
| Arquitetura | Latência (ms) | FPS (Frames por Segundo) | Tamanho do Modelo |
|---|---|---|---|
| Darknet53 | 45ms | 22.2 | 236MB |
| MobileNet1.0 | 18ms | 55.6 | 32MB |
| MobileNet0.25 | 8ms | 125.0 | 8MB |
Implementação e Execução
Para reproduzir os testes ou integrra os modelos em uma aplicação, é necessário configurar o ambiente com as bibliotecas GluonCV e MXNet.
# Instalação das dependências necessárias
pip install mxnet-cu101 gluoncv opencv-python
Abaixo, um exemplo de script para realizar a inferência utilizando o modelo de maior precisão:
import gluoncv as gcv
from gluoncv.utils import viz
# Configuração do modelo e parâmetros
model_type = 'yolo3_darknet53_voc'
confidence_lvl = 0.45
# Carregamento do modelo pré-treinado
detector = gcv.model_zoo.get_model(model_type, pretrained=True)
# Execução da predição em uma imagem local
image_path = 'input_worker.jpg'
x, img = gcv.data.transforms.presets.yolo.load_test(image_path, short=416)
class_IDs, scores, bounding_boxes = detector(x)
# Visualização dos resultados (Capacete vs Sem Capacete)
viz.plot_bbox(img, bounding_boxes[0], scores[0], class_IDs[0], class_names=detector.classes)
Guia de Seleção de Modelo por Cenário
Servidores e Workstations (Alto Desempenho)
Recomendação: Darknet53.
Ideal para sistemas de monitoramento centralizados onde múltiplas câmeras IP enviam streams de vídeo para um servidor robusto. A alta precisão minimiza alarmes falsos em auditorias de segurança rigorosas.
Edge Computing e Câmeras Inteligentes
Recomendação: MobileNet1.0.
Indicado para gateways de IoT ou câmeras inteligentes que realizam o processamento localmente. Oferece um throughput suficiente para vídeo em tempo real sem exigir hardware de nível de servidor.
Dispositivos Móveis e Baixo Consumo
Recomendação: MobileNet0.25.
Essencial para aplicações rodando em smartphones antigos, tablets industriais ou dispositivos alimentados por bateria. Embora a precisão seja menor, a velocidade permite uma resposta quase instantânea em inspeções manuais.
Estratégias de Otimização
Para desenvolvedores que buscam extrair o máximo de performance, as seguintes técnicas são recomendadas:
- Ajuste Fino (Fine-tuning): Treinar o modelo por mais 50 épocas utilizando dados específicos da iluminação do local de trabalho pode reduzir drasticamente a taxa de erro.
- Redimensionamento Dinâmico: Alterar a resolução de entrada para 320x320 em modelos MobileNet para ganhar até 20% de velocidade extra em hardware limitado.
- Exportação para ONNX: Converter os pesos do MXNet para o formato ONNX para utilizar runtimes como TensorRT ou OpenVINO, otimizando a inferência em GPUs NVIDIA ou CPUs Intel.