Աստղի ճանաչում ՝ օգտագործելով համակարգչային տեսլականը (OpenCV). 11 քայլ (նկարներով)
Աստղի ճանաչում ՝ օգտագործելով համակարգչային տեսլականը (OpenCV). 11 քայլ (նկարներով)
Anonim
Աստղերի ճանաչում ՝ օգտագործելով համակարգչային տեսլականը (OpenCV)
Աստղերի ճանաչում ՝ օգտագործելով համակարգչային տեսլականը (OpenCV)

Այս հրահանգը ձեզ կբնութագրի, թե ինչպես ստեղծել համակարգչային տեսողության ծրագիր ՝ պատկերում աստղերի նախշերն ինքնաբերաբար բացահայտելու համար: Մեթոդը օգտագործում է OpenCV (Open-Source Computer Vision) գրադարանը `ստեղծելու համար պատրաստված HAAR կասկադների հավաքածու, որոնք կարող են օգտագործվել աստղերի որոշակի նախշերը ճանաչելու համար: Չնայած այս ուղեցույցը գտնվում է աստղերի օրինակի ճանաչման համատեքստում, իմ նկարագրած OpenCV գործընթացը կարող է կիրառվել նաև այլ ծրագրերի համար, ուստի հուսով եմ, որ այն օգտակար կլինի:

Նախագիծն ամփոփված է այս տեսանյութում.

Ինչու՞ եմ սա գրել ուսանելի:

  1. Կարծում եմ, որ աստղերի օրինաչափությունների նույնացման մեթոդը, որը ես մշակում եմ, կարող է կիրառվել աստղադիտական սիրողական նախագծերի լայն շրջանակում `լինի դա աստղադիտակի կողմնորոշում, պատկերի ավտոմատ դասակարգում, կամ, ի վերջո, բաց կոդի կամ սիրողական CubeSat աստղի սենսոր:
  2. Այստեղ կան շատ լավ OpenCV հրահանգներ, բայց չնայած դրան, ես սկզբնական շրջանում սովորելու շատ դժվար գործընթաց էի համարում, ուստի հույս ունեմ, որ այս ուղեցույցը լավ տեղեկանք կլինի այլ մարդկանց համար, ովքեր ցանկանում են վարել HAAR դասակարգիչներ OpenCV- ի համար (պարտադիր չէ, որ դա անեն գուցե աստղագիտություն):
  3. Ես ինքս պատրաստված ծրագրավորող չեմ, այնպես որ այս նախագիծը իսկապես դրդեց իմ հասկացողությանը: Հուսով եմ, որ գրելով այս Ուսուցանելի մյուսը, ավելի փորձառու, ստեղծողները ոգեշնչված կլինեն աշխատել այս հայեցակարգի վրա և իրենց ներդրումն ունենալ GitHub- ում և այս հրահանգվողում ՝ այս էջի մեկնաբանությունների միջոցով:
  4. Սիրողական աստղագիտությունն ու կողմնորոշման մեթոդներն ինձ համար մեծ հետաքրքրություն են ներկայացնում, տե՛ս իմ նախորդ ուսանելի ծրագիրը, որն ունի Arduino Star-Finder աստղադիտակների համար:

Այս Instructable- ի շապիկի լուսանկարը 3U CubeSat դիզայնի հայեցակարգ է, որին ես մասնակցել եմ դիզայնին: Ես այն օգտագործեցի այս խրատը լուսաբանելու համար, քանի որ համակարգչային տեսողության աստղերի ճանաչման համակարգի սկզբնական կիրառումը պետք է լիներ սիրողական CubeSats- ի կողմնորոշման սենսորի համար ՝ օգտագործելով Raspberry Pi V2 տեսախցիկը: Կարծում եմ, համակարգչային տեսողության աստղերի ճանաչման բազմաթիվ այլ հնարավոր ծրագրեր կան, բայց ես կարծում եմ, որ սա ամենաթեժն է:

Փոքր բառարան:

