- Izvajanje v brskalniku z React in TensorFlow.js z uporabo COCO-SSD za zaznavanje v živo brez zalednega sistema.
- YOLOv3/YOLOv8 za spletno kamero in video, s sledenjem več objektom z uporabo ByteTrack ali BoTSort.
- Ključni podatki in metrike: PASCAL VOC, MS COCO, mAP in IO ter pretok usposabljanja na prenos.
- Namestitev kot statična lokacija ali na robu omrežja (ESP32Cam/Jetson) in možnosti brez kodiranja za pospešitev produkcije.

Zaznavanje objektov v realnem času s spletno kamero se je zaradi zrelosti računalniškega vida in globokega učenja razvilo iz laboratorijskega poskusa v vsakdanjo zmogljivost. Danes je mogoče zgraditi delujoč prototip, ki analizirajte videoposnetek v živo brez zanašanja na strežnik in celo z uvedbo kot statičnega spletnega mesta. Od brskalnikov s TensorFlow.js do robnih naprav, kot sta platformi ESP32Cam ali Jetson, je nabor možnosti ogromen.
Delo s spletno kamero zagotavlja neposrednost in zmanjšuje trenje: lahko preizkusite svojo opremo, zajamete podatke in izvedete demonstracije brez strojna oprema dodatno, na primer uporabite svoj mobilni telefon kot spletno kameroS TensorFlow.js je mogoče zagnati detektor v brskalniku, z motorji, kot je YOLO, pa tudi Python lahko stisnete grafični procesor do obdelava videa z veliko hitrostjoTa vsestranskost doda vrednost prototipom, preizkusom koncepta (POC) in lahkim uvajanjem.
Kaj mislimo z zaznavanjem predmetov in zakaj to počnemo s spletno kamero?

