Introdução geral
O YOLOv12 é um projeto de código aberto desenvolvido pelo usuário do GitHub sunsmarterjie, com foco na tecnologia de detecção de alvos em tempo real. O projeto é baseado na série de estruturas YOLO (You Only Look Once), a introdução do mecanismo de atenção para otimizar o desempenho das redes neurais convolucionais tradicionais (CNN), não apenas na detecção de maior precisão, mas também mantém uma alta velocidade de inferência. O YOLOv12 para uma variedade de cenários, como sistemas de vigilância, direção automatizada e análise de imagens, etc., para fornecer tamanhos de modelo Nano, Pequeno, médio, grande e extragrande para atender a diferentes requisitos de potência de computação e de aplicativos. O projeto está licenciado sob a GNU AGPL-3.0, que permite que os usuários baixem o código gratuitamente e o personalizem de acordo com suas necessidades. A equipe de desenvolvedores inclui pesquisadores da Universidade de Buffalo e da Academia Chinesa de Ciências, e a documentação técnica e o guia de instalação são detalhados, para que os usuários possam começar rapidamente.
Lista de funções
- Detecção eficiente de alvos em tempo realEm uma GPU T4, o YOLOv12-N atinge 40,6% mAP com uma latência de inferência de apenas 1,64 ms.
- Seleção de vários modelosCinco modelos (Nano a Extra-Large) estão disponíveis para acomodar uma ampla variedade de ambientes de hardware, desde dispositivos de baixo consumo de energia até servidores de alto desempenho.
- Otimização do mecanismo de atençãoIntrodução dos módulos Area Attention e R-ELAN para melhorar a precisão da detecção e reduzir a complexidade computacional.
- Modelo de exportaçãoSuporte à exportação de modelos de treinamento para o formato ONNX ou TensorRT para facilitar a implementação em ambientes de produção.
- Treinamento de conjunto de dados personalizadoOs usuários podem treinar modelos com seus próprios conjuntos de dados, adequados para tarefas específicas de detecção de alvos.
- Suporte à visualizaçãoIntegração de ferramentas de supervisão para facilitar a apresentação dos resultados dos testes e a avaliação do desempenho.
Usando a Ajuda
Processo de instalação
Atualmente, o YOLOv12 não tem um pacote PyPI autônomo e precisa ser instalado a partir da fonte do GitHub. Abaixo estão as etapas detalhadas de instalação para Linux (os usuários de Windows ou Mac precisarão ajustar a configuração do ambiente):
- Preparação do ambiente
- Certifique-se de que o Python 3.11 ou posterior esteja instalado em seu sistema.
- Instalar o Git:
sudo apt install git
(exemplo do Ubuntu). - Opcional: instale o driver de GPU NVIDIA e o CUDA (versão recomendada 11.8 ou superior) para acelerar o treinamento e a inferência.
- armazém de clones
Faça o download do repositório YOLOv12 localmente executando o seguinte comando em um terminal:git clone https://github.com/sunsmarterjie/yolov12.git cd yolov12
- Criação de um ambiente virtual
Use o Conda ou o venv para criar ambientes Python separados e evitar conflitos de dependência:conda create -n yolov12 python=3.11 conda activate yolov12
- Instalação de dependências
Instale as dependências necessárias para seu projeto, incluindo PyTorch, flash-attn, supervisão, etc:wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311- linux_x86_64.whl pip install flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl pip install -r requirements.txt pip install -e .
- Verificar a instalação
Execute o seguinte comando para verificar se o ambiente está configurado corretamente:python -c "from ultralytics import YOLO; print('YOLOv12 installed successfully')"
Uso
Treinamento de modelos personalizados
O YOLOv12 permite que os usuários treinem com seus próprios conjuntos de dados, adequados para tarefas de detecção de alvos específicos de cenas. As etapas da operação são as seguintes:
- Preparação do conjunto de dados
- Os dados devem estar no formato YOLO (contendo pastas de imagens e rótulos, rótulos como arquivos .txt, rotulados com categorias de destino e coordenadas de caixa delimitadora).
- estabelecer
data.yaml
especificando o conjunto de treinamento, o caminho do conjunto de validação e o nome da categoria. Exemplo:trem: . /dataset/train/images val: . /dataset/val/images nc: 2 # Número de categorias names: ['cat', 'dog'] # nomes das categorias
- Carregar o modelo e treiná-lo
Use um script Python para carregar o modelo pré-treinado e iniciar o treinamento:from ultralytics import YOLO model = YOLO('yolov12s.pt') # opcional n/s/m/l/x model resultados = model.train(data='path/to/data.yaml', epochs=250, imgsz=640)
épocas
Número de rodadas de treinamento: recomenda-se mais de 250 para obter melhores resultados.imgsz
Tamanho da imagem: Digite o tamanho da imagem, padrão 640x640.
- Veja os resultados do treinamento
Após a conclusão do treinamento, os resultados são salvos na pastacorre/detecta/treina
incluindo os pesos do modelo (melhor.pt
) e matrizes de ofuscação, etc. Execute o código a seguir para ver a matriz de confusão:from IPython.display import Image Image(filename='runs/detect/train/confusion_matrix.png', width=600)
Raciocínio e testes
O modelo treinado pode ser usado para a detecção de alvos em imagens ou vídeos:
- Detecção de imagem única
modelo = YOLO('path/to/best.pt') resultados = model('test.jpg') results.show() # Mostrar os resultados do teste results.save() # Salvar os resultados em runs/detect/predict
- Detecção de vídeo
Use a linha de comando para processar arquivos de vídeo:python app.py --source 'video.mp4' --model 'path/to/best.pt'
- Avaliação de desempenho
O conjunto de validação é avaliado para obter métricas como o mAP:resultados = model.val(data='path/to/data.yaml') print(results.box.map) Saída # mAP@0.5:0.95
Modelo de exportação
Exporte o modelo para um formato utilizável pelo ambiente de produção:
model.export(format='onnx', half=True) # exportado como ONNX, suporta aceleração FP16
Os modelos exportados podem ser implementados em dispositivos de borda ou servidores.
Operação da função em destaque
- Otimização do mecanismo de atenção
O módulo "Area Attention" do YOLOv12 não precisa ser configurado manualmente, mas otimiza automaticamente a extração de recursos durante o treinamento e a inferência para melhorar a detecção de alvos pequenos. Os usuários simplesmente escolhem o tamanho correto do modelo (por exemplo, Nano para dispositivos de baixo consumo de energia) para aproveitar a precisão aprimorada desse recurso. - detecção em tempo real
A inferência é extremamente rápida quando executada em GPUs habilitadas para CUDA. Por exemplo, a execução do modelo YOLOv12-N em uma GPU T4 resulta na detecção de uma única imagem em apenas 1,64 ms, e os usuários podem visualizar o quadro de detecção e o nível de confiança em tempo real usando a ferramenta de supervisão:resultados = model('image.jpg') results.plot() # Exibir imagem anotada
- Adaptação para várias cenas
Ao ajustar o tamanho do modelo e os dados de treinamento, o YOLOv12 pode ser facilmente adaptado a diferentes tarefas. Por exemplo, a detecção de pedestres em um sistema de vigilância ou o reconhecimento de veículos e sinais de trânsito na direção autônoma.