Համակարգչային տեսողության մասին սովորելը դանդաղեցնում է օգտագործվող մասնագիտացված տերմինների հիմար քանակը, ուստի ես այստեղ որոշ բաներ կսահմանեմ մեզ համար.

Կասկադ - դասակարգիչ, որը սովորել է որոշակի թիրախային օբյեկտի նույնականացման համար:

Fiducial Marker - Մարկեր, որն ավելացնում է պատկերին տեսողական հղման կետ:

HAAR - Haar- ի նման հատկանիշները պատկերի առանձնահատկությունների տեսակ են, որոնք օգտագործվում են դասակարգիչների ուսուցման համար:

OpenCV - Բաց կոդով համակարգչային տեսողություն, համակարգչային տեսողության գործիքների գրադարան:

Stellarium - բաց կոդով աստղագիտության ծրագրակազմ:

Քայլ 1: Պահանջներ

OpenCV- ն Linux- ի վրա հիմնված գրադարան է, այնպես որ, չնայած ենթադրաբար հնարավոր է այն լավ աշխատել Windows- ի վրա, դուք շատ ավելի հեշտ ժամանակ կունենաք այն Linux միջավայրում (վերցրեք սա ինձանից և շատ օրեր ՝ փորձելով այն ամբողջությամբ աշխատել Windows!) Որպես փորձ, ես ներբեռնեցի և գործարկեցի OpenCV- ն իմ Raspberry Pi 3B+ - ում, որը հաջող էր, չնայած դասակարգիչների ուսուցումը RAM- ով շատ ինտենսիվ գործընթաց է, ուստի, եթե ցանկանում եք դա անել ցանկացած արագությամբ, առաջարկվող ուղին Linux վիրտուալ սերվեր վարձելն է: (որը իրականում կարող է զարմանալիորեն էժան լինել) մի քանի օր/շաբաթ/ամիս և օգտագործել այն որպես նվիրված միջավայր, որի ընթացքում պետք է իրականացվի դասակարգիչների դասընթացը: Դուք կկարողանաք վերահսկել սերվերը Windows համակարգչից ՝ օգտագործելով SSH հաճախորդ, ինչպիսին է Putty- ն: Երբ կասկադները վերապատրաստվում են VPS- ի միջոցով, դրանք կարող են ներբեռնվել ձեր Windows համակարգչում, իսկ Python- ը կարող է օգտագործվել Windows միջավայրում պատկերի ճանաչման ծրագիրը գործարկելու համար:

Linux վիրտուալ սերվեր.

HAAR կասկադի ուսուցման գործընթացները կատարելու համար անհրաժեշտ է Linux վիրտուալ սերվեր (VPS): Սկզբում ես վարձեցի սերվեր ՝ 8 ԳԲ օպերատիվ հիշողությամբ և Ubuntu 16.04.6 (LTS) x64, իսկ հետագայում ՝ երկրորդ ՝ կրկնապատկելով կասկադ վարժեցնելու արագությունը, չնայած ձեզ անհրաժեշտ կլինի առնվազն մեկը:

Softwareրագրային ապահովում:

  • Stellarium - սա վիրտուալ պլանետարիում/աստղագիտության ծրագիր է, ազատ հասանելի: Այն կօգտագործվի նմանակված աստղային պատկերներ հավաքելու համար ՝ փորձարկման ժամանակ օգտագործելու համար:
  • Putեփամածիկ - Սա SSH հաճախորդ է, որն օգտագործվում է հրամանի տողի միջոցով VPS- ը վերահսկելու համար:
  • WinSCP - այն օգտագործվում է Windows համակարգչից ֆայլերի փոխանցում կատարելու համար:

Քայլ 2: VPS կարգավորում

VPS- ը գործարկելու համար կա մի փոքր կարգաբերման գործընթաց: Առաջին անգամ ձեզ համար կարող է մի փոքր ժամանակ պահանջվել, բայց դա այնքան էլ բարդ չէ, եթե մանրամասն հետևեք քայլերին: Այս ձեռնարկը ինձ համար հիանալի տեղեկանք էր: Ես խորհուրդ կտայի ձեզ նույնպես կարդալ սա, մինչդեռ այս ուսանելիի միջոցով աշխատում եք: Այն տող առ տող ընդգրկում է linux հրամանների առանձնահատկությունները, որոնց անհրաժեշտ է հետևել տառին:

Մոտավորապես, գործընթացը ներառում է.

  1. Linux սերվերի ստեղծում Ubuntu- ի ճիշտ տարբերակով:
  2. Սերվերի արդիականացում և թարմացում:
  3. Աշխատանքային տարածքի գրացուցակի ստեղծում, որի մեջ տեղադրված է OpenCV:
  4. Որոշ հիմնական անհրաժեշտությունների, մասնավորապես `կոմպիլյատորի, տարբեր գրադարանների և Python կապերի տեղադրում:

Այս փուլից հետո դուք պատրաստ եք սկսել պատրաստվել վերապատրաստման գործընթացին:

Քայլ 3: Գործընթացը

HAAR կասկադների միջոցով համակարգչային տեսողության ամբողջ գործընթացը սկզբում բավականին շփոթեցնող է, ուստի այս քայլը մի փոքր ավելի մանրամասն նկարագրում է տրամաբանությունը.

Հիմնական գործընթաց

  1. Գոյություն ունի բացասական պատկերի հավաքածու ՝ բաղկացած մի քանի հազար պատկերներից, որոնք չեն պարունակում հետաքրքրության առարկա: Սա պետք է վերբեռնվի VPS- ում:
  2. Ստեղծվում է մեկ դրական պատկեր, որը պարունակում է հետաքրքրության առարկա: Սա նույնպես պետք է վերբեռնվի VPS- ում:
  3. Միակ դրական պատկերը խեղաթյուրված, խեղաթյուրված, պտտվող և այլն է `ընտրված պարամետրերով և համընկնում բացասական պատկերների ընտրության հետ: Սա մեկ պատկերից մեծ դրական տվյալների բազայի ստեղծման արհեստական միջոց է: (Այլ իրական ծրագրերի համար, օրինակ ՝ կատուի նույնականացումը, կարող եք պարզապես օգտագործել կատուների մի քանի հազար պատկեր, բայց այս մեթոդը միշտ չէ, որ տեղին է, եթե դուք չունեք այդքան մեծ քանակությամբ դրական պատկերներ: Այստեղ կիրառվող արհեստական մոտեցումը այն ավելի քիչ արդյունավետ կլինի, բայց դա միակ օգտագործման դեպքն է, ինչպիսին սա է):
  4. Ուսումնական գործընթաց է ընթանում, որն աշխատում է փուլերով: Յուրաքանչյուր փուլ կսովորեցնի կասկադ `պատկերների հավաքածուների մեջ HAAR- ի տարբեր հատկանիշներ բացահայտելու համար: Յուրաքանչյուր փուլ ավարտելու համար երկրաչափական ժամանակ է պահանջվում, և դասակարգիչի արդյունավետությունը մեծանում է ամեն անգամ (հնարավոր է նաև չափից դուրս մարզվել, որպեսզի իմանաք):
  5. Մեկ վարժեցված կասկադը կկարողանա փնտրել մեկ թիրախային օբյեկտ: Եթե ցանկանում եք նույնականացնել բազմաթիվ եզակի օբյեկտներ, ապա ձեզ հարկավոր կլինի յուրաքանչյուրի համար պատրաստված կասկադ: Այս դեպքում ես վարժեցրի մոտ 50 տարբեր կասկադներ աստղերի յուրահատուկ տեսակների համար `ստեղծելու մի հավաքածու, որը կարող էր ծածկել հյուսիսային երկնային կիսագունդը:
  6. Վերջապես, օգտագործվում է հայտնաբերման ծրագիր, որը հավաքածուի յուրաքանչյուր կասկադ վարում է մուտքային պատկերի դեմ: Կասկադը կփնտրի իր տրված թիրախային օբյեկտը մուտքի պատկերի ներսում:
  7. Հաջողության դեպքում թիրախային օբյեկտը կճանաչվի մուտքի պատկերի ներսում:

ն.բ. եթե, օրինակ, արբանյակային կողմնորոշման համատեքստում օգտագործվի, պատկերը կնկարահանվի ներկառուցված տեսախցիկի միջոցով: Այդ պատկերի ամենավառ աստղերը կբացահայտվեն, և այդ դիրքերում մարկերներ կփակվեն: Այս պատկերը այնուհետև ներկայացվում է պատրաստված կասկադների հավաքածուին, որը կփորձարկի ՝ արդյոք մուտքային պատկերը պարունակում է թիրախային օբյեկտներից որևէ մեկը: Եթե ճշմարիտ դրականը հայտնաբերվի, ապա հայտնի համաստեղության անկյունային դիրքը հայտնաբերվում է արբանյակային մարմնի առանցքների համեմատ:

Քայլ 4: Բացասական և դրական

Բացասական

Կասկադի ուսուցման իսկապես հիմնական ասպեկտը հնարավորինս մեծ բացասական պատկերների հավաքածու ունենալն է: Մենք խոսում ենք հազարավոր, իդեալական տասնյակ հազարավոր պատկերների մասին: Կարևոր չէ, թե ինչ են դրանք պարունակում, նպատակը պարզապես տեսողական տեղեկատվության բազմազանություն ապահովելն է: Classifier Training թղթապանակը պարունակում է իմ կողմից կազմված տարբեր բացասական պատկերների տվյալների հավաքածու: Սկզբում դրանք բաղկացած էին միայն Stellarium- ից հավաքված աստղադաշտի նմանակված պատկերներից, բայց ես հետագայում ավելացրեցի տվյալների հավաքածուն այնքան պատահական պատկերներով, որքան կարող էի գտնել (այո, ներառյալ իմ արձակուրդի լուսանկարները …): Այնտեղ ամենամեծ տվյալների հավաքածուն ներառում է գրեթե 9000 պատկեր, որն իմ ստեղծածից ամենամեծն էր մինչ այժմ: Օգտագործելով սա, դուք կփրկեք ձեր սեփականը կազմելը:

Դրական

Դրական պատկերը (դա աստղի թիրախային նմուշն է, որին կասկադը կսովորեցնի ճանաչել) սկսվում է որպես Stellarium- ում աստղի նախշի սքրինշոթ: Պիթոնի ծրագիրն այնուհետև բացահայտում է պատկերի ամենավառ աստղերը և ծածկում մարկերներ (որոնք ավելի ուշ բացատրվում են այս հրահանգով) աստղերի այս դիրքերում: Այս պատկերը այնուհետև կրճատվում է մինչև 50x50 պիքսել: Սա փոքր է, բայց կասկադների համար պահանջվող վերապատրաստման տևողությունը կաճի երկրաչափականորեն, երբ այս չափը մեծանա, և սա լավ փոխզիջում է որակի և ժամանակի միջև:

Քայլ 5: Stellarium Control

Stellarium Control
Stellarium Control
Stellarium Control
Stellarium Control

GitHub պահեստի Stellarium Scripts թղթապանակը պարունակում է երեք ծրագիր, որոնք ես գրել եմ Stellarium- ի օգտագործումը վերահսկելու համար: Դրանք օգտագործելու համար դրանք տեղադրեք ձեր Stellarium install թղթապանակի սցենարների թղթապանակում: Դրանք գործարկելու համար դուք կարող եք բացել սցենարների պատուհանը Stellarium ընտրացանկից կամ պարզապես կրկնակի սեղմելով սցենարների թղթապանակում գտնվող ծրագրի վրա, որը գործարկելու է Stellarium- ը և անմիջապես գործարկելու ընտրված ծրագիրը:

thesis_4- ը և thesis_5- ը գրավում են մոտ 2000 պատկեր ՝ համապատասխանաբար հյուսիսային և հարավային երկնային կիսագնդերից: Դրանք օգտագործվել են բացասական պատկերների տվյալների շտեմարաններ կազմելու, դրական պատկերը դեմ վարժեցնելու համար: Հյուսիսի և հարավի միջև տարբերությունը պարզ միջոց էր `ապահովելու համար, որ թիրախային (դրական) օրինակը բացակայում է բացասական տվյալների հավաքածուում` մարզելով հյուսիսային կիսագնդի աստղերի նախշերը հարավային երկնային կիսագնդի պատկերի տվյալների բազայի դեմ և հակառակը: (Եթե բացասական պատկերի տվյալների բազայում առկա է նաև դրական պատկեր, դա կազդի դասակարգչի որակի վրա):

thesis_setup- ը նույնպես օգտակար է. սա ստեղծում է Stellarium- ը, որը նպատակահարմար է պատկերներ վերցնելու համար. Այն ինքնաբերաբար կատարում է այնպիսի գործողություններ, ինչպիսիք են ՝ ընտրացանկերը, ցանցագծերը, պիտակները և այլն թաքցնելը, որպեսզի ձեզ անհրաժեշտ պահի ամեն անգամ, երբ ցանկանում եք գրավել պատկերը:

Քայլ 6: Հրթիռային մարդ

Հրթիռային մարդ
Հրթիռային մարդ

