Real-Time Object Detection Inference i Python med YOLOv7 PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Real-Time Object Detection Inference i Python med YOLOv7

Introduktion

Objektdetektion er et stort felt inden for computersyn og en af ​​de vigtigere anvendelser af computersyn "i naturen".

Objektdetektion er ikke så standardiseret som billedklassificering, hovedsagelig fordi de fleste af de nye udviklinger typisk udføres af individuelle forskere, vedligeholdere og udviklere i stedet for store biblioteker og rammer. Det er svært at pakke de nødvendige hjælpescripts i en ramme som TensorFlow eller PyTorch og vedligeholde API-retningslinjerne, der har været styret af udviklingen indtil videre.

Dette gør genkendelse af objekter noget mere kompleks, typisk mere omfattende (men ikke altid) og mindre tilgængelig end billedklassificering.

Heldigvis for masserne – Ultralytics har udviklet en enkel, meget kraftfuld og smuk objektdetektions-API omkring deres YOLOv5, som er blevet udvidet af andre forsknings- og udviklingshold til nyere versioner, såsom YOLOv7.

I denne korte vejledning udfører vi objektgenkendelse i Python med avanceret YOLOv7.

YOLO Landscape og YOLOv7

YOLO (Du ser kun én gang) er en metode såvel som en familie af modeller bygget til objektdetektion. Siden starten i 2015 er YOLOv1, YOLOv2 (YOLO9000) og YOLOv3 blevet foreslået af samme forfatter(e) – og deep learning-fællesskabet fortsatte med open source-fremskridt i de fortsatte år.

Ultralytics' YOLOv5 er den første storstilede implementering af YOLO i PyTorch, som gjorde det mere tilgængeligt end nogensinde før, men hovedårsagen til at YOLOv5 har fået sådan fodfæste er også den smukt enkle og kraftfulde API bygget op omkring det. Projektet abstraherer de unødvendige detaljer væk, samtidig med at det tillader tilpasningsmuligheder, praktisk talt alle brugbare eksportformater og anvender en fantastisk praksis, der gør hele projektet både effektivt og så optimalt, som det kan være.

YOLOv5 er stadig hovedprojektet at bygge objektdetektionsmodeller med, og mange depoter, der har til formål at fremme YOLO-metoden, starter med YOLOv5 som en baseline og tilbyder en lignende API (eller blot forgrene projektet og bygge ovenpå det). Sådan er det YOLOR (Du lærer kun én repræsentation) og YOLOv7 som byggede oven på YOLOR (samme forfatter). YOLOv7 er det seneste fremskridt inden for YOLO-metoden, og mest bemærkelsesværdigt giver YOLOv7 nye modelhoveder, der kan udskrive keypoints (skeletter) og udføre instanssegmentering udover kun bounding box-regression, hvilket ikke var standard med tidligere YOLO-modeller.

Dette gør instanssegmentering og nøglepunktsdetektion hurtigere end nogensinde før!

Derudover yder YOLOv7 hurtigere og med en højere grad af nøjagtighed end tidligere modeller på grund af et reduceret parameterantal og højere beregningseffektivitet:

Real-Time Object Detection Inference i Python med YOLOv7 PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Selve modellen blev skabt gennem arkitektoniske ændringer, såvel som optimering af aspekter af træning, kaldet "bag-of-freebies", hvilket øgede nøjagtigheden uden at øge omkostningerne ved slutningen.

Installation af YOLOv7

Installation og brug af YOLOv7 går ud på at downloade GitHub-lageret til din lokale maskine og køre de scripts, der følger med.

Bemærk: Desværre tilbyder YOLOv7 i skrivende stund ikke en ren programmatisk API såsom YOLOv5, der typisk indlæses fra torch.hub(), at sende GitHub-lageret ind. Dette ser ud til at være en funktion, der burde fungere, men som i øjeblikket fejler. Efterhånden som det bliver rettet, vil jeg opdatere vejledningen eller udgive en ny på den programmatiske API. Indtil videre – vil vi fokusere på de slutningsscripts, der findes i lageret.

Alligevel kan du udføre detektion i realtid på videoer, billeder osv. og gemme resultaterne nemt. Projektet følger de samme konventioner som YOLOv5, som har en omfattende dokumentation, så du vil sandsynligvis finde svar på flere nichespørgsmål i YOLOv5-arkivet, hvis du har nogle.

Lad os downloade depotet og udføre nogle konklusioner:

! git clone https://github.com/WongKinYiu/yolov7.git

Dette skaber en yolov7 bibliotek i din nuværende arbejdsmappe, som huser projektet. Lad os gå ind i den mappe og tage et kig på filerne:

%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md       detect.py        models           tools
README.md        export.py        paper            train.py
cfg              figure           requirements.txt train_aux.py
data             hubconf.py       scripts          utils
deploy           inference        test.py          runs

Bemærk: På en Google Colab Notebook skal du køre magien %cd kommando i hver celle, du ønsker at ændre din mappe til yolov7, mens den næste celle returnerer dig tilbage til din oprindelige arbejdsmappe. På lokale Jupyter Notebooks, ændring af biblioteket engang holder dig i det, så der er ingen grund til at genudsende kommandoen flere gange.

detect.py er inferens-scripts, der kører detektioner og gemmer resultaterne under runs/detect/video_name, hvor du kan angive video_name mens du ringer til detect.py scripts. export.py eksporterer modellen til forskellige formater, såsom ONNX, TFLite osv. train.py kan bruges til at træne en brugerdefineret YOLOv7-detektor (emnet for en anden guide), og test.py kan bruges til at teste en detektor (indlæst fra en vægtfil).

Flere yderligere mapper indeholder konfigurationerne (cfg), eksempeldata (inference), data om konstruktion af modeller og COCO-konfigurationer (data), Osv.

YOLOv7 størrelser

YOLO-baserede modeller skalerer godt og eksporteres typisk som mindre, mindre nøjagtige modeller og større, mere nøjagtige modeller. Disse implementeres derefter til henholdsvis svagere eller stærkere enheder.

YOLOv7 tilbyder flere størrelser og benchmarked dem mod MS COCO:

Tjek vores praktiske, praktiske guide til at lære Git, med bedste praksis, brancheaccepterede standarder og inkluderet snydeark. Stop med at google Git-kommandoer og faktisk lærer det!

Model Test størrelse APprøve AP50 test AP75 test batch 1 fps batch 32 gennemsnitstid
YOLOv7 640 51.4 % 69.7 % 55.9 % 161 fps 2.8 ms
YOLOv7-X 640 53.1 % 71.2 % 57.8 % 114 fps 4.3 ms
YOLOv7-W6 1280 54.9 % 72.6 % 60.1 % 84 fps 7.6 ms
YOLOv7-E6 1280 56.0 % 73.5 % 61.2 % 56 fps 12.3 ms
YOLOv7-D6 1280 56.6 % 74.0 % 61.8 % 44 fps 15.0 ms
YOLOv7-E6E 1280 56.8 % 74.4 % 62.1 % 36 fps 18.7 ms

Afhængigt af den underliggende hardware, du forventer, at modellen skal køre på, og den nødvendige nøjagtighed – kan du vælge mellem dem. Den mindste model rammer over 160FPS på billeder i størrelse 640, på en V100! Du kan også forvente tilfredsstillende realtidsydelse på mere almindelige forbruger-GPU'er.

Videoinferens med YOLOv7

Opret en inference-data mappe til at gemme de billeder og/eller videoer, du gerne vil finde fra. Forudsat at det er i samme mappe, kan vi køre et detektionsscript med:

! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img

Dette vil vise en Qt-baseret video på dit skrivebord, hvor du kan se live fremskridt og slutninger, billede for billede, samt udlæse status til vores standard output pipe:

Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR 🚀 v0.1-112-g55b90e1 torch 1.12.1 CPU

Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|██████████████████████████████████████| 72.1M/72.1M [00:18<00:00, 4.02MB/s]

Fusing layers... 
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
 Convert model to Traced-model... 
 traced_script_module saved! 
 model is traced! 
 
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS

Bemærk, at projektet vil køre langsomt på CPU-baserede maskiner (såsom 1000ms pr. inferenstrin i outputtet ovenfor, kørte på en Intel-baseret 2017 MacBook Pro), og betydeligt hurtigere på GPU-baserede maskiner (tættere på ~5ms/frame) på en V100). Selv på CPU-baserede systemer som dette, yolov7-tiny.pt løber kl 172ms/frame, som selvom det er langt fra realtid, er stadig meget anstændigt til at håndtere disse operationer på en CPU.

Når kørslen er færdig, kan du finde den resulterende video under runs/video_1 (det navn, vi har angivet i detect.py opkald), gemt som en .mp4:

Real-Time Object Detection Inference i Python med YOLOv7 PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Inferens om billeder

Inferens om billeder koger ned til den samme proces - at levere URL'en til et billede i filsystemet og kalde detect.py:

! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt

Bemærk: I skrivende stund skalerer outputtet ikke etiketterne til billedstørrelsen, selvom du indstiller --img SIZE. Det betyder, at store billeder vil have virkelig tynde afgrænsningslinjer og små etiketter.

Real-Time Object Detection Inference i Python med YOLOv7 PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Konklusion

I denne korte guide – har vi taget et kort kig på YOLOv7, det seneste fremskridt i YOLO-familien, som bygger oven på YOLOR. Vi har taget et kig på, hvordan du installerer depotet på din lokale maskine og kører objektdetekteringsinferensscripts med et forudtrænet netværk på videoer og billeder.

I yderligere vejledninger vil vi dække nøglepunktsdetektion og instanssegmentering.

Gå videre – Praktisk dyb læring til computersyn

Din nysgerrige natur giver dig lyst til at gå længere? Vi anbefaler at tjekke vores Kursus: "Praktisk dyb læring til computersyn med Python".

Real-Time Object Detection Inference i Python med YOLOv7 PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Endnu et kursus i computersyn?

Vi laver ikke klassificering af MNIST-cifre eller MNIST-mode. De tjente deres del for længe siden. For mange læringsressourcer fokuserer på grundlæggende datasæt og grundlæggende arkitekturer, før de lader avancerede black-box-arkitekturer bære byrden af ​​ydeevne.

Vi ønsker at fokusere på afmystificering, praktisk, forståelse, intuition , rigtige projekter. Vil gerne lære hvordan kan du gøre en forskel? Vi tager dig med på en tur fra den måde, vores hjerner behandler billeder på, til at skrive en deep learning-klassificerer for brystkræft i forskningsklasse til deep learning-netværk, der "hallucinerer", lærer dig principperne og teorien gennem praktisk arbejde, og udstyrer dig med knowhow og værktøjer til at blive ekspert i at anvende dyb læring til at løse computervision.

Hvad er der indenfor?

  • De første principper for vision og hvordan computere kan læres at "se"
  • Forskellige opgaver og anvendelser af computersyn
  • Branchens værktøjer, der vil gøre dit arbejde lettere
  • Finde, skabe og bruge datasæt til computervision
  • Teorien og anvendelsen af ​​​​konvolutionelle neurale netværk
  • Håndtering af domæneskift, samtidige forekomster og andre skævheder i datasæt
  • Overfør Læring og udnyttelse af andres træningstid og beregningsressourcer til din fordel
  • Opbygning og træning af en avanceret brystkræftklassificering
  • Hvordan man anvender en sund dosis skepsis til mainstream ideer og forstår implikationerne af vidt anvendte teknikker
  • Visualisering af et ConvNets "konceptrum" ved hjælp af t-SNE og PCA
  • Casestudier af, hvordan virksomheder bruger computervisionsteknikker til at opnå bedre resultater
  • Korrekt modelevaluering, latent rumvisualisering og identifikation af modellens opmærksomhed
  • Udførelse af domæneforskning, bearbejdning af dine egne datasæt og etablering af modeltest
  • Banebrydende arkitekturer, udviklingen af ​​ideer, hvad der gør dem unikke, og hvordan man implementerer dem
  • KerasCV – et WIP-bibliotek til at skabe state of the art pipelines og modeller
  • Hvordan man analyserer og læser papirer og implementerer dem selv
  • Valg af modeller afhængigt af din applikation
  • Oprettelse af en end-to-end machine learning pipeline
  • Landskab og intuition på objektdetektion med hurtigere R-CNN'er, RetinaNets, SSD'er og YOLO
  • Forekomst og semantisk segmentering
  • Objektgenkendelse i realtid med YOLOv5
  • Træning af YOLOv5 objektdetektorer
  • Arbejde med transformere ved hjælp af KerasNLP (industristærkt WIP-bibliotek)
  • Integrering af transformere med ConvNets for at generere billedtekster
  • Deepdream
  • Deep Learning model optimering til computer vision

Tidsstempel:

Mere fra Stablemisbrug