Salta para o conteúdo

YOLOv7: Saco de brindes treinável

O YOLOv7 é um detetor de objectos em tempo real de última geração que ultrapassa todos os detectores de objectos conhecidos, tanto em termos de velocidade como de precisão, na gama de 5 FPS a 160 FPS. Tem a maior precisão (56,8% AP) entre todos os detectores de objectos em tempo real conhecidos com 30 FPS ou mais em GPU V100. Além disso, o YOLOv7 supera outros detectores de objectos como o YOLOR, YOLOX, Scaled-YOLOv4, YOLOv5, e muitos outros em termos de velocidade e precisão. O modelo é treinado no conjunto de dados MS COCO a partir do zero, sem utilizar quaisquer outros conjuntos de dados ou pesos pré-treinados. O código-fonte do YOLOv7 está disponível no GitHub.

Comparação do YOLOv7 com os detectores de objectos SOTA

Comparação dos detectores de objectos SOTA

A partir dos resultados da tabela de comparação YOLO , sabemos que o método proposto tem a melhor relação velocidade-precisão de forma abrangente. Se compararmos o YOLOv7-tiny-SiLU com o YOLOv5-N (r6.1), o nosso método é 127 fps mais rápido e 10,7% mais preciso no AP. Além disso, o YOLOv7 tem 51,4% de AP com uma taxa de fotogramas de 161 fps, enquanto o PPYOLOE-L com o mesmo AP tem apenas 78 fps de taxa de fotogramas. Em termos de utilização de parâmetros, o YOLOv7 é 41% inferior ao PPYOLOE-L. Se compararmos o YOLOv7-X com uma velocidade de inferência de 114 fps com o YOLOv5-L (r6.1) com uma velocidade de inferência de 99 fps, o YOLOv7-X pode melhorar o PA em 3,9%. Se compararmos o YOLOv7-X com YOLOv5-X (r6.1) de escala semelhante, a velocidade de inferência do YOLOv7-X é 31 fps mais rápida. Além disso, em termos de quantidade de parâmetros e computação, o YOLOv7-X reduz 22% dos parâmetros e 8% da computação em comparação com YOLOv5-X (r6.1), mas melhora o PA em 2,2%(Fonte).

Modelo Parâmetros
(M)
FLOPs
(G)
Tamanho
(pixéis)
FPS APtest/ val
50-95
APtest
50
APtest
75
APtest
S
APensa
M
APensa
L
YOLOX-S 9.0M 26.8G 640 102 40.5% / 40.5% - - - - -
YOLOX-M 25.3M 73.8G 640 81 47.2% / 46.9% - - - - -
YOLOX-L 54.2M 155.6G 640 69 50.1% / 49.7% - - - - -
YOLOX-X 99.1M 281.9G 640 58 51.5% / 51.1% - - - - -
PPYOLOE-S 7.9M 17.4G 640 208 43.1% / 42.7% 60.5% 46.6% 23.2% 46.4% 56.9%
PPYOLOE-M 23.4M 49.9G 640 123 48.9% / 48.6% 66.5% 53.0% 28.6% 52.9% 63.8%
PPYOLOE-L 52.2M 110.1G 640 78 51.4% / 50.9% 68.9% 55.6% 31.4% 55.3% 66.1%
PPYOLOE-X 98.4M 206.6G 640 45 52.2% / 51.9% 69.9% 56.5% 33.3% 56.3% 66.4%
YOLOv5-N (r6.1) 1.9M 4.5G 640 159 - / 28.0% - - - - -
YOLOv5-S (r6.1) 7.2M 16.5G 640 156 - / 37.4% - - - - -
YOLOv5-M (r6.1) 21.2M 49.0G 640 122 - / 45.4% - - - - -
YOLOv5-L (r6.1) 46.5M 109.1G 640 99 - / 49.0% - - - - -
YOLOv5-X (r6.1) 86.7M 205.7G 640 83 - / 50.7% - - - - -
YOLOR-CSP 52.9M 120.4G 640 106 51.1% / 50.8% 69.6% 55.7% 31.7% 55.3% 64.7%
YOLOR-CSP-X 96.9M 226.8G 640 87 53.0% / 52.7% 71.4% 57.9% 33.7% 57.1% 66.8%
YOLOv7-tiny-SiLU 6.2M 13.8G 640 286 38.7% / 38.7% 56.7% 41.7% 18.8% 42.4% 51.9%
YOLOv7 36.9M 104.7G 640 161 51.4% / 51.2% 69.7% 55.9% 31.8% 55.5% 65.0%
YOLOv7-X 71.3M 189.9G 640 114 53.1% / 52.9% 71.2% 57.8% 33.8% 57.1% 67.4%
YOLOv5-N6 (r6.1) 3.2M 18.4G 1280 123 - / 36.0% - - - - -
YOLOv5-S6 (r6.1) 12.6M 67.2G 1280 122 - / 44.8% - - - - -
YOLOv5-M6 (r6.1) 35.7M 200.0G 1280 90 - / 51.3% - - - - -
YOLOv5-L6 (r6.1) 76.8M 445.6G 1280 63 - / 53.7% - - - - -
YOLOv5-X6 (r6.1) 140.7M 839.2G 1280 38 - / 55.0% - - - - -
YOLOR-P6 37.2M 325.6G 1280 76 53.9% / 53.5% 71.4% 58.9% 36.1% 57.7% 65.6%
YOLOR-W6 79.8G 453.2G 1280 66 55.2% / 54.8% 72.7% 60.5% 37.7% 59.1% 67.1%
YOLOR-E6 115.8M 683.2G 1280 45 55.8% / 55.7% 73.4% 61.1% 38.4% 59.7% 67.7%
YOLOR-D6 151.7M 935.6G 1280 34 56.5% / 56.1% 74.1% 61.9% 38.9% 60.4% 68.7%
YOLOv7-W6 70.4M 360.0G 1280 84 54.9% / 54.6% 72.6% 60.1% 37.3% 58.7% 67.1%
YOLOv7-E6 97.2M 515.2G 1280 56 56.0% / 55.9% 73.5% 61.2% 38.0% 59.9% 68.4%
YOLOv7-D6 154.7M 806.8G 1280 44 56.6% / 56.3% 74.0% 61.8% 38.8% 60.1% 69.5%
YOLOv7-E6E 151.7M 843.2G 1280 36 56.8% / 56.8% 74.4% 62.1% 39.3% 60.5% 69.0%

Visão geral

A deteção de objectos em tempo real é um componente importante em muitos sistemas de visão por computador, incluindo o seguimento de vários objectos, a condução autónoma, a robótica e a análise de imagens médicas. Nos últimos anos, o desenvolvimento da deteção de objectos em tempo real tem-se centrado na conceção de arquitecturas eficientes e na melhoria da velocidade de inferência de vários CPUs, GPUs e unidades de processamento neural (NPUs). O YOLOv7 suporta dispositivos móveis GPU e GPU , desde a borda até a nuvem.

Ao contrário dos detectores de objectos tradicionais em tempo real que se centram na otimização da arquitetura, o YOLOv7 introduz um enfoque na otimização do processo de formação. Isto inclui módulos e métodos de otimização concebidos para melhorar a precisão da deteção de objectos sem aumentar o custo de inferência, um conceito conhecido como "trainable bag-of-freebies".

Características principais

O YOLOv7 apresenta várias funcionalidades importantes:

  1. Re-parametrização do modelo: O YOLOv7 propõe um modelo re-parametrizado planeado, que é uma estratégia aplicável a camadas em diferentes redes com o conceito de caminho de propagação de gradiente.

  2. Atribuição dinâmica de etiquetas: O treino do modelo com várias camadas de saída apresenta uma nova questão: "Como atribuir alvos dinâmicos para as saídas de diferentes ramos?" Para resolver este problema, o YOLOv7 introduz um novo método de atribuição de rótulos chamado atribuição de rótulos guiada por chumbo grosso a fino.

  3. Escala estendida e composta: O YOLOv7 propõe métodos de "extensão" e "escala composta" para o detetor de objectos em tempo real que podem utilizar eficazmente os parâmetros e a computação.

  4. Eficiência: O método proposto pelo YOLOv7 pode efetivamente reduzir cerca de 40% dos parâmetros e 50% da computação do detetor de objectos em tempo real mais avançado, e tem uma velocidade de inferência mais rápida e uma maior precisão de deteção.

Exemplos de utilização

No momento em que este artigo foi escrito, Ultralytics não suporta atualmente os modelos YOLOv7. Por conseguinte, os utilizadores interessados em utilizar o YOLOv7 terão de consultar diretamente o repositório GitHub do YOLOv7 para obterem instruções de instalação e utilização.

Segue-se uma breve descrição dos passos típicos que poderás seguir para utilizar o YOLOv7:

  1. Visita o repositório GitHub do YOLOv7: https://github.com/WongKinYiu/yolov7.

  2. Segue as instruções fornecidas no ficheiro README para a instalação. Normalmente, isso envolve a clonagem do repositório, a instalação das dependências necessárias e a configuração de quaisquer variáveis de ambiente necessárias.

  3. Quando a instalação estiver concluída, podes treinar e utilizar o modelo de acordo com as instruções de utilização fornecidas no repositório. Normalmente, isto envolve a preparação do conjunto de dados, a configuração dos parâmetros do modelo, o treino do modelo e, em seguida, a utilização do modelo treinado para efetuar a deteção de objectos.

Tem em atenção que os passos específicos podem variar consoante o teu caso de utilização específico e o estado atual do repositório YOLOv7. Por isso, recomenda-se vivamente que consultes diretamente as instruções fornecidas no repositório GitHub do YOLOv7.

Lamentamos qualquer inconveniente que isto possa causar e esforçar-nos-emos por atualizar este documento com exemplos de utilização para Ultralytics assim que o suporte para YOLOv7 for implementado.

Citações e agradecimentos

Gostaríamos de agradecer aos autores do YOLOv7 pelas suas contribuições significativas no domínio da deteção de objectos em tempo real:

@article{wang2022yolov7,
  title={{YOLOv7}: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors},
  author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
  journal={arXiv preprint arXiv:2207.02696},
  year={2022}
}

O artigo original do YOLOv7 pode ser encontrado no arXiv. Os autores tornaram o seu trabalho publicamente disponível e a base de código pode ser acedida no GitHub. Agradecemos os seus esforços para fazer avançar o campo e tornar o seu trabalho acessível à comunidade em geral.

FAQ

O que é o YOLOv7 e porque é considerado um avanço na deteção de objectos em tempo real?

O YOLOv7 é um modelo avançado de deteção de objectos em tempo real que atinge uma velocidade e precisão sem paralelo. Ultrapassa outros modelos, como o YOLOX, YOLOv5 e PPYOLOE, tanto na utilização de parâmetros como na velocidade de inferência. As características distintivas do YOLOv7 incluem a re-parametrização do modelo e a atribuição dinâmica de etiquetas, que optimizam o seu desempenho sem aumentar os custos de inferência. Para mais detalhes técnicos sobre a sua arquitetura e métricas de comparação com outros detectores de objectos de última geração, consulta o documento YOLOv7.

Como é que o YOLOv7 melhora em relação aos modelos anteriores de YOLO como o YOLOv4 e YOLOv5?

O YOLOv7 introduz várias inovações, incluindo a re-parametrização do modelo e a atribuição dinâmica de rótulos, que melhoram o processo de treino e a precisão da inferência. Em comparação com YOLOv5, o YOLOv7 aumenta significativamente a velocidade e a precisão. Por exemplo, o YOLOv7-X melhora a precisão em 2,2% e reduz os parâmetros em 22% em comparação com YOLOv5-X. Comparações detalhadas podem ser encontradas na tabela de desempenho YOLOv7 comparação com detectores de objectos SOTA.

Posso utilizar o YOLOv7 com as ferramentas e plataformas Ultralytics ?

Até ao momento, Ultralytics não suporta diretamente o YOLOv7 nas suas ferramentas e plataformas. Os utilizadores interessados em utilizar o YOLOv7 têm de seguir as instruções de instalação e utilização fornecidas no repositório GitHub do YOLOv7. Para outros modelos de última geração, podes explorar e treinar utilizando ferramentas Ultralytics como Ultralytics HUB.

Como é que instalo e executo o YOLOv7 para um projeto de deteção de objectos personalizado?

Para instalar e executar o YOLOv7, segue estes passos:

  1. Clona o repositório YOLOv7:
    git clone https://github.com/WongKinYiu/yolov7
    
  2. Navega até ao diretório clonado e instala as dependências:
    cd yolov7
    pip install -r requirements.txt
    
  3. Prepara o teu conjunto de dados e configura os parâmetros do modelo de acordo com as instruções de utilização fornecidas no repositório. Para mais orientações, visita o repositório GitHub do YOLOv7 para obteres as informações e actualizações mais recentes.

Quais são as principais características e optimizações introduzidas no YOLOv7?

O YOLOv7 oferece várias características chave que revolucionam a deteção de objectos em tempo real:

  • Re-parametrização do modelo: Melhora o desempenho do modelo otimizando os caminhos de propagação do gradiente.
  • Atribuição dinâmica de rótulos: Usa um método guiado de chumbo grosso a fino para atribuir alvos dinâmicos para saídas em diferentes ramos, melhorando a precisão.
  • Escala estendida e composta: Utiliza parâmetros e computação de forma eficiente para escalar o modelo para várias aplicações em tempo real.
  • Eficiência: Reduz a contagem de parâmetros em 40% e a computação em 50% em comparação com outros modelos de última geração, ao mesmo tempo que atinge velocidades de inferência mais rápidas. Para mais informações sobre estas características, consulta a secção Visão geral do YOLOv7.


Criado em 2023-11-12, Atualizado em 2024-07-04
Autores: glenn-jocher (8), sergiuwaxmann (1)

Comentários