Առաջին կասկադները, որոնք ես սովորեցի, չկարողացան ճիշտ որոշել աստղերի նախշերը: Նրանք շատ անհուսալի էին և շատ հակված էին կեղծ պոզիտիվների: Իմ ենթադրությունն այն էր, որ Stellarium- ի աստղային դաշտի պատկերները (հիմնականում ՝ սև ֆոնի վրա սպիտակ կետեր) պարզապես չէին պարունակում բավարար տեսողական տեղեկատվություն `դասակարգիչ հաջող դասընթացների համար HAAR- ի տիպի հատկություններ պարունակելու համար: Կարծում եմ, որ ուշ գիշեր էր, բայց ես որոշեցի փորձել ծրագիր գրել ՝ աստղային դաշտի պատկերի յուրաքանչյուր լուսավոր աստղի գտնվելու վայրի վրա ավտոմատ տեղադրելու մի փոքր մանրապատկեր:

Էլթոն

Սա հիմար փորձություն էր, բայց ավելացնելով Էլթոն Johnոնի դեմքի մի փոքր պատկեր յուրաքանչյուր լուսավոր աստղի վրա, դասակարգողին դասելով այս դրական պատկերի դեմ, այնուհետև կասկադները բուն պատկերի դեմ վարելով, դա շատ ավելի արդյունավետ էր ճիշտ գտնելու համար: ճիշտ օրինաչափություն: Ես գիտեի, որ ինչ -որ բանի մեջ եմ:

Քայլ 7: Հավատարիմ մարկերներ

Հավատարիմ մարկերներ
Հավատարիմ մարկերներ

Թեև «Էլթոնները» ապացուցեցին տեսությունը, բայց ինձ անհրաժեշտ էր մի նշիչ, որն ուներ ամբողջական պտույտային համաչափություն, որպեսզի աստղի օրինակը նույնը հայտնվեր ՝ անկախ նրանից, թե ինչ կողմնորոշմամբ է այն ներկայացված: Ես փորձարկեցի մարկերների մի շարք տեսակներ և պարզեցի, որ ներքևի աջ տիպն ամենաարդյունավետն էր ՝ հակադրվող սև ու սպիտակ օղակներով: GitHub ռեպոյի դրական թղթապանակում ներկայացված python ծրագիրը ցույց է տալիս, թե ինչպես են որոշվում տվյալ պատկերի ամենավառ աստղերը, և այդ մարկերներն ինքնաբերաբար պատվում են այդ դիրքերում: Այժմ մենք ստեղծել ենք աստղերի հիմնական մոդելների ներկայացում, որոնց դեմ կարելի է վարժեցնել:

Քայլ 8: Կասկադների օգտագործումը

Կասկադների օգտագործումը
Կասկադների օգտագործումը

Երբ դուք պատրաստում եք մի շարք կասկադներ, դուք պետք է իմանաք, թե ինչպես դրանք օգտագործել ՝ պատկերում պատկերված օբյեկտ բացահայտելու համար:

Նայեք GitHub- ի Star Identification թղթապանակին, որտեղ կգտնեք cascade_test19.py ծրագիրը: Այս գրավիչ անունով ծրագիրը վերցնում է տվյալ թղթապանակից մի շարք կասկադներ և դրանք բոլորը վարում մուտքային պատկերի դեմ և զեկուցում կատարված հայտնաբերումների վերաբերյալ: «DeteMultiScale» գործառույթը դրա առանցքն է, և այն տևում է մի շարք փաստարկներ, որոնք սահմանում են հայտնաբերման գործընթացը: Դրանք փոխելը կարևոր նշանակություն ունի կասկադի դասակարգչի աշխատանքի համար, և դրա մասին ավելի շատ քննարկում կարելի է գտնել հաջորդ քայլում, որտեղ մենք նայում ենք, թե ինչպես կարելի է վերացնել կեղծ դրականը:

Սա կարող է կիրառվել արբանյակային կողմնորոշման համակարգում ՝ սահմանափակող տուփի կենտրոնում պիքսելային արժեքը համադրելով բացահայտված աստղի երկնային Ra/Dec երկնային կոորդինատին, այնուհետև դա կապելով պատկերի կենտրոնից անկյունային տեղաշարժի հետ (տեսախցիկ առանցք): Այստեղից, օգտագործելով ոսպնյակների խեղաթյուրման ըմբռնումը (մոտավորապես գնոմոնիկ պրոյեկցիային), արբանյակի անկյունը կարելի է գտնել ընդամենը երկու դրական նույնականացումից:

Քայլ 9: Ինչպես դրականորեն վերաբերվել կեղծ դրականներին

Ինչպես դրականորեն վերաբերվել կեղծ դրական կողմերին
Ինչպես դրականորեն վերաբերվել կեղծ դրական կողմերին
Ինչպես դրականորեն վերաբերվել կեղծ դրական կողմերին
Ինչպես դրականորեն վերաբերվել կեղծ դրական կողմերին

Այս երկու պատկերները ցույց են տալիս նույնական պատկերի դեմ կասկադի փորձարկման արդյունքները, բայց տարբեր պարամետրերով: Ակնհայտ է, որ առաջին պատկերը պարունակում է իսկական նույնականացում, բայց նաև ահռելի թվով կեղծ դրույթներ, մինչդեռ երկրորդ պատկերը պարունակում է միայն ճիշտ նույնականացում:

GitHub ռեպոյի Star Identification թղթապանակում գտնվող cascade_test19.py ծրագիրը օգտագործում է արդյունքների տեսակավորման երկու մեթոդ: Նախ, detectMultiScale ֆունկցիան սահմանում է նվազագույն և առավելագույն արդյունքի չափը, որը կարելի է գտնել, ինչը խելամիտ է, քանի որ պատուհանի ներսում թիրախային աստղի նախշի մոտավոր չափը (տվյալ ոսպնյակի և խոշորացման համար. Իմ մոդելավորված Stellarium պատկերները օգտագործում են Raspberry Pi V2 տեսախցիկը) հայտնի է: Երկրորդ, կոդը կընտրի արդյունքը ամենամեծ սահմանագծման տուփով (նախորդ սահմաններում): Փորձարկման ընթացքում պարզվեց, որ սա իսկական դրական է: Երրորդ, ծրագիրը սահմանում է նվազագույն «մակարդակի կշիռներ» (արդյունավետորեն «վստահության արժեք»), որը պահանջվում է այս ID- ն որպես իսկական դրական վերաբերվելու համար: Այս մեթոդով կասկադներն արդյունավետ են գտել ճիշտ արդյունքը:

Աստղային դաշտի պատկերների հետ մեկտեղ, ես դա փորձեցի նաև իմ գրասեղանի նկարների վրա, օրինակ ՝ կասկադներ պատրաստելու համար ՝ իմ նոթատետրը, գավաթը և այլն գտնելու համար, ինչպես նաև կեղծ պոզիտիվների վերացման պրակտիկան: Վերոնշյալ մեթոդները լավ աշխատեցին բոլոր հանգամանքներում, ինչը հուսադրող էր:

Քայլ 10: Քննարկում

Քննարկում
Քննարկում
Քննարկում
Քննարկում
Քննարկում
Քննարկում

Բարելավման ոլորտներ

Սա ինձ համար բարդ նախագիծ էր և իսկապես դրդեց թեմայի իմ ընկալումը: Ընդհանուր առմամբ մի քանի ամիս գրեթե լրիվ դրույքով աշխատանք է իրականացվել `նախագիծը այս կետին հասցնելու համար, երբ ես կարողանամ կիսել այն ձեզ հետ, բայց մեթոդի կատարողականությունը բարելավելու համար դեռ շատ աշխատանքներ կան կատարելու: Իր տեսքով, այն կարող է լավ գործել որոշակի սահմանափակումների սահմաններում: Ես աշխատել եմ պարզելու համար, թե որ ոլորտներն են լրացուցիչ աշխատանքի կարիք ունենում, և հուսով եմ, որ կկարողանամ ժամանակ տրամադրել դրանց լուծմանը գալիք ամիսներին: Նրանք են:

Անկյուն - Սա բարդ տարածք է, այն գաղափարը, որ դասակարգիչների արդյունքները պետք է լինեն ռոտացիոնորեն անփոփոխ, այսինքն `այն պետք է հուսալիորեն որոշի թիրախային աստղի օրինակը` անկախ այն տեսանկյունից, որտեղ այն ներկայացվում է թիրախային աստղի պարունակող պատկերը: Կասկադը, որը վարժվում է մուտքային պատկերի օգտագործմամբ մեկ կողմնորոշման դեպքում, չի կարողանա նույնականացնել այդ պատկերը պատահական կողմնորոշումներով, ուստի դրական պատկերի անկյունի շեղումը պետք է ներդրվի վերապատրաստման գործընթացում `կասկադներ պատրաստելու համար, որոնք կարող են ընդունել մուտքի անկյունների տիրույթ: Կասկադի ուսուցման հրամաններում «maxzangle» պարամետրը վերցնում է փաստարկը ռադիաններում, որը վերահսկում է այն անկյան սահմանը, որով մուտքային դրական պատկերը ծածկված կլինի տրամադրված բացասական պատկերների վրա, ուստի ստացված դրական պատկերի հավաքածուն կպարունակի մի շարք կողմնորոշումներ: դրական կերպարը: Այնուամենայնիվ, քանի որ այս maxzangle- ն մեծանում է, կասկադի ընդունման հարաբերակցությունը (լայնորեն ասած `որակ) կտրուկ կնվազի: Կարծում եմ, որ լուծումը կայանում է նրանում, որ կասկադները պատրաստվեն բացասական պատկերների զգալիորեն ավելի մեծ տվյալների շտեմարանի միջոցով, քան այն, ինչ ես օգտագործում էի ՝ ապահովելու համար, որ լավ որակի կասկադի դասակարգիչ կարող է ստեղծվել նույնիսկ մեծ կողմնորոշման տարածման մեջ:

Մեկ այլ պոտենցիալ լուծում կլինի որոշակի թիրախի համար մի շարք կասկադների պատրաստումը, որոնցից յուրաքանչյուրը ղեկավարում է 360 աստիճանի պտույտի որոշակի հատված: Այդ կերպ յուրաքանչյուր կասկադի որակը կարող է պահպանվել բարձր մակարդակի վրա, բայց մյուս կողմից դա կհանգեցնի շատ ավելի շատ կասկադների, և, հետևաբար, նույնականացման գործընթացը ավելի դանդաղ կլինի:

