|
|
||
|---|---|---|
| .. | ||
| lab | ||
| ObjectDetection.ipynb | ||
| README.md | ||
README.md
Objektide tuvastamine
Pildiklassifikatsiooni mudelid, millega oleme seni tegelenud, vĂ”tsid pildi ja andsid kategoorilise tulemuse, nĂ€iteks klassi 'number' MNIST-probleemis. Kuid paljudel juhtudel ei taha me lihtsalt teada, et pilt kujutab objekte â me tahame mÀÀrata nende tĂ€pse asukoha. Just seda eesmĂ€rki tĂ€idab objektide tuvastamine.
Eelloengu viktoriin
Pilt YOLO v2 veebilehelt
Naivne lÀhenemine objektide tuvastamisele
Oletame, et tahame leida kassi pildilt. VÀga naiivne lÀhenemine objektide tuvastamisele oleks jÀrgmine:
- Jagame pildi mitmeks vÀiksemaks osaks.
- KĂ€ivitame pildiklassifikatsiooni igal osal.
- Need osad, mis annavad piisavalt kÔrge aktiveerimise, vÔib pidada objektiks, mida otsime.
Kuid see lĂ€henemine pole ideaalne, kuna see vĂ”imaldab algoritmil mÀÀrata objekti piiritleva kasti asukohta vĂ€ga ebatĂ€pselt. TĂ€psema asukoha mÀÀramiseks peame kasutama mingisugust regressiooni, et ennustada piiritlevate kastide koordinaate â ja selleks on vaja spetsiifilisi andmekogumeid.
Regressioon objektide tuvastamiseks
See blogipostitus pakub suurepÀrast sissejuhatust kujundite tuvastamisse.
Andmekogumid objektide tuvastamiseks
Selle ĂŒlesande jaoks vĂ”ite kohata jĂ€rgmisi andmekogumeid:
- PASCAL VOC â 20 klassi
- COCO â Tavalised objektid kontekstis. 80 klassi, piiritlevad kastid ja segmentatsioonimaskid
Objektide tuvastamise mÔÔdikud
Ăhisosa ja ĂŒhenduse suhe (Intersection over Union)
Kui pildiklassifikatsiooni puhul on lihtne mÔÔta, kui hĂ€sti algoritm töötab, siis objektide tuvastamise puhul peame mÔÔtma nii klassi Ă”igsust kui ka tuvastatud piiritleva kasti asukoha tĂ€psust. Viimase jaoks kasutame nn ĂŒhisosa ja ĂŒhenduse suhet (IoU), mis mÔÔdab, kui hĂ€sti kaks kasti (vĂ”i kaks suvalist ala) kattuvad.
Idee on lihtne â jagame kahe kujundi ĂŒhisosa pindala nende ĂŒhenduse pindalaga. Kahe identse ala puhul oleks IoU vÀÀrtus 1, samas kui tĂ€iesti eraldatud alade puhul oleks see 0. Muudel juhtudel varieerub see 0 ja 1 vahel. Tavaliselt arvestame ainult neid piiritlevaid kaste, mille IoU ĂŒletab teatud vÀÀrtuse.
Keskmine tÀpsus (Average Precision)
Oletame, et tahame mÔÔta, kui hÀsti tuvastatakse teatud klassi objekte C. Selleks kasutame keskmise tÀpsuse mÔÔdikut, mis arvutatakse jÀrgmiselt:
- VÔtame tÀpsuse ja tagasikutsumise kÔvera, mis nÀitab tÀpsust sÔltuvalt tuvastamise lÀve vÀÀrtusest (vahemikus 0 kuni 1).
- SÔltuvalt lÀvest tuvastatakse pildil rohkem vÔi vÀhem objekte ning tÀpsuse ja tagasikutsumise vÀÀrtused muutuvad.
- KÔver nÀeb vÀlja selline:
Pilt NeuroWorkshopist
Keskmine tĂ€psus klassi C jaoks on selle kĂ”vera alune pindala. TĂ€psemalt jagatakse tagasikutsumise telg tavaliselt 10 osaks ja tĂ€psus keskmistatakse kĂ”igi nende punktide ĂŒle:
AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})
AP ja IoU
Arvestame ainult neid tuvastusi, mille IoU ĂŒletab teatud vÀÀrtuse. NĂ€iteks PASCAL VOC andmekogumis eeldatakse tavaliselt \mbox{IoU Threshold} = 0.5, samas kui COCO-s mÔÔdetakse AP-d erinevate \mbox{IoU Threshold} vÀÀrtuste jaoks.
Pilt NeuroWorkshopist
Keskmine keskmine tĂ€psus â mAP
Peamine objektide tuvastamise mÔÔdik on keskmine keskmine tĂ€psus ehk mAP. See on keskmise tĂ€psuse vÀÀrtus, keskmistatud kĂ”igi objektiklasside ja mĂ”nikord ka \mbox{IoU Threshold} ĂŒle. TĂ€psemalt on mAP arvutamise protsess kirjeldatud
selles blogipostituses ja siin koos koodinÀidetega.
Erinevad objektide tuvastamise lÀhenemised
Objektide tuvastamise algoritme on kahte laia klassi:
- Piirkonna ettepanekuvĂ”rgud (R-CNN, Fast R-CNN, Faster R-CNN). Peamine idee on genereerida huvipiirkonnad (ROI) ja kĂ€ivitada nende ĂŒle CNN, otsides maksimaalset aktiveerimist. See on natuke sarnane naiivse lĂ€henemisega, vĂ€lja arvatud see, et ROIsid genereeritakse nutikamalt. Ăks peamisi puudusi sellistel meetoditel on see, et need on aeglased, kuna vajame CNN klassifikaatori mitut lĂ€bimist pildi ĂŒle.
- Ăhe lĂ€bimise (YOLO, SSD, RetinaNet) meetodid. Nendes arhitektuurides kujundatakse vĂ”rk nii, et see ennustaks nii klasse kui ka ROIsid ĂŒhe lĂ€bimisega.
R-CNN: Piirkonna pÔhine CNN
R-CNN kasutab Selective Search, et genereerida ROI piirkondade hierarhiline struktuur, mis seejÀrel lÀbib CNN-i funktsioonide ekstraktorid ja SVM-klassi mÀÀrajad, et mÀÀrata objekti klass, ning lineaarse regressiooni, et mÀÀrata piiritleva kasti koordinaadid. Ametlik artikkel
Pilt van de Sande et al. ICCVâ11
Pildid sellest blogist
F-RCNN â Kiire R-CNN
See lÀhenemine on sarnane R-CNN-iga, kuid piirkonnad mÀÀratakse pÀrast konvolutsioonikihtide rakendamist.
Pilt ametlikust artiklist, arXiv, 2015
Kiirem R-CNN
Selle lĂ€henemise peamine idee on kasutada nĂ€rvivĂ”rku ROIside ennustamiseks â nn piirkonna ettepanekuvĂ”rk. Artikkel, 2016
Pilt ametlikust artiklist
R-FCN: Piirkonna pÔhine tÀielikult konvolutsiooniline vÔrk
See algoritm on isegi kiirem kui Faster R-CNN. Peamine idee on jÀrgmine:
- Ekstraheerime funktsioonid ResNet-101 abil.
- Funktsioone töödeldakse positsioonitundliku skoorikaardiga. Iga objekt klassist
Cjagataksek\times kpiirkondadeks ja treenime ennustama objektide osi. - Iga osa
k\times kpiirkondadest hÀÀletavad kÔik vÔrgud objektiklasside eest ja maksimaalse hÀÀlega objektiklass valitakse.
Pilt ametlikust artiklist
YOLO â You Only Look Once
YOLO on reaalajas ĂŒhe lĂ€bimise algoritm. Peamine idee on jĂ€rgmine:
- Pilt jagatakse
S\times Spiirkondadeks. - Iga piirkonna jaoks ennustab CNN
nvÔimalikku objekti, piiritleva kasti koordinaate ja usaldusvÀÀrsust=tÔenÀosust * IoU.
Pilt ametlikust artiklist
Muud algoritmid
- RetinaNet: ametlik artikkel
- SSD (Single Shot Detector): ametlik artikkel
âïž Harjutused: Objektide tuvastamine
JÀtkake Ôppimist jÀrgmises mÀrkmikus:
KokkuvÔte
Selles tunnis tegite kiirĂŒlevaate erinevatest viisidest, kuidas objektide tuvastamist saab teostada!
đ VĂ€ljakutse
Lugege lÀbi need artiklid ja mÀrkmikud YOLO kohta ning proovige neid ise:
- Hea blogipostitus YOLO kirjeldamiseks
- Ametlik veebileht
- Yolo: Kerase implementatsioon, samm-sammult mÀrkmik
- Yolo v2: Kerase implementatsioon, samm-sammult mÀrkmik
JĂ€relloengu viktoriin
Ălevaade ja iseseisev Ă”ppimine
- Objektide tuvastamine autor Nikhil Sardana
- Hea vÔrdlus objektide tuvastamise algoritmide kohta
- Ălevaade sĂŒvaĂ”ppe algoritmidest objektide tuvastamiseks
- Samm-sammuline sissejuhatus pÔhilistesse objektide tuvastamise algoritmidesse
- Kiirema R-CNN-i implementatsioon Pythonis objektide tuvastamiseks
Ălesanne: Objektide tuvastamine
LahtiĂŒtlus:
See dokument on tĂ”lgitud, kasutades AI tĂ”lketeenust Co-op Translator. Kuigi pĂŒĂŒame tagada tĂ€psust, palun arvestage, et automaatsed tĂ”lked vĂ”ivad sisaldada vigu vĂ”i ebatĂ€psusi. Algne dokument selle algses keeles tuleks lugeda autoriteetseks allikaks. Olulise teabe puhul on soovitatav kasutada professionaalset inimtĂ”lget. Me ei vastuta selle tĂ”lke kasutamisest tulenevate arusaamatuste vĂ”i valesti tĂ”lgenduste eest.