Zaznavanje objektov identificira in locira elemente znotraj vsakega okvirja slike ali videoposnetka, pri čemer doda omejevalne okvirje in oznake razredov s stopnjo zaupanja. Za razliko od klasifikacije, ki označuje celotno sliko, moramo tukaj locirati položaj. Modeli, kot so YOLO, SSD ali hitrejši/maskirani R-CNN to nalogo so promovirali do čas resnično v tako različnih kontekstih, kot so varnost, trgovina na drobno ali avtonomna vožnja.
Delo s spletno kamero zagotavlja neposrednost in zmanjšuje trenje: lahko testirate na računalniku, zajemate podatke in demonstrirate brez dodatne strojne opreme. S TensorFlow.js lahko v brskalniku zaženete detektor, z mehanizmi, kot je YOLO v Pythonu, pa lahko grafični procesor stisnete do obdelava videa z veliko hitrostjoTa vsestranskost doda vrednost prototipom, preizkusom koncepta (POC) in lahkim uvajanjem.
Zaznavanje brskalnika z Reactom in TensorFlow.js (COCO-SSD)
Preprost način za začetek je ustvariti SPA z Reactom, ki prevzame prenos spletne kamere, v samem brskalniku zažene vnaprej naučen model in prikaže rezultate. Model COCO-SSD prepozna na desetine pogostih razredov in je relativno lahek, zaradi česar je idealen za agilne demonstracije z zaznavanje v živo.
Začetna nastavitev projekta z Živi in odvisnosti. Ustvarite ogrodje Reacta in dodajte TensorFlow.js skupaj s paketom modela COCO-SSD:
npm create vite@latest kinsta-object-detection --template react
cd kinsta-object-detection
npm i @tensorflow-models/coco-ssd @tensorflow/tfjs
V aplikaciji definirajte komponento, ki upravlja dovoljenja za kamero, škorenj in ustavite prenos ter pobarvajte videoposnetek, in če morate shraniti posnetke zaslona, so na voljo programi za fotografiranje iz računalnikaStanje je priročno upravljati z Reactom in shraniti referenco na element. dodeliti tok MediaDevices.getUserMedia.
Osnovni vmesnik in potek. V glavni komponenti lahko sestavite glavo in komponento ObjectDetection. Ta komponenta bo vključevala: gumb za zagon/ustavitev spletne kamere; element videa; in vsebnik, kjer boste nato risali okvirje in oznake. Ko se zažene, bo zahtevala dovoljenje in dodelila tok 'videoRef.current.srcObject'; ko se ustavi, bo pregledala vsako sled toka, da ustavi skladbe in sprosti vire.
Logika zaznavanja. Uvozite model in TensorFlow.js ter pripravite stanje za shranjevanje napovedi. Naložite COCO-SSD z 'cocoSsd.load()' in pokličite 'model.detect(videoRef.current)Rezultat je tabela z razredom, rezultatom in koordinatami bbox. Ti podatki se uporabljajo za prekrivanje pravokotnika in oznake za vsak objekt, identificiran na sliki v živo.
Frekvenca sklepanja. Za periodično sprožitev zaznavanja lahko uporabite 'setInterval', ko je spletna kamera aktivirana, in 'clearInterval', ko se ustavi. Tipičen interval je 500 ms, čeprav ga lahko spremenite. Višja frekvenca pomeni boljšo pretočnost, vendar večjo uporabo brskalnika; pri skromni strojni opremi znižanje frekvence preprečuje konice pomnilnika in procesorja.
Slogi. Dodajte pravila CSS za postavitev oznak in markerjev na absolutne plasti nad videoposnetkom. Oznaka s polprosojnim ozadjem in črtkano obrobo olajša branje zaznavanja v realnem času. Ne pozabite ohraniti svetlega sloga, da ne bi poslabšali učinkovitosti upodabljanja.
Statična namestitev. Ko je vaša aplikacija pripravljena, lahko svojo spletno stran zgradite in objavite kot statično. Kinsta vam omogoča brezplačno gostovanje do 100 statičnih spletnih strani iz GitHub-a, GitLab-a ali Bitbucket-a. V nadzorni plošči avtorizirajte ponudnika Gita, izberite repozitorij in vejo, dodelite ime in konfigurirajte gradnjo ('npm run build' ali 'yarn build', vozlišče '20.2.0', imenik za objavo 'dist'). Ko ustvarite spletno stran, vas bo 'Visit Site' preusmeril na URL. Pri statičnem pristopu bo vaš detektor statičnih spletnih strani COCO-SSD in TensorFlow.js deluje v uporabnikovem brskalniku, brez zaledja.
Če imate raje večji nadzor, Kinsta's Application Hosting doda skaliranje, prilagojene uvedbe Dockerfile ter analitiko v realnem času in zgodovino. Če pa delate z WordPressom, njihovo upravljano gostovanje vključuje neomejene migracije, 24/7 podporo, integriran Cloudflare in oblačno infrastrukturo. google Oblačna in globalna pokritost v številnih podatkovnih centrih; to je stabilen ekosistem za projekte, ki se bodo mešali splet in računalniški vid.
Modeli in družine: od R-CNN do YOLOv8 prek SSD-ja
Razvoj zaznavanja je prešel od dvostopenjskih cevovodov do enoprehodnih rešitev. R-CNN in njegove različice (Fast, Faster in Mask R-CNN) se za zaznavanje in nato razvrščanje zanašajo na predloge regij, pri čemer se Mask R-CNN razširja tudi na segmentacijo po pikslih. SSD in YOLO pa neposredno napovedujeta okvirje in razrede v enem samem sklepanju, zaradi česar sta idealna za v realnem času.
YOLO pri vsaki oceni prinaša celosten pogled na celotno sliko, zajame kontekst in zmanjša lažno pozitivne rezultate v kompleksnih prizorih. Različice, kot sta YOLOv3 in YOLOv4, so pomenile skok v zmogljivosti; kasneje sta YOLOv5 in YOLOv8 še izboljšala hitrost in natančnost. Njegova filozofija »Pogledaš samo enkrat« je primerna za spletne kamere in pretakanje z zahtevo nizka zakasnitev in visoke hitrosti sličic.
Za sledenje več objektom se detektorji kombinirajo s sledilniki. Pri YOLOv8 je običajno integrirati ByteTrack, znan po svojem ravnovesju med natančnostjo in robustnostjo, ali alternative, kot je BoTSort. V Pythonu zagon vzporednih niti omogoča več sočasnih tokov, pri čemer vsaka nit upravlja svoj lastni primerek zaznavanja in sledenja za nadzorne kamere ali analiza več virov vzporedno.
Če delate v VS Code, je izkušnja preprosta: naložite model (npr. srednje velik YOLOv8), nastavite zaledni sistem (CPU/GPU) in izvedite sklepanja na vnaprej posnetem videoposnetku ali neposredno iz spletne kamere. Preklop iz vira na zajem v živo vam omogoča, da preizkusite vedenje glede na zakritja, spremembe osvetlitve in premikanje kamere, kar je ključnega pomena za delovanje v resničnem svetu. dinamični scenariji.
Podatki, opombe in metrike: temelj uspešnosti
Brez dobrih podatkov ni zanesljivega zaznavanja. Kompleti PASCAL VOC, MS COCO in ImageNet so bili temeljnega pomena za učenje in vrednotenje detektorjev. Vsaka slika je označena z razredi in okvirji; raznolikost (ozadje, velikosti, svetlobni pogoji) je ključnega pomena za posplošitev modela. Kadar nimamo dovolj podatkov, je najučinkovitejši način prenosno učenje na predhodno naučenih modelih. stroškovno učinkovito.
Pri usposabljanju in vrednotenju sta najpogostejši metriki mAP (povprečna natančnost) in IoU (presečišče nad unijo). mAP meri povprečno natančnost pri različnih pragovih IoU; v referenčnih merilih nekateri modeli presegajo 60–70 % mAP v COCO. Poleg tega je za produkcijo pomembno meriti latenco, prepustnost in stabilnost, zlasti če je cilj pretakanje v v realnem času.
Semantična in instančna segmentacija gre še korak dlje z označevanjem slikovnih pik. Pri nalogah, kjer je pomembna natančna oblika (npr. v medicini ali industriji), lahko Mask R-CNN natančno določi konture. To ni vedno potrebno za spletne kamere, vendar doda vrednost, kadar je pomembna površina predmeta in ne le njegova prisotnost. odločanje.
Tipični cevovod se začne s predobdelavo (spreminjanje velikosti, normalizacija, dopolnjevanje), gre skozi konvolucijsko mrežo za izločitev značilnosti in na koncu napove polja in razrede. V živih aplikacijah optimizacija te verige in zmanjšanje odvečnega računanja bistveno vplivata na nemoteno izkušnjo na napravah z skromni viri.
YOLOv3 v akciji: spletna kamera, video in prilagojen trening
Če imate raje Python in PyTorch, ostaja YOLOv3 dobra izbira za spletno kamero in video. Na voljo so repozitoriji, ki omogočajo zaznavanje v živo prenosov in datotek, z navodili za namestitev odvisnosti, prenos vnaprej naučenih uteži in nastavitev ponovljivega okolja. Pri uporabi grafične kartice lahko YOLOv3 uporabite za zaznavanje v živo prenosov in datotek. NVIDIA, pospešitev sklepanja se poveča zelo opazen.
Okolje in odvisnosti. Ustvarite lahko specifično okolje Anaconda (npr. 'objdetect' s Pythonom 3.6) in namestite pakete, navedene v datoteki 'requirements.txt' projekta. S tem se izognete konfliktom različic in zagotovite, da so PyTorch in ostale knjižnice združljive z vašim projektom. strojna oprema in sistem.
Predhodno naučene uteži. Prenesite uradne uteži, da prihranite stroške učenja od začetka. Postavite jih v ustrezen imenik (npr. 'weights/'), tako da script zazna in naloži kontrolno točko. Na ta način lahko takoj zaženete zaznavanje spletne kamere brez faza pred usposabljanjem.
Izvajanje prek spletne kamere ali videa. Repozitorij običajno vključuje ukazi ali zastavice za izbiro vira: spletna kamera v živo ali video datoteka. Spreminjanje parametra ali indeksa kamere bo zagnalo zaznavanje na želenem viru. Z grafičnim procesorjem boste videli, kako se število FPS povečuje in zakasnitev zmanjšuje, pri čemer se ohranjajo okvirji in oznake stabilna oblika.
Učite svoje razrede. Če želite zaznati lastne kategorije, označite slike v formatu VOC in ustvarite konfiguracijo omrežja (datoteka '.cfg') za učenje prenosa. Tipična podatkovna struktura je 'data/custom/images' za slike in 'data/custom/labels' za opombe, z eno '.txt' za vsako '.jpg'. Definirajte 'data/custom/classes.names' z enim imenom na vrstico in navedite poti v 'train.txt' in 'valid.txt'. Od tam naprej bo učni skript prilagodil uteži modela vašim potrebam. določeno domeno.
Zaznavanje objektov z YOLOv8 in sledenje več objektom
Izdaja Ultralytics za YOLOv8 omogoča sodoben potek dela z integriranim zaznavanjem in sledenjem. Nastavitev srednje velikega modela običajno zagotavlja dobro ravnovesje; če imate zmogljivo strojno opremo, se lahko v realnem času izvajajo tudi večji modeli. Tipična vadnica prikazuje, kako zagnati sklepanje, vizualizirati rezultate in preklop z videa na spletno kamero brez zapletov.
Pogosti sledilniki. ByteTrack je močan kandidat zaradi svoje natančnosti in zanesljivost, čeprav je BoTSort še ena uveljavljena alternativa. Enolični identifikator objekta pomaga pri sledenju kljub okluzijam ali spremembam trajektorije; v demonstracijah v živo je enostavno preveriti robustnost sistema, ko subjekt prekriža pot. drugi elementi ali vstopi in izstopi iz okvirja.
Večtokovni sistem. Ko naloga zahteva spremljanje več kamer, vam nitni pristop v Pythonu omogoča zagon enega primerka na tok. Vsaka nit zažene svoj detektor in sledilnik, kar maksimizira izkoriščenost jedra in ohranja neodvisnost cevovoda. To je praktičen vzorec za nadzorne centre, trgovino na drobno ali urbana analitika.
Edge AI: ESP32Cam, Jetson in platforme brez kode
Ni vse brskalnik ali strežnik. Na drugi skrajnosti so vgrajene naprave, kjer se obdelava izvaja na istem računalniku, ki zajema podatke. Primerov ESP32Cam je veliko, čeprav mnogi članki dejansko prenesejo izračun na osebni računalnik in modul uporabljajo kot preprosto kamero. Če je potreben ogled na računalniku, obstajajo orodja, ki to omogočajo. ogled IP kamer z vašega računalnikaObstajajo avtonomni projekti (na primer branje QR kode na napravi) in skupnost aktivno išče načine za dekodiranje črtnih kod, ne da bi se pri tem zanašala na zaledni sistem.
Če potrebujete več moči na robu, vam ekosistem NVIDIA Jetson (Nano Orin, NX Orin, AGX Orin) omogoča, da praktično katero koli kamero spremenite v kamero z IAObstajajo rešitve, ki združujejo modele zaznavanja in sledenja, pripravljene za uporabo na terenu, vključno s komercialnimi orodji, ki obljubljajo preobrazbo kateri koli pretok v uporabni analitiki. Za tiste, ki ne želijo pisati kode, platforme za vizualni vid, kot je »visionplatform.ai«, podpirajo nalaganje modelov in izvajanje zaznavanja/sledenja brez dotikanja vrstice, kar skrajša čas integracije.
Ta paleta možnosti zajema vse od predstavitev v brskalniku do industrijskih uvedb. Izbira med brskalnikom, Pythonom z grafičnim procesorjem ali robom omrežja je odvisna od proračuna, ciljne zakasnitve, razpoložljive povezljivosti in potrebe po zasebnost podatkov na napravi.
Primeri uporabe in medsektorske aplikacije
Zaznavanje predmetov se uporablja pri nadzoru in kontroli dostopa, pri čemer programska oprema za video nadzor (zaznavanje ljudi, prepoznavanje obrazov), trgovina na drobno (analiza vedenja in zalog), avtomobilska industrija (zaznavanje pešcev in vozil), zdravstvo (anomalije v medicinskih slikah) ali kmetijstvo (spremljanje pridelkov in škodljivcev). Ključno je združiti klasifikacijo in omejevalni okvir za razumevanje konteksta in sprejemanje odločitev v spreminjajoče se okolje.
V pametnih mestih zaznavanje v realnem času olajša štetje, sledenje poti in opozarjanje. V tovarnah pomaga pri nadzoru kakovosti in varnosti na delovnem mestu. V potrošniških izdelkih pa je integrirano v izkušnje obogatene resničnosti in pripomočke, kot so skenerji kode. Izbira pravega modela (npr. YOLO za nizko zakasnitev) in natančna nastavitev podatkovnega cevovoda določata uspeh v velikem obsegu. produktivni.
Začetek proizvodnje in dodatni premisleki
Če poleg gostovanja (npr. brezplačnih statičnih spletnih mest na Kinsti iz vašega repozitorija Git) objavljate tudi spletno predstavitev, imejte v mislih dovoljenja za kamero in povezano uporabniško izkušnjo. Pogosto se pojavijo tudi pasice o piškotkih, ki vas obveščajo o uporabi piškotkov. shranjevanje lokalni in analitični; ta obvestila pomagajo pri skladnosti s predpisi in pojasnjujejo, kateri podatki se obdelujejo v uporabnikov brskalnik.
V uvajanjih Pythona dokumentirajte različico CUDA, vozniki in različico PyTorch/TensorFlow ter glejte vodnike na težave s perifernim prepoznavanjemZ vzdrževanjem jasne datoteke 'requirements.txt' in zagonskih skriptov prihranite ure podvajanja okolij. Če se učite, avtomatizirajte ustvarjanje datotek 'train.txt' in 'valid.txt' ter zagotovite skladnost med 'classes.names' in oznakami opomb, da se izognete subtilne napake.
Vse zgoraj navedeno se zbliža v krajino, kjer lahko začnete z aplikacijo React, ki v brskalniku poganja COCO-SSD, preidete na YOLOv3 ali YOLOv8 s spletno kamero in sledenjem GPU ali pa se premaknete na rob omrežja z ESP32Cam/Jetson in rešitvami brez kode. Izbira je odvisna od vaših zahtev glede natančnosti, zakasnitve, stroškov in enostavnosti delovanja, vendar je pot od ideje do prototipa in od prototipa do izvedljiv izdelek še nikoli ni bilo tako kratko.
Bistvo zaznavanja s spletno kamero je, da lahko združite hitro uvajanje z resnično močjo: SPA s TensorFlow.js za validacijo, YOLO za zmanjšanje zmogljivosti, dobro označene nabore podatkov za učenje po meri in uvajanje, ki je lahko, odvisno od vašega primera, tako preprosto kot statično spletno mesto ali tako robustno kot aplikacija z večslednim sledenjem na grafičnem procesorju ali vgrajeni napravi; s temi gradniki je vzpostavitev praktičnih rešitev stvar ur in ne tednov, hkrati pa se ohranja nadzor nad izkušnja v realnem času.
Strasten pisec o svetu bajtov in tehnologije nasploh. Rad delim svoje znanje s pisanjem in to je tisto, kar bom počel v tem blogu, saj vam bom pokazal vse najbolj zanimive stvari o pripomočkih, programski opremi, strojni opremi, tehnoloških trendih in še več. Moj cilj je, da vam pomagam krmariti po digitalnem svetu na preprost in zabaven način.