«LevelWeight» պարամետրը, որը «deteMultiScale» գործառույթով տրված արժեք է, նման է կատարված հայտնաբերման վստահության արժեքին: Ուսումնասիրելով դա ՝ ստեղծվեց վերը նշված գրաֆիկը, որը ցույց է տալիս, թե ինչպես է դրական նույնականացման վստահությունը կտրուկ նվազում, քանի որ պատկերի կողմնորոշումը մեծանում է երկու ուղղություններով ՝ հաստատելով այն մտքերը, որ սա թույլ կետ է:

Պիքսելների տեղադրում - Շատ ավելի պարզ, բայց նաև խնդրահարույց կետ է պիքսելների տեղադրումը, որը պատկերված է հետևյալ երկու պատկերներով ՝ ցույց տալով աստղի պատկերի ընդլայնված տեսք, այնպես, որ երկու աստղերի առանձին պիքսելները հստակ տեսանելի լինեն: Էրոզիայի գործընթացը, որն օգտագործվում է ծրագրում բոլորին, բացառությամբ պատկերից ամենապայծառ աստղերի, մաքրելու, կպահպանի առաջին աստղը, իսկ երկրորդը ՝ չնայած նրանց պայծառության հավասարությանը: Դրա պատճառն այն է, որ առաջին աստղը կենտրոնացած է պիքսելի վրա, մինչդեռ երկրորդը որպես այդպիսին չէ: Էրոզիայի գործառույթը պիքսելների համակենտրոն օղակները հանում է խմբի կենտրոնական պիքսելներից, և այսպես, առաջին աստղը կունենա կենտրոնական պիքսել, որը գոյատևում է էրոզիայի գործառույթը, սակայն երկրորդ աստղը ամբողջությամբ կհեռացվի պատկերից: Հետևաբար, հավատարմագրային մարկերներ կտեղադրվեն միայն առաջին աստղի վրա, և ոչ թե երկրորդ: Սա կհանգեցնի անհամապատասխանությունների, որոնք կապված են այն բանի հետ, թե տվյալ աստղային դաշտի պայծառ աստղերը ինչ նշաններ կստանան (և, հետևաբար, համեմատվեն պատրաստված դասակարգիչների հետ), ուստի հնարավոր է, որ ճիշտ դրական դիտարկումը հնարավոր չլինի:

Քայլ 11: Վերջին խոսք

Վերջին խոսք
Վերջին խոսք

Շնորհակալ եմ, որ կարդում եք իմ ուսանելի ուղերձը: Հուսով եմ, որ այս նախագիծը ձեզ հետաքրքրեց: Դա շատ հետաքրքիր գործընթաց էր դրա վրա աշխատելը, ավելի քան մեկ տարի է, ինչ ես սկսել եմ աշխատել հայեցակարգի վրա, և ինձ ոգեշնչում են այս պահի արդյունքները: Իմ ընթերցած գրականությունից սա բավականին օրիգինալ հասկացություն է, և ավելի զարգանալով, անշուշտ, կարող է կիրառվել սիրողական աստղագիտության կամ ավելի շատ ծրագրերի մեջ:

Այս նախագիծը ինձ համար կտրուկ ուսման կոր էր, և ես հույս ունեմ, որ ծրագրավորման ավելի մեծ փորձ ունեցող որոշ ընթերցողներ կարող են ոգեշնչվել GitHub էջի միջոցով նպաստել նախագծի շարունակմանը, և մենք կարող ենք շարունակել զարգացնել այս բաց կոդով գործիքը: Անհամբերությամբ սպասում եմ ձեր ցանկացած մեկնաբանությանը, բայց խնդրում եմ շատ բարդ հարցեր մի տվեք:

Տիեզերական մարտահրավեր
Տիեզերական մարտահրավեր
Տիեզերական մարտահրավեր
Տիեզերական մարտահրավեր

Երկրորդ տեղը տիեզերական մարտահրավերում

Խորհուրդ ենք տալիս: