Overslaan naar inhoud

YOLOv7: Trainbare zak met gratis spullen

YOLOv7 is een geavanceerde realtime objectdetector die alle bekende objectdetectoren overtreft in zowel snelheid als nauwkeurigheid in het bereik van 5 FPS tot 160 FPS. Het heeft de hoogste nauwkeurigheid (56,8% AP) van alle bekende realtime objectdetectors met 30 FPS of hoger op GPU V100. Bovendien presteert YOLOv7 beter dan andere objectdetectors zoals YOLOR, YOLOX, Scaled-YOLOv4, YOLOv5 en vele andere in snelheid en nauwkeurigheid. Het model is vanaf nul getraind op de MS COCO dataset zonder gebruik te maken van andere datasets of vooraf getrainde gewichten. De broncode voor YOLOv7 is beschikbaar op GitHub.

YOLOv7 vergelijking met SOTA object detectors

Vergelijking van SOTA-objectdetectoren

Uit de resultaten in de vergelijkingstabel YOLO weten we dat de voorgestelde methode de beste afweging tussen snelheid en nauwkeurigheid heeft. Als we YOLOv7-tiny-SiLU vergelijken met YOLOv5-N (r6.1), is onze methode 127 fps sneller en 10,7% nauwkeuriger op AP. Bovendien heeft YOLOv7 51,4% AP bij een framerate van 161 fps, terwijl PPYOLOE-L met dezelfde AP slechts 78 fps framerate heeft. In termen van parametergebruik is YOLOv7 41% minder dan PPYOLOE-L. Als we YOLOv7-X met 114 fps inferentiesnelheid vergelijken met YOLOv5-L (r6.1) met 99 fps inferentiesnelheid, kan YOLOv7-X AP met 3,9% verbeteren. Als YOLOv7-X wordt vergeleken met YOLOv5-X (r6.1) van vergelijkbare schaal, is de inferentiesnelheid van YOLOv7-X 31 fps sneller. Daarnaast vermindert YOLOv7-X in termen van de hoeveelheid parameters en berekeningen 22% van de parameters en 8% van de berekeningen in vergelijking met YOLOv5-X (r6.1), maar verbetert AP met 2,2%(Bron).

Model Params
(M)
FLOP's
(G)
Grootte
(pixels)
FPS APtest/ val
50-95
APtest
50
APtest
75
APtest
S
APtest
M
APtest
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-klein-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%

Overzicht

Objectdetectie in realtime is een belangrijk onderdeel van veel computer vision-systemen, waaronder het volgen van meerdere objecten, autonoom rijden, robotica en medische beeldanalyse. In de afgelopen jaren heeft de ontwikkeling van real-time objectdetectie zich gericht op het ontwerpen van efficiƫnte architecturen en het verbeteren van de inferentiesnelheid van verschillende CPU's, GPU's en neurale verwerkingseenheden (NPU's). YOLOv7 ondersteunt zowel mobiele GPU als GPU apparaten, van de rand tot de cloud.

In tegenstelling tot traditionele realtime objectdetectors die zich richten op architectuuroptimalisatie, richt YOLOv7 zich op de optimalisatie van het trainingsproces. Dit omvat modules en optimalisatiemethoden die zijn ontworpen om de nauwkeurigheid van objectdetectie te verbeteren zonder de inferentiekosten te verhogen, een concept dat bekend staat als de "trainbare zak met gratis voorwerpen".

Belangrijkste kenmerken

YOLOv7 introduceert verschillende belangrijke functies:

  1. Model opnieuw parametriseren: YOLOv7 stelt een gepland opnieuw geparametreerd model voor, wat een strategie is die toepasbaar is op lagen in verschillende netwerken met het concept van gradiƫntvoortplantingspad.

  2. Dynamische labeltoewijzing: De training van het model met meerdere outputlagen stelt ons voor een nieuw probleem: "Hoe wijs je dynamische doelen toe voor de uitgangen van verschillende takken?" Om dit probleem op te lossen, introduceert YOLOv7 een nieuwe labeltoewijzingsmethode genaamd grof-naar-fijn geleide labeltoewijzing.

  3. Uitgebreid en samengesteld schalen: YOLOv7 stelt "uitgebreide" en "samengestelde schalingsmethoden" voor de realtime objectdetector voor die parameters en berekeningen effectief kunnen gebruiken.

  4. Efficiƫntie: De methode voorgesteld door YOLOv7 kan effectief ongeveer 40% parameters en 50% berekeningen van de meest geavanceerde real-time objectdetector verminderen, en heeft een snellere inferentiesnelheid en een hogere detectienauwkeurigheid.

Voorbeelden

Op het moment van schrijven ondersteunt Ultralytics nog geen YOLOv7 modellen. Daarom moeten gebruikers die YOLOv7 willen gebruiken direct naar de YOLOv7 GitHub repository gaan voor installatie- en gebruiksinstructies.

Hier volgt een kort overzicht van de typische stappen die je zou kunnen nemen om YOLOv7 te gebruiken:

  1. Bezoek de YOLOv7 GitHub repository: https://github.com/WongKinYiu/yolov7.

  2. Volg de instructies in het README bestand voor de installatie. Dit bestaat meestal uit het klonen van de repository, het installeren van de benodigde afhankelijkheden en het instellen van de benodigde omgevingsvariabelen.

  3. Zodra de installatie is voltooid, kun je het model trainen en gebruiken volgens de gebruiksinstructies in het archief. Dit houdt meestal in dat je je dataset voorbereidt, de modelparameters configureert, het model traint en vervolgens het getrainde model gebruikt om objectdetectie uit te voeren.

Houd er rekening mee dat de specifieke stappen kunnen variƫren, afhankelijk van je specifieke gebruikssituatie en de huidige staat van de YOLOv7 repository. Daarom wordt het sterk aangeraden om direct de instructies in de YOLOv7 GitHub repository te raadplegen.

We betreuren het ongemak dat dit kan veroorzaken en zullen proberen dit document bij te werken met gebruiksvoorbeelden voor Ultralytics zodra ondersteuning voor YOLOv7 is geĆÆmplementeerd.

Citaten en Erkenningen

We willen de auteurs van YOLOv7 bedanken voor hun belangrijke bijdragen op het gebied van real-time objectdetectie:

@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}
}

Het originele YOLOv7 artikel is te vinden op arXiv. De auteurs hebben hun werk openbaar gemaakt en de codebase is toegankelijk op GitHub. We waarderen hun inspanningen om het veld vooruit te helpen en hun werk toegankelijk te maken voor de bredere gemeenschap.

FAQ

Wat is YOLOv7 en waarom wordt het beschouwd als een doorbraak in realtime objectdetectie?

YOLOv7 is een geavanceerd real-time objectdetectiemodel dat ongeƫvenaarde snelheid en nauwkeurigheid bereikt. Het overtreft andere modellen, zoals YOLOX, YOLOv5 en PPYOLOE, in zowel parametergebruik als inferentiesnelheid. De onderscheidende kenmerken van YOLOv7 zijn onder andere de herparametrisatie van het model en de dynamische labeltoewijzing, die de prestaties optimaliseren zonder de inferentiekosten te verhogen. Voor meer technische details over de architectuur en vergelijkingscijfers met andere geavanceerde objectdetectoren, zie het YOLOv7 artikel.

Hoe verbetert YOLOv7 de vorige YOLO modellen zoals YOLOv4 en YOLOv5?

YOLOv7 introduceert verschillende innovaties, waaronder herparametrisatie van het model en dynamische labeltoewijzing, die het trainingsproces verbeteren en de inferentienauwkeurigheid verhogen. Vergeleken met YOLOv5 verbetert YOLOv7 de snelheid en nauwkeurigheid aanzienlijk. YOLOv7-X verbetert bijvoorbeeld de nauwkeurigheid met 2,2% en reduceert de parameters met 22% vergeleken met YOLOv5-X. Gedetailleerde vergelijkingen zijn te vinden in de prestatietabel YOLOv7 vergelijking met SOTA object detectors.

Kan ik YOLOv7 gebruiken met Ultralytics tools en platforms?

Op dit moment ondersteunt Ultralytics YOLOv7 niet direct in zijn tools en platforms. Gebruikers die YOLOv7 willen gebruiken, moeten de installatie- en gebruiksinstructies volgen in de YOLOv7 GitHub repository. Voor andere geavanceerde modellen kun je verkennen en trainen met Ultralytics tools zoals Ultralytics HUB.

Hoe installeer en start ik YOLOv7 voor een aangepast objectdetectieproject?

Volg deze stappen om YOLOv7 te installeren en uit te voeren:

  1. Kloon de YOLOv7 repository:
    git clone https://github.com/WongKinYiu/yolov7
    
  2. Navigeer naar de gekloonde map en installeer de afhankelijkheden:
    cd yolov7
    pip install -r requirements.txt
    
  3. Bereid je dataset voor en configureer de modelparameters volgens de gebruiksinstructies in de repository. Bezoek voor meer informatie de YOLOv7 GitHub repository voor de laatste informatie en updates.

Wat zijn de belangrijkste functies en optimalisaties in YOLOv7?

YOLOv7 biedt verschillende belangrijke functies die een revolutie teweegbrengen op het gebied van realtime objectdetectie:

  • Herparametriseren van het model: Verbetert de prestaties van het model door de gradiĆ«ntvoortplantingspaden te optimaliseren.
  • Dynamische labeltoewijzing: Gebruikt een grof-naar-fijn loodgestuurde methode om dynamische doelen toe te wijzen voor uitgangen over verschillende takken, waardoor de nauwkeurigheid wordt verbeterd.
  • Uitgebreid en samengesteld schalen: Maakt efficiĆ«nt gebruik van parameters en berekeningen om het model te schalen voor verschillende realtime toepassingen.
  • EfficiĆ«ntie: Vermindert het aantal parameters met 40% en het aantal berekeningen met 50% vergeleken met andere geavanceerde modellen, terwijl de inferentiesnelheid hoger is. Voor meer details over deze functies, zie de sectie YOLOv7 Overzicht.


Aangemaakt 2023-11-12, Bijgewerkt 2024-07-04
Auteurs: glenn-jocher (8), sergiuwaxmann (1)

Reacties