O reconhecimento de imagem do YOLOv8 é excelente, mas treinar o modelo é uma tarefa importante que você não deve ignorar.
YOLOv8 é um algoritmo de detecção de objetos em tempo real amplamente utilizado no campo de detecção de objetos. Faz parte da série You Only Look Once (YOLO) desenvolvida pela Ultralytics. O algoritmo rastreia, detecta, segmenta instâncias, estima poses e classifica objetos em imagens e vídeos. Ele pretende ser mais rápido e mais preciso do que seus algoritmos predecessores.
Usar o YOLOv8 em conjuntos de dados experimentais como CIFAR-10 e CIFAR-100 geralmente é mais fácil para projetos de prova de conceito (POC) do que em conjuntos de dados do mundo real que exigem conjuntos de dados personalizados.
Este tutorial o guiará pelas etapas envolvidas no treinamento do YOLOv8 em dados personalizados.
Configurando o ambiente Python
Comece instalando o ambiente de desenvolvimento do projeto, seguindo as instruções abaixo.
- Vá para o terminal e crie um novo diretório chamado projeto yolov8:
mkdir yolov8project
- Navegue até o diretório do projeto e criar um ambiente virtual:
cd yolov8project
python -m venv env - Em seguida, ative o ambiente virtual.
Para executar seu código, você precisa instalar o Ultralytics, uma biblioteca para detecção de objetos e segmentação de imagens. Também é uma dependência do YOLOv8. Instale-o usando pip executando o comando abaixo.# No Windows
env/Scripts/ativar# No Linux/macOS
fonte env/bin/ativarpip instalar ultralíticos
- Este comando instala o modelo pré-treinado do YOLOv8, yolov8n.pt. Teste o modelo executando os comandos abaixo para fazer uma detecção com pesos pré-treinados em sua imagem ou vídeo escolhido, respectivamente, usando YOLOv8.
Se tudo funcionar perfeitamente, os resultados estarão disponíveis no projeto yolov8 diretório no executa/detecta/exp subdiretório.#detecção de imagem
yolo task=modo de detecção=modelo de previsão=yolov8n.pt source="caminho/para/imagem.png"#detecção de vídeo
yolo task=modo de detecção=modelo de previsão=yolov8n.pt source="caminho/para/vídeo.mp4"
Preparando seu conjunto de dados personalizado
As etapas para preparar seu conjunto de dados personalizado incluem coleta de dados, rotulagem de dados e divisão de dados (treinamento, teste, validação).
Coleção de dados
Este é o processo de coleta de um conjunto de imagens que possuem os objetos que você deseja detectar. Certifique-se de usar imagens de alta qualidade, em foco e os objetos são claramente visíveis. Você pode usar uma variedade de ferramentas para coletar imagens, como Google Images, Flickr ou sua própria câmera. Se você não tiver um conjunto de dados de imagem, use o conjunto de dados do imagens abertas base de dados. Este artigo usará a imagem de segurança do canteiro de obras conjunto de dados do Kaggle.
Rotulagem de dados
Depois de coletar suas imagens, você precisa rotulá-las. Isso significa identificar os objetos em cada imagem e suas caixas delimitadoras. Existem várias ferramentas disponíveis para ajudá-lo a rotular seus dados, como LabelImg, CVAT e Roboflow. Essas ferramentas são gratuitas para uso.
Dividindo os dados
Para treinar modelos de aprendizado de máquina, você precisa dividir seus dados em conjuntos de treinamento e teste. Tente usar uma taxa de divisão de 70% a 30% ao usar grandes quantidades de dados. Caso contrário, atenha-se a 80%-20% para evitar o overfitting ou underfitting do seu modelo.
Usar pastas divididas, para dividir aleatoriamente seus dados nos conjuntos de treinamento, teste e validação com a taxa de divisão desejada.
Configurando YOLOv8 para seu conjunto de dados
Depois de rotular seus dados, prossiga para configurar o YOLOv8 para seu conjunto de dados personalizado. Isso envolve a criação de um arquivo de configuração que especifica o seguinte:
- O caminho para seus dados de treinamento.
- O caminho para seus dados de validação.
- O número de classes que você deseja detectar.
Crie um arquivo config.yaml para armazenar a configuração:
caminho:(conjunto de dadosdiretóriocaminho)
trem:(tremconjunto de dadospastacaminho)
teste:(testeconjunto de dadospastacaminho)
válido:(validaçãoconjunto de dadospastacaminho)# Aulas
nc:5# substitua com base no número de classes do seu conjunto de dados
# nomes de classe
# substitua todos os nomes de classes pelos nomes de suas próprias classes
nomes:['classe 1','classe2','classe3','class4','classe5']
Criar o arquivo de configuração é uma maneira útil de estruturar e armazenar os parâmetros cruciais para seu modelo de visão computacional. Certifique-se de atualizar o arquivo config.yaml de acordo com a natureza e estrutura do seu conjunto de dados.
Certifique-se de usar os caminhos corretos para seus conjuntos de dados, pois o treinamento do modelo depende totalmente do arquivo de configurações.
Treinamento YOLOv8 em dados personalizados
Depois de criar o arquivo de configuração, comece a treinar YOLOv8. Use a ferramenta de linha de comando YOLOv8 para treinar seu modelo. A ferramenta de linha de comando usa vários parâmetros, como o caminho para o arquivo de configuração, o número de épocas e o tamanho da imagem da seguinte forma:
yolo task=modo de detecção=modelo de trem=yolov8n.pt data=caminho/para/config.yaml epochs=10 imgsz=640
Existem várias partes para este comando.
tarefa define o tipo de tarefa: detectar, segmentar ou classificar. modo representa uma ação: treinar, prever, avaliar, exportar, rastrear ou comparar. modelo é o modelo a usar, neste caso, yolov8n.pt. Você também pode usar yolov8s/yolov8l/yolov8x.
épocas representa o número de rodadas de treinamento (10). imgsz representa o tamanho da imagem (640). O tamanho da imagem deve sempre ser definido como um múltiplo de 32.
Aqui está um exemplo da saída que você pode esperar:
O tempo usado para treinamento depende do tamanho do seu conjunto de dados, do número de épocas e do número de classes que você deseja detectar. Após a conclusão do processo de treinamento, você terá um modelo YOLOv8 treinado que usará para detectar objetos em imagens e vídeos.
Após a conclusão do treinamento, faça inferência com os novos pesos, best.pt
yolo task=detect mode=predict model="runs/train/weights/best.pt" source="image.png"
Navegue até o corridas/treino/exp/pesos/best.pt diretório para acessar os pesos treinados customizados. YOLOv8 terá armazenado a imagem prevista no executa/detecta/exp subdiretório.
Avaliando o desempenho do modelo
Você pode avaliar o desempenho do modelo YOLOv8 usando o seguinte comando que avalia o modelo em um conjunto de imagens de teste:
yolo val model=yolov8n.pt data=path/to/config.yaml batch=1 imgsz=640
Os resultados esperados são os seguintes:
O processo de avaliação gerará várias métricas, como precisão, recall e pontuação F1. A métrica de precisão mede a porcentagem de objetos que são detectados corretamente. A métrica de rechamada mede a porcentagem de objetos que o YOLOv8 detecta. A pontuação F1 é uma média ponderada das métricas de precisão e revocação.
Implantando seu modelo YOLOv8 personalizado
Teste o desempenho do seu modelo YOLOv8.
yolo detect predict model=path/to/best.pt source='path/to/image.jpg'
A saída é a seguinte:
Em seguida, salve os pesos do modelo em um arquivo.
yolo export model=caminho/para/melhor.pt formato=onnx
Use o arquivo para carregar o modelo em seu aplicativo e use-o para detectar objetos em tempo real. Se você implantar o modelo em um serviço na nuvem, use o serviço de nuvem para detectar objetos em imagens e vídeos que estão no serviço.
YOLOv8 Takeaway
A equipe da Ultralytics melhorou continuamente os modelos da série YOLO. Isso os tornou líderes do setor em tecnologia de detecção de objetos e no campo da visão computacional.
O YOLOv8 é um modelo aprimorado que você pode usar para lidar com muitos tipos de projetos de visão computacional.