Ողջույն ընթերցողներ, այս հոդվածում ես կբացատրեմ օբյեկտների հայտնաբերման ամենաշատ օգտագործվող երկու ալգորիթմները դրանց իրականացման հետ միասին: Ես նաև կնշեմ իմ անձնական փորձը երկու ալգորիթմների, դրանց հեշտության, հարմարության և սահմանափակումների հետ կապված: Հուսով եմ, որ այս հոդվածը լույս կբերի արագ RCNN-ի և YOLO-ի համեմատական ​​ուսումնասիրության և իրականացման վրա:

Հիմնականում օբյեկտների հայտնաբերումը պատկերի մեջ որոշ կոնկրետ օբյեկտների նույնականացման և սահմանափակող տուփով օբյեկտների ծանոթագրման գործընթացն է: Սա օգտակար օբյեկտների հետագա օգտագործման համար տեղորոշելու գործընթացն է (ինչպես սեգմենտավորումը): Կան բազմաթիվ օբյեկտների հայտնաբերման ալգորիթմներ, որոնք լայնորեն օգտագործվում են համակարգչային տեսողության ոլորտում, ինչպիսիք են Fast RCNN (կրկնվող նյարդային ցանց), SSD (մեկ կրակոցի դետեկտոր), YOLO (դուք միայն մեկ անգամ եք նայում), SPP (տարածական բուրգի միավորում) և այլն: Բայց այստեղ Ես կմշակեմ արագ RCNN և YOLO՝ հիմնվելով իմ փորձի վրա:

  1. Արագ RCNN. RCNN-ում մենք տրամադրում ենք պատկեր, որը բաղկացած է մեկից ավելի օբյեկտից դրա ներսում: Այնուհետև ընտրովի որոնման ալգորիթմը կվերցնի պատկերը և դրանից կստեղծի շուրջ 2000 տարածաշրջանային առաջարկներ (սահմանող տուփեր): Սրանք աղավաղված պատկերի բաժիններն են/սահմանող տուփի շրջանները: Իսկ ավելի ուշ դրանք փոխանցվում են CNN-ի շերտերին։

Հաշվի առնելով վերը նշված օրինակը՝ պատկերն ունի իր ներսում ճանաչված 3 օբյեկտ։ Եվ յուրաքանչյուր օբյեկտի համար տարածաշրջանի առաջարկն անցնում է կոնվոլյուցիոն ցանցով, իսկ ավելի ուշ SVM ալգորիթմը դասակարգում է պատկերները: Սա հիմնական RCNN-ի գործառույթն է: Ալգորիթմը, որը ստեղծում է հետաքրքրությունների տարածաշրջանը, նրանք ինքնուրույն չեն սովորում, ընտրվում են պատահականորեն այնպես, որ ստեղծվի 2000 տարածաշրջանային առաջարկ: Այսպիսով, այս սահմանափակումը հաղթահարելու համար ներկայացվեց արագ RCNN:

Տարածաշրջանի 2000 առաջարկները դիտարկելու փոխարեն բոլոր ենթապատկերները/սահմանող տուփերը վերցվում են որպես ամբողջական պատկերներ: Այնուհետեւ դրանք փոխանցվում են CNN-ի շերտերին։ Երբ մենք ստանում ենք առանձնահատկությունների քարտեզ՝ որպես կոնվոլյուցիոն շերտի արդյունք, այն այնուհետև փոխանցվում է CNN-ի ROI միավորման շերտին: ROI միավորող շերտը վստահեցնում է, որ ստեղծվող բոլոր հատկանիշների քարտեզները ունեն նույն պատկերի չափը: Այնուհետև ելքը փոխանցվում է FC շերտ, որն ավարտում է պատկերների դասակարգման առաջադրանքը ակտիվացման ֆունկցիայի (Softmax) օգնությամբ և տալիս մեզ սահմանող տուփերը։ Այնուամենայնիվ, այս մեթոդը չուներ որևէ ալգորիթմ, որը կընտրեր պատկերի համար հետաքրքրող շրջանները:

Հետևաբար, ներդրվեց ավելի արագ RCNN: Այն վերացնում է ինչպես RCNN-ի, այնպես էլ արագ RCNN-ի սահմանափակումները՝ ավելացնելով մեկ լրացուցիչ նեյրոնային ցանցի շերտ: Արագ RCNN-ի նման, ամբողջ պատկերը փոխանցվում է CNN-ի շերտերին: Առաջին նեյրոնային ցանցը կոչվում է տարածաշրջանային առաջարկների ցանց, որտեղ ընտրվում են հետաքրքրության շրջանները: Տարածաշրջանի առաջարկն աշխատում է համապատասխան սահմանափակող տուփեր տալու համար: Եվ այդ ելքը կրկին կփոխանցվի երկրորդ նեյրոնային ցանցի շերտին, որը դասակարգում է պատկերները SVM-ի միջոցով և պարզում է նաև սահմանափակող տուփերը: Նյարդային ցանցի լրացուցիչ շերտ օգտագործելու նպատակն այն է, որ նեյրոնային ցանցերը ինքնուրույն սովորեն և հասկանան ծանոթագրված պատկերների օրինաչափությունները (պատկերներ սահմանափակող տուփերով): Ահա թե որքան արագ է աշխատում RCNN-ը CNN-ի կրկնակի շերտերի վրա, ինչը հեշտացնում է առաջադրանքը:

Ես օգտագործել եմ ավելի արագ RCNN՝ պլանոգրամի բացերը հայտնաբերելու համար: Նաև ես օգտագործեցի Detecto փաթեթը առաջադրանքի համար, որը կառուցված է Pytorch-ի վերևում: Այն օգտագործում է ավելի արագ RCNN Resnet50: Դա խորը ուսուցման ցանցի ճարտարապետության տեսակ է։
Ձեզ անհրաժեշտ տվյալներ՝ պատկերներ, XML պիտակի ֆայլեր

Մոդելը 10 դարաշրջանով վարժեցնելուց հետո ստացա հետևյալ արդյունքը.

2. YOLO (Դուք միայն մեկ անգամ եք նայում): Երկրորդ ամենաշատ կիրառվող մոտեցումը YOLO-ն է: Այն օբյեկտների հայտնաբերման ալգորիթմ է, որը լայնորեն կիրառվում է համակարգչային տեսողության մեջ։ YOLO-ի երեք տարբերակ կա՝ YOLOV1, YOLOV2, YOLOV3: Մյուս երկու տարբերակները (YOLOV4, YOLOV5) YOLOV1-ի թարմացումներն են: YOLO-ում օբյեկտների հայտնաբերումը կատարվում է որպես ռեգրեսիայի խնդիր՝ հայտնաբերված օբյեկտների հնարավոր հավանականությունների հետ: YOLO-ն հայտնի է իր բարձր արագության, ճշգրտության և սովորելու կարողությունների պատճառով: Այն ներառում է երեք մեթոդ.

2.1 Մնացորդային բլոկներ. Այս մեթոդով պատկերը բաժանվում է մի քանի ցանցերի: Յուրաքանչյուր ցանց ունի նույն չափերը (S x S): Յուրաքանչյուր ցանցային բջիջ օգնում է հայտնաբերել իր ներսում առկա օբյեկտները:

2.2 Սահմանափակ վանդակներ. սահմանափակող տուփը ընդգծում է պատկերի ներսում առկա օբյեկտները: Այն գտնում է առարկաները և դրա շուրջը գծում է որոշակի բարձրության և լայնության սահմանային տուփ: Յուրաքանչյուր սահմանափակող տուփ ունի իր դասը, որը կապված է դրա հետ: Սահմանափակ տուփն ունի հետևյալ կոորդինատները՝ X= (pc, ax, ay, aw, ah)

Որտեղ

կացին. x մեկնարկային կետի կոորդինատը

ay: y ելակետի կոորդինատը

aw: լայնությունը

ախ: բարձրություն

հատ: տուփի կենտրոնը

2.3 Միավորման վրա խաչմերուկ (IOU). IOU-ն տեխնիկա է, որը մանրամասնում է, թե ինչպես են սահմանակցող տուփերը համընկնում: YOLO-ն օգտագործում է IOU-ն՝ պարզելու համար, թե որ սահմանափակող տուփերն են հիանալի տեղադրված առարկաների շուրջը: Ինչպես նշվեց վերևում, յուրաքանչյուր ցանց պատասխանատու է իր ներսում գտնվող օբյեկտի կանխատեսման համար: IOU-ը հավասար է 1-ի, եթե կանխատեսված սահմանային տուփը ճիշտ համընկնում է իրական սահմանագծի հետ: Նաև այս տեխնիկան վերացնում է սահմանափակող տուփերը, որոնք չեն համընկնում իրական տուփերի հետ:

Արդյունքները համեմատելու համար ես օգտագործել եմ YOLOV5 նույն առաջադրանքի համար նույն տվյալների բազայում:
Ձեզ անհրաժեշտ տվյալներ՝ պատկերներ, XML պիտակի ֆայլեր, data.yaml (այն կներառի ձեր գնացք տանող երթուղիները, թեստի ուղղությունը և դասերի մասին տեղեկություններ)

Մոդելը 10 դարաշրջանով վարժեցնելուց հետո, ահա իմ մոդելի արդյունքները.

Այսպիսով, անձամբ ես զգում եմ, որ YOLOv5-ն ավելի լավ մոդել է այս առաջադրանքի համար:

դա այն է! Ես իսկապես հուսով եմ, որ այս տեղեկատվությունը ձեզ համար օգտակար էր, և իրականացման ընթացքում դուք կարճ պատկերացում ստացաք արագ RCNN-ի և YOLO-ի համեմատական ​​պատկերացումների մասին: