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 dos detectores de objectos SOTA
Com base nos resultados da tabela de comparação YOLO , sabemos que o método proposto tem a melhor relação velocidade-precisão em termos globais. 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 em termos de PA. Além disso, o YOLOv7 tem 51,4% de PA a uma taxa de fotogramas de 161 fps, enquanto o PPYOLOE-L com o mesmo PA tem apenas uma taxa de fotogramas de 78 fps. 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 o YOLOv7-X for comparado 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 de computação, o YOLOv7-X reduz 22% dos parâmetros e 8% da computação em comparação com o YOLOv5-X (r6.1), mas melhora o PA em 2,2%(Fonte).
Modelo | Parâmetros (M) |
FLOPs (G) |
Tamanho (píxeis) |
FPS | APtest/ val 50-95 |
APtest 50 |
APtest 75 |
APtest S |
APtest M |
AProva 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 o limite até à nuvem.
Ao contrário dos detectores de objectos tradicionais em tempo real, que se concentram 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".
Caraterísticas principais
O YOLOv7 apresenta várias caraterísticas fundamentais:
-
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.
-
Atribuição dinâmica de etiquetas: A formação do modelo com várias camadas de saída apresenta uma nova questão: "Como atribuir objectivos 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 denominado atribuição de rótulos guiada por chumbo grosso a fino.
-
Escalonamento estendido e composto: 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.
-
Eficiência: O método proposto pelo YOLOv7 pode reduzir eficazmente cerca de 40% dos parâmetros e 50% da computação do detetor de objectos em tempo real topo de gama, 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 obter instruções de instalação e utilização.
Segue-se uma breve descrição dos passos típicos que pode seguir para utilizar o YOLOv7:
-
Visite o repositório GitHub do YOLOv7: https://github.com/WongKinYiu/yolov7.
-
Siga 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.
-
Uma vez concluída a instalação, pode 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.
Tenha em atenção que os passos específicos podem variar consoante o seu caso de utilização específico e o estado atual do repositório YOLOv7. Por conseguinte, recomenda-se vivamente que consulte 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:
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, tais como YOLOX, YOLOv5 e PPYOLOE, tanto na utilização de parâmetros como na velocidade de inferência. As caraterí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, consulte o documento YOLOv7.
Como é que o YOLOv7 melhora em relação aos modelos anteriores 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 etiquetas, que melhoram o processo de formação e aumentam 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. As 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 ?
Atualmente, o 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, pode 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, siga estes passos:
- Clonar o repositório YOLOv7:
- Navegue até ao diretório clonado e instale as dependências:
- Prepare o seu conjunto de dados e configure os parâmetros do modelo de acordo com as instruções de utilização fornecidas no repositório. Para mais orientações, visite o repositório GitHub do YOLOv7 para obter as informações e actualizações mais recentes.
Quais são as principais caraterísticas e optimizações introduzidas no YOLOv7?
O YOLOv7 oferece várias caraterísticas chave que revolucionam a deteção de objectos em tempo real:
- Re-parametrização do modelo: Melhora o desempenho do modelo, optimizando os caminhos de propagação do gradiente.
- Atribuição dinâmica de rótulos: Utiliza um método guiado por chumbo grosso a fino para atribuir alvos dinâmicos para saídas em diferentes ramos, melhorando a precisão.
- Escalonamento estendido e composto: 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 caraterísticas, consulte a secção Descrição geral do YOLOv7.