
Introdução
A detecção de objetos é um campo fascinante que ganhou muita atenção nos últimos anos devido à sua ampla gama de aplicações em áreas como carros autônomos, sistemas de segurança e assistência médica. YOLO11 (You Only Look Once versão 11) é um modelo de detecção de objetos de última geração que se tornou cada vez mais popular devido à sua alta precisão e velocidade de processamento rápida. Neste guia para iniciantes, exploraremos as etapas envolvidas no treinamento de um modelo YOLOv"11" do zero, incluindo preparação de dados, configuração do modelo e treinamento. Seja você um iniciante em aprendizado profundo ou um praticante experiente, este guia fornecerá uma base sólida para treinar seu próprio modelo YOLO11 e explorar o campo emocionante da detecção de objetos.
Sobre o Projeto Furbot
Com a introdução da Base Nacional Comum Curricular (BNCC), várias discussões ocorreram para identificar qual a melhor maneira de efetivar a inclusão dos fundamentos da Ciência da Computação, especificamente relacionados ao Pensamento Computacional (PC), na educação básica. Durante os últimos doze anos, uma tecnologia para o desenvolvimento de habilidades de PC em cursos de graduação foi desenvolvida e aprimorada, chamada Furbot, que há quatro anos se tornou um jogo e foi aplicada com sucesso no Ensino Fundamental I em escolas públicas estaduais da região de Blumenau. Assim, o jogo Furbot, desenvolvido em Unity 2D, tem como objetivo fazer com que o jogador saia de um ponto de origem e chegue a um ponto de destino, guiando um robô por um caminho e desviando de obstáculos usando comandos de programação.
Neste exemplo, pretende-se substituir as Flechas acimas por uma Flechas especializadas e já disponíveis no mundo RoboFlow. Tentou-se treinar as acima, mas o fundo branco de cada uma delas foi uma preocupação.
Atualmente as mesmas são capturadas por uma câmera do ESP32CAM e enviadas para o serviços da AMAZON para reconhecimento, pretende-se substituir o ESP32CAM e o serviço da AMAZON por um MILK-V com Rede Neural treinada e uma câmara USB acoplada a ele.
O Furbot sofreu mais transformações (não especificadas no HackAday), entre elas, uma aplicação python rodando em um PC o qual captura uma imagem via Wifi da câmera do ESP32CAM e detecta as bordas do tapete. Pretende-se então portar também para o Milk-v Duo S a aplicação python.
OpenCV rodando no MILK-V Duo S
Para treinar um modelo de detecção de objetos YOLO11, você deve ter um DataSet de imagens anotadas que indiquem a localização dos objetos que você deseja que o modelo detecte. Embora DataSet de código aberto como COCO e Pascal VOC estejam disponíveis, um DataSet personalizado pode ser mais preciso para seu caso de uso específico. Dividir o DataSet em conjuntos de treinamento e validação também é uma etapa crucial para garantir a precisão e a confiabilidade do seu modelo.
Este blog tem como objetivo orientá-lo por todo o processo de treinamento e avaliação do seu próprio modelo YOLO11. Forneceremos uma introdução aos recursos do YOLO11 e discutiremos como anotar e preparar seu DataSet para treinamento. Em seguida, nos aprofundaremos no aspecto importante do treinamento do modelo, fornecendo instruções passo a passo para treinar seu modelo YOLO11 do zero. Por fim, explicaremos como avaliar o desempenho do seu modelo, fornecendo todo o conhecimento necessário para começar a detecção de objetos usando o YOLOv11. Seja você novo na detecção de objetos ou esteja procurando melhorar suas habilidades, este guia abrangente o equipará com as ferramentas necessárias para treinar um modelo de detecção de objetos YOLO11 com confiança.
Introdução
YOLOv11 "é" a versão mais recente e melhor da família YOLO (You Only Look Once) de modelos de detecção de objetos em tempo real. Desenvolvido por Glenn Jocher e a equipe da Ultralytics, o YOLOv11 representa uma revisão completa de seus predecessores e ostenta melhorias significativas em velocidade e precisão. Na verdade, o YOLO11 alcançou resultados de última geração em detecção de objetos em uma variedade de DataSet, incluindo os conhecidos benchmarks COCO e Pascal VOC.
Então o que torna o YOLOv11 tão especial? Sua arquitetura! O YOLO11 alavanca uma nova rede de backbone chamada CSPDarknet, que usa conexões parciais entre estágios para melhorar o fluxo de informações e a reutilização de recursos. Além disso, ele integra técnicas de ponta como Módulos de Atenção Espacial e funções de ativação Swish para aumentar ainda mais a precisão da detecção de objetos. Tudo isso mantendo velocidades de inferência em tempo real de até 140 quadros por segundo em uma única GPU, tornando-o um dos modelos de detecção de objetos mais rápidos e precisos que existem. Se você está procurando desenvolver aplicativos em campos como veículos autônomos, robótica ou sistemas de vigilância, o YOLO11 definitivamente vale uma olhada mais de perto.
DataSet e ferramenta de anotação
A base de qualquer projeto de detecção de objetos bem-sucedido é um DataSet bem curado. O DataSet fornece ao modelo as informações necessárias para reconhecer e localizar objetos com precisão. Portanto, antes de mergulhar no treinamento do modelo, é crucial reunir ou criar um bom DataSet que cubra uma ampla gama de cenários e variações que você prevê que o modelo encontrará no mundo real.
DataSet personalizados desempenham um papel crítico na obtenção de alta precisão e especificidade em tarefas de detecção de objetos. Embora vários DataSet de código aberto estejam disponíveis, como o DataSet COCO e o DataSet EgoHands, criar um DataSet personalizado que atenda ao seu caso de uso específico pode ser mais eficaz. Ferramentas de anotação como LabelImg e Roboflow podem ajudar na criação de tal DataSet No intitulado “Construindo modelos precisos de detecção de objetos com RetinaNet: um guia passo a passo abrangente” , utilizei o LabelImg para anotação de imagem. No entanto, neste blog, demonstrarei como usar o Roboflow, uma ferramenta de anotação poderosa que pode agilizar o processo de preparação do DataSet.
Roboflow é uma plataforma de gerenciamento de dados tudo-em-um projetada para tarefas de visão computacional, como detecção de objetos, classificação de imagens e segmentação. Ela oferece uma gama de ferramentas para anotação de imagens, geração de DataSet e implantação de modelos. Com suas integrações com frameworks populares de aprendizado profundo como TensorFlow e PyTorch, o Roboflow facilita o treinamento de modelos usando seu DataSet personalizado.
Um dos recursos de destaque do Roboflow é sua ferramenta intuitiva de anotação de imagens baseada na web. A ferramenta permite que você rotule imagens com caixas delimitadoras, polígonos e outras formas que indicam a localização de objetos na imagem. Sua interface amigável e eficiência facilitam a rotulagem de grandes DataSet de forma rápida e precisa. Além disso, o Roboflow oferece vários recursos para gerenciar DataSet, incluindo aumento de dados, limpeza de dados e exportação de dados. Ele também fornece opções de pré-processamento, como redimensionamento e normalização, que podem melhorar o desempenho do modelo.
No geral, o Roboflow é uma ferramenta excelente para preparar e gerenciar DataSet personalizados para tarefas de visão computacional. Seus recursos abrangentes e interface amigável o tornam ideal tanto para iniciantes quanto para profissionais experientes. Para começar a usar o Roboflow, crie uma conta e configure um novo espaço de trabalho para começar a criar novos projetos.
Após criar um novo projeto no Roboflow, você pode começar a carregar as imagens que deseja anotar. O processo é simples e fácil de seguir. Você pode carregar imagens diretamente do seu computador ou de serviços de armazenamento em nuvem, como Google Drive ou Dropbox. Depois que as imagens forem carregadas, você pode começar a anotá-las usando as poderosas ferramentas de anotação da plataforma. Um exemplo do processo de upload pode ser visto na imagem abaixo:
Após carregar suas imagens no Roboflow, o próximo passo é atribuí-las para anotação. A anotação é um processo crucial na criação de um DataSet personalizado, e o Roboflow facilita isso com sua interface intuitiva. Basta desenhar caixas delimitadoras ao redor dos objetos de interesse, e a ferramenta salvará automaticamente as anotações. Depois de anotar suas imagens, uma caixa de diálogo aparecerá, permitindo que você divida as imagens em conjuntos de treinamento, validação e teste. É recomendável ter pelo menos 60–70% dos seus dados como dados de treinamento, pois isso fornece ao modelo exemplos suficientes para aprender. No entanto, a divisão pode ser ajustada para atender às suas necessidades específicas. Com a ferramenta de anotação do Roboflow e os recursos de gerenciamento de dados fáceis de usar, criar um DataSet personalizado para tarefas de detecção de objetos nunca foi tão fácil.
Após concluir o processo de anotação, você pode criar um DataSet dividindo as imagens anotadas em conjuntos de treinamento, validação e teste (train, valid, test):

Para fazer o treinando, foi baixado um projeto do RoboFlow Universe com as imagens já prontas para treinamento.
recognition-of-direction-arrows-for-autonomus-car-bvimf
recognition of direction arrows for autonomus car Object Detection Dataset by Florian Demolder
É hora de exportar para seu IDE local ou Google Colab.
train-yolo11-object-detection-on-custom-dataset.ipynb - Colab
Durante o processo de geração, você pode escolher as etapas de pré-processamento e aumento de acordo com seus requisitos. Por exemplo, você pode redimensionar as imagens ou aplicar técnicas de aumento de dados, como rotação ou inversão, para aumentar a diversidade do DataSet. Assim que o processo de geração for concluído, você pode exportar facilmente seu DataSet e usá-lo para treinar seu modelo de detecção de objetos.
OPCIONAL, POIS TEMOS QUASE 700 IMAGENS
OPCIONAL, POIS TEMOS QUASE 700 IMAGENS
OPCIONAL, POIS TEMOS QUASE 700 IMAGENS
OPCIONAL, POIS TEMOS QUASE 700 IMAGENS
OPCIONAL, POIS TEMOS QUASE 700 IMAGENS
OPCIONAL, POIS TEMOS QUASE 700 IMAGENS

Após gerar uma nova versão do DataSet, o próximo passo é exportá-lo em um formato adequado para treinar o modelo. O Roboflow oferece a flexibilidade de exportar o DataSet em vários formatos, incluindo o formato YOLO11 Pytorch (.pt), que usaremos neste exemplo. Este formato é amplamente usado para treinar modelos de detecção de objetos e é compatível com estruturas populares de aprendizado profundo (Deep Learning), como o PyTorch. Depois de selecionar o formato de exportação desejado, o Roboflow gerará um link de download para o DataSet exportado. Você pode usar este link para baixar o DataSet para seu IDE local ou Google Colab para processamento e treinamento adicionais.

É crucial salvar o link de download gerado após exportar seu DataSet em um arquivo de texto para fácil acesso, especialmente se você planeja usá-lo em um notebook do Google Colab.
Escolha YOLO11 e depois renomeie para train_data.zip para facilitar o entendimento abaixo.
Agora que preparamos nosso DataSet, é hora de mergulhar na parte emocionante do processo de detecção de objetos: treinar o modelo. Esta etapa é onde o algoritmo aprende a identificar e classificar objetos em imagens, permitindo que ele faça previsões precisas em dados não vistos. Então, vamos começar!
Treinamento de modelo
Neste artigo, usaremos o Colab para treinar o modelo de detecção de objetos YOLO11n em nosso DataSet personalizado. O Google Colab é uma plataforma poderosa e fácil de usar para treinar modelos de aprendizado profundo. O primeiro passo para começar a usar o YOLOv11s no Colab é clonar o repositório GitHub do YOLO11. Este repositório contém todo o código e os arquivos de configuração necessários para treinar o modelo. A clonagem do repositório pode ser feita executando um comando simples no notebook do Colab:
train-yolo11-object-detection-on-custom-dataset.ipynb - Colab
Comece instalando as ferramentas da ULTRALYTICS
%pip install "ultralytics<=8.3.40" supervision roboflowimport ultralyticsultralytics.checks()

Após clonar o repositório YOLOv11s GitHub, precisamos configurar o ambiente e configurar o modelo para treinamento. Isso envolve várias etapas, como instalar as dependências necessárias, configurar os caminhos para o DataSet e os arquivos de configuração do modelo e especificar os parâmetros de treinamento, como tamanho do lote, taxa de aprendizado e número de épocas.
Agora é hora de fazer o "Unzip" do arquivo ZIP
!unzip train_data.zip
Iniciar o treinamento
Consulte o data.yaml e você verá o seguinte conteúdo, são 4 conjuntos de imagens que devem ser treinadas, que são as flechas.
Agora temos que mandar treinar, execute o Script Python abaixo e aguarde o treinamento.
!yolo task=detect mode=train model=yolo11n.pt data=data.yaml epochs=200 imgsz=640
Neste comando, podemos especificar os seguintes parâmetros:
imgsz
: O tamanho das imagens de entrada durante o treinamento. Aqui, estamos configurando para 640x640 pixels.epochs
: O número de épocas para treinar. Aqui, estamos definindo para 100.data
: O local do arquivo YAML do DataSet que criamos no Roboflow.- mode: operação treino
model
: modelo base de treino
Depois que executarmos esse comando, o processo de treinamento começará e poderemos monitorar o progresso no notebook Colab.
last.pt
e best.pt
.
last.pt
é o último checkpoint salvo do modelo. Ele é atualizado após cada época de treinamento e contém os pesos do modelo naquele ponto do processo de treinamento. Este checkpoint pode ser usado para retomar o treinamento de onde ele foi interrompido ou para avaliar o desempenho do modelo em uma determinada época.
best.pt
é o ponto de verificação que tem a melhor perda de validação até agora. Ele é atualizado sempre que a perda de validação melhora e contém os pesos do modelo naquele ponto. Este ponto de verificação é útil para seleção de modelo, pois representa o ponto no processo de treinamento em que o modelo teve o melhor desempenho no conjunto de validação. Ambos last.pt
e best.pt
podem ser usados para inferência após a conclusão do processo de treinamento.
O arquivo .pt
pode ser baixado do Google Colab para sua máquina local apenas clicando sobre o mesmo.
Este arquivo contém os pesos do modelo de melhor desempenho durante o treinamento. É importante salvar este arquivo em um local seguro, pois ele representa o modelo treinado e pode ser usado para fazer previsões em novas imagens ou para continuar treinando o modelo mais tarde.
Se COLAB venceu, faça treinamento no ambiente DuoCPU do DOCKER, mas seja paciente com a velocidade.
HORA DE PORTAR PARA O MILK-V :) - COLAB
Localização do código Duo256M yolov8: sample_yolov8.cpp
(o mesmo deve ser compilado para o DUO 256)
Método de compilação
Consulte o método do link Introdução para compilar o programa "sample".
Não esquecer de mudar a linha
yolov8_param.cls = XXX;
onde XXX é o número de CLASSES, no caso acima 3, pois são 3 espécies de BUGGIO.
Após a conclusão da compilação, o programa sample_yolov8
que precisamos será gerado no diretório sample/cvi_yolo/
COLAB - do .PT para .CVIMODEL
Após a conclusão da compilação, um arquivo chamado best_int8_class.cvimodel será gerado.
Transferindo para Duo 256
Copie o sample_yolov8 compilado, o cvimodel e a imagem jpg a ser inferida, para a placa e execute o programa binário:
scp best_int8_class.cvimodel root@192.168.42.1:/root/
Execute o seguinte comando:
./sample_yolov8 ./yolov8n_cv181x_int8_sym.cvimodel Ades_1-5_jpg.rf.a6adaadb480fc623707d0b53172472c3.jpg
Exemplo de uma imagem a ser reconhecida
Testes
Sobre a SMARTCORE
A SMARTCORE FORNECE CHIPS E MÓDULOS PARA IOT, COMUNICAÇÃO WIRELESS, BIOMETRIA, CONECTIVIDADE, RASTREAMENTO E AUTOMAÇÃO. NOSSO PORTFÓLIO INCLUI MODEM 2G/3G/4G/NB-IOT, SATELITAL, MÓDULOS WIFI, BLUETOOTH, GPS, SIGFOX, LORA, LEITOR DE CARTÃO, LEITOR QR CCODE, MECANISMO DE IMPRESSÃO, MINI-BOARD PC, ANTENA, PIGTAIL, BATERIA, REPETIDOR GPS E SENSORES