[SCRÂTÂT] [FOSȘIT] [CLIC] PROFESOR: Ceea ce vorbim astăzi este un alt brevet, 7.016.539 și, desigur, există în materialele de pe Stellar. Și asta crește cu un nivel. Deci se bazează pe ceea ce am făcut înainte și scopul său este de a detecta obiecte, de a recunoaște obiecte, de a determina poziția lor în spațiu, de a inspecta obiecte și de a face alte câteva lucruri. Deci, care este problema pe care încearcă să o rezolve? Ei bine, încercăm să manipulăm, poate folosind un braț robot sau alte mașini, obiecte din lume. Și vrem să știm unde sunt și ce sunt. Și vom începe prin a presupune că avem informații de margine foarte precise. Am trecut prin toate astea. Și ce a venit înainte de asta? Deci, când ne uităm la brevet într-un minut, stadiul tehnicii pentru a face acest lucru avea patru componente diferite. Deci una a fost analiza blob și, mai corect, aceasta este procesarea binară a imaginii. Deci, dacă există o modalitate de a distinge obiectul de fundal, putem crea imagini binare. Iar imaginile binare au o mulțime de avantaje. Una dintre ele este că sunt mult mai mici pentru că ai un pic în loc de opt. Și sunt mult mai ușor de procesat, deoarece există doar atâtea lucruri pe care le poți face cu un singur bit. Și astfel necesită mai puțină putere de calcul, mai puțină memorie, iar în zilele în care memoria nu era atât de ușor disponibilă, asta era foarte atractiv. Deci, ce faci cu o imagine binară? Ei bine, nu vom face multe din asta. Dar, evident, un lucru pe care îl puteți face este să găsiți un fel de prag și apoi obțineți zone conectate, sperăm, și puteți găsi proprietăți ale acelor zone conectate, cum ar fi zonă, perimetru, centroid. Deci, există câteva lucruri care sunt destul de ușor de calculat, aria perimetrului și centroidul fiind printre ele, precum și numărul Euler. Deci, care este numărul Euler? Ei bine, în acest context, numărul Euler este numărul de blob-uri minus numărul de găuri. Deci, de exemplu, numărul Euler pentru acea literă ar fi 1 minus 2, sau minus 1. Și se dovedește că unele dintre acestea pot fi calculate în moduri foarte eficiente. Deci, în primul rând, există teorema lui Green conform căreia am văzut că există anumite calcule pe zone care pot fi schimbate în calcule de-a lungul granițelor. Și zona, perimetrul, centroidul sunt toate în acea categorie. Și apoi există unele operații de procesare a imaginilor binare la nivel scăzut. Și se dovedește că aceste trei pot fi implementate într-un mod paralel foarte eficient prin efectuarea de calcule locale. Deci, de exemplu, cu perimetrul, tot ce trebuie să faceți este să căutați locuri în care există un pixel lângă un pixel zero. Și dacă puteți identifica toate acele locuri și le puteți număra, ați terminat. Deci ideea este că există anumite lucruri care pot fi făcute numărând proprietățile locale, deoarece zona este una evidentă. Pixelul este 0 sau 1? Și dacă este 1, îl numărați, iar în rest nu. Și o poți face trecând secvențial prin imagine, dar asta este, desigur, foarte scump. Deci vă puteți imagina metode paralele, inclusiv hardware paralel. Oamenii au construit hardware paralel pentru acest tip de lucru, care va calcula perimetrul zonei și, în mod foarte surprinzător, și numărul Euler. Deci asta a fost o abordare. Și o problemă este că a implicat pragul. Deci, dacă vă confruntați cu o imagine din lumea reală, trebuie să distingeți cumva fundalul de prim-plan. Poate sunt de altă culoare. Poate că au o luminozitate diferită, poate o textură diferită. Deci trebuie să găsești o modalitate de a te despărți și asta înseamnă că trebuie să iei o decizie din timp. Și așa cum am menționat data trecută. Acesta nu este întotdeauna un lucru bun, deoarece decizia ta poate fi greșită și nu există nicio modalitate de a anula asta. Așa că acum, odată noi... oh, am spus „formă” între ghilimele. Deci multe dintre acestea sunt calculate folosind momente. Deci, acesta se bazează pe momentul zero și acesta se bazează pe primul moment. Și ce este un moment? Ei bine, doar pentru a vă reîmprospăta memoria, deci momentul zero este în cazul în care luați integrala lui e a lui xy ori de 1 ori 1. Și dacă e a lui xy este o imagine binară, aceasta înseamnă doar calculul ariei care este 1. Deci și acestea altele sunt calculate într-un mod similar. Deci, acestea sunt deosebit de ușor de calculat. Și care este problema cu această metodă? Ei bine, în multe cazuri, nu există o metodă de prag. Nu există niciun truc magic care să distingă primul plan de fundal. În vehiculul autonom, te uiți la mașini în fața ta și unele dintre ele sunt mai luminoase decât fundalul, iar altele sunt mai întunecate decât fundalul. Deci metoda este limitată la cazurile în care avem o distincție clară. Este foarte important, totuși, să ne dăm seama că aceste metode sunt utilizate pe scară largă , dar nu și pe imaginile brute. Au folosit rezultatul unor calcule în care calculul combină nivelurile de luminozitate într-un fel pentru a ajunge la o concluzie și a vă oferi un rezultat binar și apoi trebuie să cunoașteți aceste metode. OK, există și ceva numit șablon binar în care utilizați o imagine principală pentru a defini obiectul. Deci, acest lucru apare foarte mult în aceste metode în care aveți un eșantion pe care îl considerați standard, adesea numit șablon de aur. Și încerci să-l faci astfel încât imaginea lui să fie cât mai curată și să nu aibă niciun defecte și așa mai departe. Și apoi calculezi ceva, de exemplu, un șablon prin prag. Și aceasta este apoi folosită ca metodă de recunoaștere și determinare a poziției. Deci, luați acel șablon și îl mutați în imagine până când se potrivește cu ceea ce este acolo în imagine. Și nu vom spune prea multe despre asta. Deci acuratețea metodei șablonului binar este limitată poate la un pixel. Apoi ajungem la lucruri care au fost utilizate pe scară largă. Deci, să-i numim pe cei doi. Ajungem să normalizăm corelația. Și, de fapt, atunci când au început cognații, aceasta a fost marea lor pretenție la faimă, că puteau normaliza corelația la viteze mari și să obțină o precizie rezonabilă, cum ar fi un sfert de poziție de pixel. Și ce este asta? Ei bine, ideea este să încercăm în toate pozițiile posibile pentru meci și să vedem care este cea mai bună. Deci, dacă avem două imagini, E1 și E2, unde poate E1 este maestrul de aur, atunci ceea ce ne uităm este ceva de genul-- așa că luăm diferența dintre cele două imagini și noi-- ei bine, să o pătram. Deci asta este max, scuze, min. Deci este clar ce facem aici. Luăm una dintre cele două imagini și o mișcăm și încercăm să găsim alinierea în care diferența dintre imaginea deplasată și cealaltă imagine este cât mai mică posibil. Și deci există o metodă înrudită numită corelație. Acum, observați că acum permit doar traducerea. Așa că permitem doar schimbarea. Și motivul pentru asta este că, desigur, dorim să putem face față rotației, scalarii, modificărilor raportului de aspect , înclinării, orice. Dar această metodă este atât de costisitoare din punct de vedere computațional încât traducerea este cam tot ce putem face. De ce este costisitor din punct de vedere informatic ? Ei bine, pentru că practic, trebuie să te uiți la fiecare pixel pentru fiecare poziție posibilă. Deci, dacă cei n pixeli și veți încerca m poziții diferite, aveți nevoie de n ori m calcule. Deci, cu n fiind un milion sau ceva sau mai mult și pozițiile posibile fiind, de asemenea, toate schimbările din imagine, poate jumătate de milion, vorbiți de o mulțime de operațiuni. Aceste două sunt legate prin faptul că, dacă extindem acest lucru, extindem integranții, obținem E1 unde avem corelația care apare la mijloc. Deci maximizarea acestui lucru înseamnă minimizarea, presupunând că aceasta este constantă. Și ar trebui să fie, nu? Pentru că aceasta este doar să luați a doua imagine și doar pătrați toate nivelurile de gri și le adăugați, iar asta nu se schimbă. Aceasta este puțin mai discutabilă pentru că iei prima imagine și o schimbi și apoi adunăm pătratele pixelilor. Deci poate că unii pixeli ies din cadru și chestii de genul ăsta. Dar, în mare măsură, acești termeni sunt constanți. Deci, minimizarea acestui lucru înseamnă practic că trebuie să maximizăm asta. Bine, bine, în timp ce eu vreau să relaționez acest lucru cu metodele noastre bazate pe gradient, deoarece vorbim despre flux optic fix , mouse optic, toate chestiile astea. Și acolo calculam un offset, de obicei un mic offset ca o fracțiune de pixel sau poate câțiva pixeli. Și așa se pare că aici este un alt mod de a face asta. Maximizăm corelația. Deci, să ne uităm la asta. Deci, să presupunem că delta x și delta y sunt mici, atunci putem folosi expansiunea seriei Taylor și obținem E1 de xy minus-- și atunci am avut un minus delta x Ex minus delta y Ey. Și apoi avem diferența dintre aceste două, pe care o putem considera a fi schimbarea în timp, deoarece ne putem gândi la aceste două imagini ca la două imagini care corespund la două timpuri diferite. Deci, să vedem, vom minimiza acest lucru. Deci, dacă împart prin delta t și iau limita pe măsură ce delta t ajunge la 0, obțin asta deoarece delta x peste delta t merge la u. Și bineînțeles, semnele minus nu contează pentru că sunt la pătrat. Și delta y peste delta t merge la v și așa mai departe. Deci totul este foarte familiar. Da? PUBLIC: Ne poți aminti din nou care este scopul tuturor acestor lucruri? PROFESOR: Scopul este de a găsi un obiect, de a- l recunoaște și de a-i determina poziția. Deci, acum, despre ce vorbim se concentrează pe această parte, determinarea ipostazei. Deci avem o imagine a cum ar trebui să arate circuitul integrat . Și apoi avem o imagine a unei imagini de rulare a unui circuit integrat. Și încercăm să- l punem la locul potrivit pentru următorul pas al procesului de fabricație, de exemplu. Și așa că trebuie să aflăm, cât de mult este deplasată imaginea mea de rulare în raport cu imaginea de antrenament? Și apoi pot muta scena și pot face următoarea etapă de-- și deci acestea sunt diferite metode de a încerca să obțin acea aliniere. Deci, de exemplu, suma pătratului diferențelor spune: OK, voi muta una dintre imagini până când se potrivește cu cealaltă imagine cât mai aproape posibil. Și apoi, destul de interesant, asta este de fapt echivalent cu corelația, ceea ce nu este evident. De ce ar trebui ca integrala produsului celor două lucruri să fie maximă? Și apoi, la rândul său, pentru deplasări mici, este de fapt foarte asemănător cu metodele noastre bazate pe gradient, nu? Aveam acel mouse optic. Am vrut să știm cât de departe s-a deplasat... o problemă foarte asemănătoare. Și destul de interesant, dacă ai citit brevetele pentru șoareci optici -- probabil că nu credeai că sunt, dar există zeci de brevete pentru șoareci optici pentru că, individual, un mouse nu costă aproape nimic, așa că nu ești va face mulți bani. Dar poți vinde un miliard dintre ele, așa că oamenii au crezut că merită brevetat. Și aproape toate brevetele recomandă metodele bazate pe gradient. Și când le demontați și le faceți inginerie inversă, o mulțime dintre ele nu o fac. O mulțime dintre ele folosesc... așa că toate brevetele spun corelații, îmi pare rău. Cred că am spus greșit. Brevetele sunt toate despre corelare. Hewlett-Packard, Agilent, toți acești oameni au brevete în acest sens. Dar atunci când le demontați și le faceți inginerie inversă, ceea ce nu ar trebui să faceți, de multe ori descoperiți că de fapt folosesc metode bazate pe gradient, deoarece sunt mai ieftine, mai precise și orice altceva. Limitarea este că mișcarea nu este foarte mare. Atât de des, acei șoareci rulează la o rată de cadre mai mare pentru a compensa. Mulți dintre șoarecii de gaming funcționează așa. Au o rată de cadre foarte mare, așa că mișcarea de la cadru la cadru este foarte, foarte mică. Deci, oricum, deci toate acestea sunt conectate. Așa că m-am gândit să introduc asta pentru că vorbim despre determinarea ipostazei. Deci, în cel mai simplu caz, poziția înseamnă schimbare. Desigur, va fi mai interesant în cazurile în care include și rotația, și poate scalarea și așa mai departe. Deci OK, deci revenim la corelație - deci suma pătratelor diferențelor este folosită uneori, dar are unele dezavantaje. Deci, de exemplu, dacă una dintre cele două imagini este substanțial mai luminoasă decât cealaltă, atunci nu se vor potrivi foarte bine, în timp ce corelația vă va oferi oricum o potrivire ridicată. Ei bine, cred că o problemă cu corelația este, cât de mare este mare? Unde este pragul? Vreau să spun, deci, atunci când tragem asta în funcție de delta x delta y, ne așteptăm să existe un vârf la deplasarea corectă. Și asta se va întâmpla chiar dacă tu... este evident. Dacă luați E,2 și îl înmulțiți cu k, cu adevărat va perturba suma pătratelor diferențelor. Dar nu va elimina vârful corelației. Vârful va fi doar de k ori mai mare. Deci, acesta este unul dintre motivele pentru care oamenii folosesc foarte des corelația, chiar dacă are și alte dezavantaje, de calcul. Bine, deci să presupunem că facem asta. Ei bine, acum, există probleme precum... după cum am menționat, dacă contrastul este diferit, veți obține o valoare de vârf diferită. Ar fi foarte frumos dacă, în schimb, ai avea un număr care spune că 0 nu se potrivește, iar 1 se potrivește. Aici, avem ceva care poate deveni mare, iar tu îl cauți pe cel mai mare. Dar dacă nu e foarte mare, știi? Cât de bun este un meci? Potriviți o imagine a unei pisici cu o imagine a unui câine? Nu știi pentru că doar cauți vârful. Deci ce să faci în privința asta? Ei bine, aici intervine o corelație normalizată. Deci, mai întâi, offset-- deci dacă adaug o constantă la una dintre imagini, nu ar trebui să schimbe potrivirea, dar va perturba acest calcul. Și, prin urmare, este avantajos să scazi mai întâi media. Bine, deci am avea un nou-- așa că calculăm media lui E,1 și o scădem din tot, astfel încât dacă nivelul general crește sau scade, nu are niciun efect. Anulăm asta. Desigur, înseamnă că acum E,1 prim poate avea atât valori pozitive, cât și negative. Ei bine, de fapt, va avea atât valori pozitive, cât și negative, și la fel și pentru E,2. OK, deci ce face asta? Acest lucru scapă de orice decalaj în luminozitatea imaginii. Și astfel face procesul mai puțin sensibil la schimbările în configurația optică. Dar, în plus, ceea ce am dori să facem este să-l facem independent de contrast, astfel încât, în multe circumstanțe, dacă contrastul se modifică cu un factor de 2, să nu-ți schimbe potrivirea. Desigur, există cazuri în care doriți să știți despre asta, deoarece ar putea fi un indiciu al unui defect. Dar în această problemă de aliniere, s- ar putea să nu dorim să ne pese de asta. Și, în acest caz, ceea ce facem este să calculăm din nou corelația ca înainte. Dar acum, o normalizăm. Oh, dacă vrei, poți să- l transformi în două rădăcini pătrate, în orice fel vrei să faci. Deci încercăm să eliminăm cât mai multe lucruri care ar putea perturba calculul. Unul este o schimbare în medie, iar celălalt este o schimbare în luminozitate și contrast. Și așa că acesta de aici are marea caracteristică că, dacă avem o potrivire perfectă, dacă E,1 este egal cu E,2, ce obținem? E,1 este egal cu E,2 înseamnă că aceasta este integrala lui E,1 la pătrat. Și aceasta este integrala E,1 pătrat. Aceasta este integrala E,1 pătrat. Și înmulțiți acestea. Luați rădăcina pătrată, astfel încât întregul lucru, puteți vedea cum se anulează. Da? Oh, da, mulțumesc. Ne-am străduit să scădem media și apoi am renunțat la ea. Deci bine. Deci valoarea ideală pentru aceasta este 1. Deci, dacă avem o potrivire perfectă, aceasta este 1. Și puteți arăta că aceasta este limitată la intervalul minus 1 la plus 1. Trebuie să se situeze în acel interval. Minus 1 este că, într-un anumit sens, aveți o nepotrivire perfectă. Ceea ce înseamnă asta este că una dintre imagini este negativul celeilalte - deci nu este foarte probabil în practică. Și 0 înseamnă, ei bine, nu există o corelație reală. Desigur, dacă faci două poze arbitrare, vei obține un număr. Este foarte puțin probabil să obțineți 0. Dar nu veți obține un număr apropiat de 1 decât dacă există într-adevăr o potrivire rezonabilă. Și așa se numește corelația lui Pearson. OK, asta înseamnă că metoda de corelare normalizată pentru găsirea poziției are proprietatea acum că nu numai că putem găsi vârful, dar putem avea o anumită măsură de succes. Dacă corelația este 0,6, nu este grozav. Dacă corelația este de 0,95, ei bine, probabil că este o potrivire foarte bună. Deci, probabil, este o potrivire acceptabilă. Din nou, după cum am menționat, este scump. Iar una dintre pretențiile timpurii la faimă a lui Cognex a fost că au reușit să o accelereze enorm prin programare inteligentă și utilizând instrucțiunile pe mai mulți octeți care erau disponibile pe platforma Intel. Deci, ce este în neregulă cu asta? Ei bine, există o serie de lucruri. Una dintre ele este că, dacă o parte a unuia dintre obiecte este ascunsă -- deci ai șablonul tău auriu unde totul este perfect și atunci ai lucrul din lumea reală în care poate există o bucată de hârtie întinsă peste colțul obiectul sau un al doilea obiect este parțial întins deasupra lui, ei bine, asta va da peste cap, deoarece în acea zonă, E,1 și E,2 nu se potrivesc. Sau dacă aveți piese lipsă, aveți un angrenaj cu diferiți dinți, iar unii dintre dinți nu sunt acolo, atunci asta va afecta acest meci. Cu toate acestea, a fost folosit destul de puțin pentru o perioadă. Și acum, mergem la brevetul care spune că putem face mai bine. Să vedem dacă am puțin mai mult noroc aici decât am avut mai devreme azi. Bine, deci brevetul numărul 7016, așa că am venit puțin. Ultimul a fost de șase milioane. Metodă de recunoaștere rapidă, robustă, multidimensională a modelelor . Deci este o terminologie puțin confuză. Multidimensional? Despre ce vorbeste? Este destinat în primul rând imaginilor 2D și suprafețelor plane. Dar multidimensional înseamnă că vor să se ocupe nu doar de translație, ci și de rotație, scalare, deformare și orice altceva. Și ei subliniază că, deoarece metoda anterioară, cea mai bună metodă nu a fost nici mai mult sau mai puțin corelație. Și era atât de costisitor din punct de vedere informatic încât nu puteai face altceva decât traducerea. Și astfel, acesta este, citat, multidimensional. Și apoi lucrurile obișnuite... lista inventatorilor. Cesionarul este, din nou, Cognex, apoi domeniul, despre care am spus că nu este deosebit de important, și apoi referințele. Deci, primul grup de referințe sunt propriile citate. Și bănuiesc, sus în dreapta, niște cu stea, pe care examinatorul de brevete le-a aruncat în oală împreună cu câmpul de unde au venit. Și apoi există mai multe publicații pentru publicul larg, ceea ce nu este atât de comun în brevete. OK, atât de abstract... așa că ei o spun chiar din față. Este dezvăluită o metodă pentru determinarea absenței prezenței uneia sau mai multor cazuri ale unui model predeterminat într-o imagine și pentru determinarea locației fiecărei imagini găsite într-un spațiu multidimensional. Un model care reprezintă modelul care trebuie găsit -- modelul care include o multitudine de sonde. Așa că voi vorbi despre ce sunt sondele. Fiecare sondă reprezintă o poziție relativă în care se efectuează un test. Deci, aceasta este foarte diferită în natură față de toate celelalte lucruri despre care am vorbit înainte, prin faptul că este crearea acestei reprezentări abstracte și utilizarea acesteia în meci. Metoda include în plus o comparaţie a modelului cu o imagine de rulare la fiecare dintr-o multitudine de poziţii. Așa că a încercat diferite poziții, rotații etc. Și se calculează un scor de meci. Și apoi puteți defini o suprafață de potrivire. Și cauți vârful acelei suprafețe. Dar acum, amintiți-vă, este în spațiul multidimensional. Deci ai putea fi în spațiul cinci-dimensional în căutarea unui vârf. Și scorul meciului este, de asemenea, comparat cu un prag de acceptare. Deci avem în sfârșit praguri, dar încercarea este de a întârzia orice luare a deciziilor, să avem praguri chiar la sfârșit, când aveți o mulțime de informații. Și folosit pentru a furniza o locație a oricăror cazuri ale modelului imaginii. Deci, acesta poate include cazul în care există mai mult de o instanță a modelului în imagine sau zero instanțe ale modelului în imagine. Bine, apoi, desigur, examinatorul a scos una dintre cifrele pe care le-a considerat cele mai relevante. Și de fapt, să ne uităm la asta. Deci ideea este că avem o imagine de antrenament, standardul de aur. Și acesta ar putea fi vârful șurubului cu cap Phillips sau așa ceva. Și apoi există, citat, antrenament, care produce un model. Și apoi există o imagine de rulare, când rulați de fapt sistemul. Robotul mișcă lucruri. Și combini modelul cu o imagine de rulare folosind o listă de grade generalizate de libertate - atât de generalizate în sensul că nu trebuie să fie doar lucruri evidente precum translația și rotația. Și astfel, în timpul execuției, apoi faceți această comparație, apoi produceți o listă de rezultate - o listă de potriviri potențiale împreună cu scorurile acelor potriviri. Și există mai multe referințe care au trecut de la... ideea este să aduci toate celelalte lucruri pe prima pagină, așa că dacă există prea multe , cum ar fi referințe, acestea ajung pe a doua pagină. Și puteți vedea că aceste ultime au fost introduse de examinator. Și presupun, Bill Silver, venind dintr-o lume academică, referințe... s- ar putea să recunoști unele dintre aceste nume precum Eric Grimson. Știe cineva despre Eric Grimson? Mare lovitura aici la MIT. Deci, în acel moment, făcea viziune. Vezi ce ti se poate intampla? Puteți lucra la viziune. Următorul lucru pe care îl știi, ești o persoană importantă. Îmi pare rău... nu ar trebui să mă bat joc. Imagine de antrenament-- deci sunt figurile 1. Tocmai am văzut asta. Și iată figura 2. Și acum, acest lucru ar trebui să ți se pară foarte familiar pentru că cea mai mare parte despre asta am vorbit în brevetul anterior, nu? Deci, începând de aici, estimăm gradientul, componentele x și y. Facem conversia carteziană în polară, care ar putea fi făcută folosind CORDIC sau altă metodă. Și produce magnitudinea gradientului și direcția gradientului, din nou, la fiecare pixel, astfel încât să ne putem gândi la el ca la o imagine. Facem o detecție a vârfului în direcția gradientului - direcția cuantificată a gradientului. Și de aici, obținem coloană, rând, magnitudine, direcție. Și apoi facem interpolarea subpixelilor și toate acele lucruri inteligente, cum ar fi proiecția planului și eliminarea părtinirii. Și ceea ce ajungem până la urmă este o listă de puncte de limită. Deci aceasta este rezultatul celui precedent. Există câteva lucruri în plus aici care nu erau pe rândul de sus. Deci, în discuția anterioară, au menționat multi-scale, dar nu au vorbit prea mult despre asta în brevet. Dar aici, este mai important. Și așa lucrăm la sub-eșantioane ale imaginii, posibil mai multe straturi diferite, rezoluții diferite. Și, bineînțeles, înainte de a subeșantiona de către Nyquist, trebuie să încercăm să eliminăm frecvențele înalte, sau obținem aliasing. Deci avem un filtru trece-jos sau o aproximare a unui filtru trece-jos. Deci luăm imaginea sursă, filtrul trece jos, eșantionăm. Și putem face acest lucru de mai multe ori la rezoluții diferite. Și apoi facem toate aceste lucruri de detectare a marginilor. Și ajungem cu o listă de potențiale puncte de limită. Bine, acum, vorbind despre mai multe scale, ceea ce ar fi bine de făcut este să folosiți cursul de scară care va funcționa, deoarece sarcina de calcul depinde, desigur, în mare măsură de scară. Dacă lucrați la rezoluția completă a imaginii, se lucrează mult la calcul . Dacă lucrați la jumătate de rezoluție, este un sfert din cantitatea de muncă și așa mai departe. Deci, unul dintre aspectele acestui brevet este cum decid care este nivelul cursului pe care îl pot folosi? Și parcurg o întreagă poveste despre asta. Și din anumite motive, ajunge să fie primul pas acolo. Și asta este într-un fel pentru că nu poți face nimic din celelalte lucruri decât dacă ai ales o anumită rezoluție. Dar, de fapt, modul în care funcționează cu adevărat este că îl rulezi la mai multe rezoluții diferite. Apoi te uiți la rezultate și te decizi care este cea mai apropiată rezoluție care îmi oferă rezultate fiabile? OK, apoi procesați imaginea de antrenament pentru a obține punctele de limită. Acesta este brevetul anterior. Apoi conectăm punctele de limită învecinate care au direcții consistente. Așa că începi să le înlănțuiești. Organizați punctele de limită conectate în lanțuri. Și am vorbit puțin despre cum le spargi acolo unde există o schimbare bruscă de direcție, pentru că probabil că este un colț. Deci, iată o formă de prag. După cum am spus, va găsi margini peste tot, inclusiv textura de fundal. Și unele dintre acestea, citat, margini au caracteristica că au un contrast foarte scăzut. Deci am putea avea un prag și să spunem, nu, nu vrem acele margini. Dar asta este, din nou, o luare a deciziilor premature. Ceea ce fac ei în schimb este să-i înlănțuiască. Și dacă sunt consecvenți, chiar dacă sunt slabi, este totuși un avantaj acceptabil. Dacă, atunci când le înlănțuiți, puteți obține doar lanțuri foarte scurte sau greutatea lor combinată este foarte mică, atunci aruncați-le. Sunt doar din cauza zgomotului. Deci limitarea a fost amânată până aici. Împărțiți lanțurile în segmente cu curbură joasă, separate de colțuri cu curbură mare. OK, și atunci, chiar acum, avem un punct de margine la fiecare pixel la orice rezoluție la care lucrăm. Și s-ar putea să nu aibă întotdeauna sens. Acest lucru poate fi extrem de redundant. Deci, în schimb, le vom înlocui cu un set de puncte care au o distanță dorită. Ca să poți controla, nu vreau mai mult de 1.000 de puncte de margine în modelul meu. Sau puteți spune, nu vreau ca punctele de margine să fie mai departe de trei pixeli. Dar nu folosim direct punctele de margine din preprocesarea marginii. În schimb, ne potrivim la margini și veți vedea asta în model. Deci asta este. Creați sonde distanțate uniform de-a lungul segmentelor și stocați-le în model. Deci asta înseamnă crearea modelului. Și modelul are și o granularitate, și are un contrast. Și contrastul nu contează atât de mult în ceea ce privește mărimea, mai mult o chestiune de semn. Deci, în procesarea circuitelor integrate, de multe ori, veți vedea un contrast între diferite materiale. Dar, în funcție de iluminare și în funcție de proces, contrastul poate fi de fapt inversat. Deci ceea ce, în imaginea principală, părea că era mai întunecat pe o parte și mai luminos pe cealaltă parte, poate ajunge să fie inversat în imaginea de rulare. Și așa vrei să poți face față asta. Adică, există și alte situații în care asta nu are niciun sens, în care dacă contrastul este inversat, e ceva îngrozitor de greșit și ar trebui să te oprești. Dar, în cazul circuitului integrat, modul în care lumina se reflectă pe semiconductori este de așa natură încât poate doriți să vă ocupați de contrastul inversat. Și astfel, o parte a instruirii este de a determina ce contrast are copia master. Bine, deci asta-- asta am făcut până acum. Găsim aceste fragmente de margine. Și iată o întrebare pentru tine. Unde sunt pixelii? Deci aceste pătrate sunt pixelii? Sau centrul pixelilor la intersecțiile liniilor? Ei bine, te las să te gândești la asta. OK, și asta explică diferitele părți ale combinării marginii - conectarea fragmentelor de margine. Deci, cum conectați fragmentele de margine perechi? Ei bine, trebuie să te uiți la vecini. Și asta înseamnă o serie de lucruri. Una dintre ele este că trebuie să decideți în ce ordine să vă uitați la vecini. Și s-ar putea să aveți necazuri și s- ar putea să aveți nevoie de departajare, foarte asemănătoare cu cea despre care am vorbit înainte. OK, ei bine, aceasta este despre secvența în care te uiți la vecini. Și acum, le-ați conectat în pereche. Deci acestea sunt asociate în structura de date. Și apoi, începi să-ți faci griji unde să le spargi în funcție de curbură. Deci curbură relativ scăzută aici, așa că probabil că ar trebui să rămână împreună. Și apoi aici, există un maxim de curbură și probabil că ai dori să spargi... și, în sfârșit, faci o selecție a sondei. Așadar, iată partea superioară a șurubului Phillips dintr-o imagine perfectă, aurie. Și acesta este modelul nostru. Deci nu stocăm imaginea. Stocam aceste sonde. Și din nou, aceste sonde sunt derivate din margini, dar nu sunt puncte de margine. Ele sunt interpolate în funcție de câte doriți. Și puteți vedea că arată mereu, astfel încât au o poziție și au o direcție. Aceasta este direcția gradientului. Și deci acesta este modelul plus, așa cum am menționat, această granularitate și contrast. Dar principalul... acesta este cheia de reținut că acesta este modelul. Și ce vom face cu acel model? Ei bine, acum, vrem să știm dacă există un loc în imagine în care imaginea se potrivește cu acest model. Și așa luăm modelul și îl mapăm pe imagine. Și nu ne uităm peste tot. Ne uităm doar unde sunt sondele. Deci, sondele sunt practic ca lucrurile în care te duci pentru a colecta dovezi. Deci, ca și în acest caz, în loc să ai de-a face cu mii de pixeli, ai de-a face cu, nu știu, 100 de sonde. Și le mapați pe imagine. Te uiți la gradientul de acolo. Și spui, ei bine, dacă gradientul este așa, iar modelul spune că ar trebui să fie așa, nu e bine. Asta este o eroare. Deci, comparați gradienții cu gradienții observați efectiv în imaginea de rulare. Și puteți lua în considerare direcția gradientului și magnitudinea gradientului. Acum, se dovedește că, în multe cazuri, mărimea gradientului nu este foarte de încredere. Depinde de tot felul de factori -- materiale, iluminare, accidente de aliniere, în timp ce direcția gradientului este mult mai probabil să fie menținută, chiar dacă există schimbări în iluminare, schimbare de material și așa mai departe. Deci, atunci când faci comparația, probabil că vrei să te concentrezi pe direcție. Deci acesta este un exemplu. Dar poți face mai mult. Și iată un alt exemplu. Deci fiecare dintre acele sonde are o poziție, o direcție, are și o greutate. Și acesta este practic un mod de a spune, cât de important este acesta? S- ar putea, de exemplu, să aveți niște margini slabe în imaginea principală și să spuneți, ei bine, probabil că nu este la fel de important ca acestea să se potrivească foarte bine, astfel încât să puteți atribui o pondere în funcție de orice. Dar acesta este un motiv. O altă modalitate de a atribui o greutate este să decideți manual, acestea sunt margini importante și acestea nu. Deci, în acest caz, obiectul principal este designul prototip pentru forma de telefon mobil, așa cum spune Apple, dreptunghi cu colțuri rotunjite, am patentat asta. Și asta este forma. Și așa avem toate aceste direcții de gradient de-a lungul acolo, care este foarte familiar față de cea anterioară. Dar apoi îi avem și pe acești tipi. Deci ce este asta? Ei bine, acestea au fost introduse manual și au ponderi negative, astfel încât, dacă o potriviți cu aceasta, asta înseamnă că este ceva în neregulă, deoarece obiectul ar trebui să se oprească aici. Și deci asta pentru a avea grijă de posibilitatea ca un obiect să aibă anumite simetrii. Ca și în acest caz, îl putem glisa în această direcție. Și menținem. Toate acestea încă se potrivesc de-a lungul marginii inferioare. Dar apoi ne plimbăm în afara zonei acceptabile de aici și suntem penalizați pentru că aceste sonde au o greutate negativă. Și la fel și cu mișcarea în direcția verticală, care ar menține potriviri pentru toate aceste lucruri pe lateral. Dar când vei ieși aici, se va spune: OK, există o contribuție negativă la total. Acum, este o idee bună, dar nu este foarte folosită. Și motivul este că celelalte, le puteți genera automat. Acestea necesită o intervenție umană. Nu cred că cineva le-a folosit cu adevărat într-un mod automat. Acum, ceilalți, puteți rula procesul nostru de margine și diagrama flux pe care tocmai v-am arătat-o și ați terminat. OK, deci aici, ei își descriu notația. Și amintiți-vă că asta a fost în vremurile de glorie ale, oh, facem programare orientată pe obiecte . Totul trebuie să fie un obiect. Deci toate aceste lucruri acum sunt obiecte. Deci care sunt aceste obiecte? Deci modelul este ceea ce obțineți din imaginea principală. Si in ce va consta modelul? Contine sonde. Acestea sunt lucrurile care au poziție, direcție și greutate și sonde create de pasul de antrenament. Și apoi conțin granularitatea, care a fost acel număr care vă spune care este cursul de scară la care va funcționa - și contrast, despre care am discutat. Deci asta este întregul... asta este un model. OK, obiectul sondei... OK, deci ce este o sondă? Am pierdut ceva? Nu. OK, deci ce este o sondă? Ei bine, are o poziție, o direcție și o greutate. Și puteți vedea care sunt acestea: un vector cu doi, un unghi binar, iar greutatea este un număr real, care poate fi pozitiv sau negativ. Ce este un obiect sonda compilat? Deci, în timp ce această metodă este evident mult mai eficientă din punct de vedere computațional decât, să zicem, corelația normalizată, deoarece ne uităm doar la pozițiile sondelor din care ar putea exista zeci sau sute în loc de milioane de pixeli. Există încă o preocupare cu viteza. Și astfel traducerea este tratată diferit, deoarece traducerea este atât de ușor de implementat. Știi, este exact ca un decalaj al coeficientului INJ al unei axe a matricei. Și astfel se schimbă toate celelalte transformări, rotații, scalare, raportul de aspect asimetric , indiferent ce se face la nivel abstract. Dar chiar la sfârșit, partea translațională este tratată într-o buclă imbricată foarte simplă, bucla INJ care doar schimbă lucrurile în incremente de pixeli în x și y. Deci asta înseamnă că modelul tău poate fi adus în acea lume ținând cont de toate celelalte transformări. Deci obiectul sondă compilat este setul de sonde care sunt acum specializate în coordonatele imaginii. Și puteți doar suprapune acest lucru pe imagine și mutați-l pentru a calcula potrivirea. Dar ai de-a face doar cu traducerea la acel nivel. Deci este un fel de detaliu, dar este un detaliu important. Și astfel obiectul compilat este foarte asemănător cu... sonda compilată este foarte asemănătoare cu sonda. Are o direcție și o greutate. Marea diferență este că offset-ul este un număr întreg în pixeli, spre deosebire de tot ceea ce până în acel moment era o variabilă reală. Nu a fost cuantificat. Ei bine, să vedem. Sondă compilată-- deci aceasta este o funcție care compilează probele. Nu voi trece prin toate astea, vei fi fericit să știi. Deci matricea C este porțiunea fără translație a hărții. Deci, așa cum am explicat, asta include toate transformările, cu excepția traducerii. Atunci care este harta? Ei bine, harta este această transformare care are mai multe grade de libertate pe care încercăm să le găsim maximul. Vector de... să trecem peste asta. Bine, până acum, ne-am ocupat destul de mult despre cum să construim modelul, cum să luăm imaginea frumoasă a obiectului fără dezordine și fundal, netedă și așa mai departe și să creăm modelul. Acum începem să vorbim despre cum să folosim modelul. Deci, așa cum am menționat, mapăm modelul pe imagine. Este foarte important să ne amintim acest lucru, deoarece vom vorbi mai târziu despre un model diferit, unde este doar invers, în care mapăm imaginea de rulare deasupra modelului. Și se dovedește, de ce o facem așa? Ei bine, ai putea transforma brusc mai degrabă imaginea decât modelul, dar modelul are câteva zeci de puncte în el. Este foarte ieftin de transformat, în timp ce imaginea are mulți pixeli. Deci va fi scump. Puteți folosi Photoshop pentru a roti, a traduce imaginea. Cu siguranță, toate acestea sunt posibile. Dar încercăm să evităm această cheltuială. Și astfel, în acest caz, este important să ne amintim că harta este de la model și pune modelul în jos deasupra imaginii de rulare. OK, acum, ce facem? Ei bine, la fiecare poziție a sondei, întrebăm imaginea de rulare, care este gradientul aici? Ei bine, de fapt precalculăm gradientul și îl eșantionăm. Și apoi, comparăm. Și așa cum am menționat, suntem mai preocupați de direcția gradientului decât de magnitudine. Și cum să înscriem asta? Ei bine, dacă sunt în aceeași direcție, e grozav. Dacă sunt la 90 de grade unul de celălalt, este oribil. Și deci iată o funcție de gradare care se află în grade între cele două direcții ale gradienților. Și puteți vedea că există un pic de pată. Deci, dacă sunteți oprit cu până la 11,25 grade, este la fel de bun ca 0. Și asta pentru că toate aceste calcule au unele limitări, ceva zgomot și așa mai departe. Așa că doriți să permiteți o mică înclinare în direcția gradientului. Dar atunci nu vrei să cazi de pe o stâncă. Nu vrei să spui, OK, dacă sunt 11,3 grade, atunci nu se potrivește. Deci, în schimb, îl micșorați liniar până când ajungeți la 22,5, moment în care spuneți: OK, ei bine, aceasta nu mai este potrivită. Este o diferență prea mare , jumătate de 45 de grade. Și este arbitrar cum alegi aceste lucruri. Dar alegerea lor are un efect mai târziu asupra calității. OK, deci aceasta este o funcție de evaluare a diferenței de direcție a sondei care ia în considerare polaritatea, care ia în considerare contrastul, polaritatea contrastului. Deci, bineînțeles, se înfășoară pentru că atunci când te apropii din nou de 360, vei permite o mică... Adică, aceasta este doar minus 11,25 grade și asta înseamnă minus 22,5 grade. Deci, aceasta este funcția care este utilizată pentru a evalua cât de bine se potrivește o sondă cu punctul corespunzător din imaginea de rulare. Acum, dacă spui, în situația mea, poate exista o inversare a contrastului, atunci nu ar trebui să folosesc asta pentru că atunci ar trebui acceptată și diferența de direcție de 180 de grade. Și asta este următoarea cifră. Deci, aici, permitem o mică pantă în jurul valorii de 0 și puțin aproximativ 180 de grade, iar celelalte unghiuri nu sunt acceptate. Și asta este important pentru unele situații de circuit integrat, așa cum am menționat. Există, desigur, un dezavantaj, care este, inevitabil, că ne vom uita la părți complet nelegate ale imaginii. Și există o mică șansă ca acestea să aibă gradientul potrivit. Deci cât de des se va întâmpla asta? Ei bine, aici sus, este destul de rar pentru că putem spune cam asta, să vedem, poate o bandă de 20 de grade. Deci asta înseamnă 20 de grade din 360, 1 din 18. Deci șansa ca potrivirile aleatoare să se prefacă de fapt a fi potriviri bune este de 1 la 18. Ei bine, aici, este de două ori mai mare. Deci, acesta nu este la fel de robust împotriva zgomotului ca acesta. Deci, dacă știți că contrastul nu va fi inversat, nu utilizați acest lucru. Folosește asta. Și la fel, ați putea spune, ei bine, vreau o marjă mai largă. Să ieșim la 45 de grade. Ei bine, totul este foarte bine, cu excepția faptului că asta înseamnă că vei accepta mai multe dintre aceste aliniamente aleatorii. Apoi am menționat că ne putem uita și la magnitudinea gradientului. Și, în unele cazuri, ați putea dori să o ignorați, deoarece nu este la fel de fiabilă. Sau îl puteți folosi direct ca factor de ponderare. Cu cât este mai mare magnitudinea gradientului, cu atât este mai probabil ca acest lucru să fie important. Sau poți spune, ei bine, până la un punct este adevărat. Deci setați un nivel țintă, care este, probabil, gradientul, mărimea, contrastul pe imaginea principală, imaginea de antrenament. Și apoi se saturează. Deci se ridică. Cu cât este mai mare magnitudinea gradientului, cu atât mai bine. Dar are o limită. Nu doar continuă să crească. Deci, există o funcție pentru a nota cât de bine se potrivesc direcțiile gradienților. Și asta pentru a nota cât de bine se potrivesc amplitudinile. Și amintiți-vă, acestea sunt aplicate la fiecare propunere de sondă. Așa că mapați modelul pe imaginea de rulare. Apoi, la fiecare poziție a sondei, verificați care este gradientul și îl puteți asocia cu gradientul în-- așa că aceasta este partea cheie a metodei. Apoi, ajungem la gradele de libertate. Deci, evident, translația, mișcarea, în x, mișcarea în y sunt grade de libertate. Dar vrem să ne ocupăm și de rotație și scalare și... OK, lasă-mă să trec la pagina următoare. Deci, aceasta este o descriere a ceea ce este un grad generalizat de libertate în ceea ce îi privește. Și apoi iată câteva exemple. Ei bine, de fapt, acestea sunt probabil toate cele pe care le-ai putea dori vreodată. Deci avem rotație și are, ca parametri, un unghi în grade. Și se înfășoară? Este important ca metoda de căutare să fie informată dacă atunci când scapi de maxim revii la min. Ei bine, da, pentru rotație, cu siguranță este adevărat. Și ciclul este de 360 ​​de grade. Deci oprește 360 ​​de grade. Și cum cartografiază coordonatele? Ei bine, formula standard, cu excepția faptului că semnul minus este într-un loc în care nu ne-am dori să fie. Și apoi trebuie să vă dați seama de pașii. Veți explora fiecare dintre aceste grade de libertate în pași. Acum, în traducere, s- ar putea să faci doar pași de pixeli. Dar ce ar trebui să folosiți pentru rotație? Deci nu este evident. Și atunci cum schimbă scara imaginii? Ei bine, în acest caz, păstrează scara. Când rotiți ceva, acesta rămâne la aceeași dimensiune. Apoi, s-ar putea să aveți forfecare. Acum, asta înseamnă că transformi un unghi drept într-un unghi nedrept. Și iată transformarea matricei pentru aceasta. Și aceasta a fost o problemă mult mai mare decât este acum, deoarece, astăzi, imaginile de obicei nu au prea multă forfecare în ele. Așadar, pe vremuri, imaginile erau realizate de dispozitive care aveau deviație electromagnetică. Și astfel, axa x a fost doar la fel de perpendiculară pe axa y pe cât a făcut-o cineva când a asamblat-o. Așa că era destul de obișnuit să aibă un alt unghi decât 90 de grade -- nu foarte diferit. Dar unul sau două grade, ar putea fi oprit. Și așa s-ar putea să vrei să faci o căutare pentru asta. Sau să presupunem că lucrați într-o lume în care lucrurile nu sunt tocmai bidimensionale. Ceva ar putea fi... în loc să stea pe bandă rulantă, este ușor înclinată. Ei bine, atunci, dacă te uiți la imaginea acesteia, nu se va imaginea ca dreptunghi. Se va imaginea ca un romb. Și așa s-ar putea să doriți , în această situație, să permiteți această transformare. Desigur, dacă nu vi se întâmplă acest lucru, lăsați-l deoparte pentru că va crește costul de calcul. Apoi ajungem la dimensiune... acum, la scară. Acum, ați putea spune, ei bine, vom crește liniar dimensiunea, lățimea și înălțimea tuturor. Dar aceasta nu este o idee bună, deoarece ceea ce este o creștere liniară pentru un obiect mic este relativ mare în comparație cu aceeași creștere liniară aplicată unui obiect mare. Deci este mai rezonabil să lucrezi la o scară logaritmică. Deci, asta înseamnă că creșterea dimensiunii nu este de 0,01, ci este de 1% sau, să spunem, de 10%. Și atunci când vei crește din nou, nu va fi 20%, ci 21% și așa mai departe. Înțelegi ideea. Deci de aici vine asta. Deci, pentru factorul de dimensiune logaritmic, acesta nu circulă. Și aceasta este maparea pentru asta. Avem partea exponențială acolo. Și așa se schimbă scara în acest caz. Și deci iată unul care doar scalează x și iată unul care doar scala y. Și, desigur, acestea sunt redundante, deoarece în cazul în care x și y scalează la fel, le folosim mai degrabă decât pe acestea două și așa mai departe. Și apoi există un raport de aspect. Din nou, aceasta era mai frecventă decât acum, deoarece scanarea în direcția y era foarte diferită de scanarea în direcția x. Acum, oamenii produc senzori de imagine incredibili de înaltă rezoluție, de înaltă precizie , unde știi că axele sunt la o distanță cât mai aproape de 90 de grade . Și atunci dimensiunea pixelului este fie perfect pătrată, fie cel puțin știi ce este. Trebuie să fii atent la asta pentru că, de multe ori, va fi ceva de genul 504 dintr-un 497. Și când te uiți la cip, pare că este unul la unu, dar citește specificațiile. OK, deci poate fi necesar să aveți grijă de raportul de aspect și așa mai departe. Acum, cei de jos, așa cum am spus, acest lucru este oarecum redundant. De exemplu, aceștia de aici sunt factori la scară liniară și am spus deja, probabil că aceștia nu sunt la fel de interesanți. OK, deci acestea sunt, citat, grade generalizate de libertate. Adică, într-un anumit sens, tot ceea ce aveți nevoie cu adevărat pentru lucrul 2D este translația, rotația și, poate, scalarea. Dar permit mai mult decât atât. OK, ceva terminologie ciudată. Sonda MER este dreptunghiul de închidere minim al sondei. Deci, pentru unele operațiuni, puteți reduce calculul verificând doar dreptunghiul minim și de închidere. Și așa poartă și asta în jur. Și așa gândește-te la acest spațiu multidimensional, acum, al pozei. Deci, poza este translație, rotație etc. Și poate fi multidimensional. Și unul dintre lucrurile care se pot întâmpla este că, atunci când facem această căutare a vârfului, ajungem în acest spațiu cu valori care sunt foarte apropiate, deoarece am ajuns acolo în moduri diferite folosind translația, rotația și scalarea. Și nu vrem să raportăm ambele valori. Și deci trebuie să avem un mod de a spune unde cele două ipostaze sunt foarte apropiate în acel spațiu. Și despre asta este vorba. Nu vom intra în asta în detaliu, dar este pentru a elimina orice suprapunere. OK, exemple de suprapunere, diagrame de flux - diagramele de flux erau obișnuite destul de chestie. Și bănuiesc, să trecem la text-- o mulțime de cifre. Oh bine. Oh, atunci la nivelul de jos, căutarea translațională ar trebui să fie făcută într- un mod eficient și, de asemenea, ar trebui să permită o rezoluție diferită. Iată, așadar, secvența noastră de modele de căutare care pot fi utilizate eficient la cel mai de jos nivel. Și veți observa că practic sunt organizați în jurul hexagonului. Și asta, așa cum am menționat, pentru că obțineți un avantaj de 4 peste pi în ceea ce privește munca efectuată față de rezoluție. Și deci iată cel mai de jos nivel care este la fel ca șahrul roșu/negru , apoi există următoarea scară cea mai înaltă și așa mai departe. Așa că primesc un mic... și asta nu este enorm. Unele dintre celelalte lucruri pe care le fac vă aduc ordine de mărime îmbunătățiri. Acest lucru vă aduce o îmbunătățire relativ mică. Dar lucrul la aceste modele este util și... îmi pare rău. Și amintiți-vă, am vorbit despre detectarea vârfurilor și despre cum ați trebuit să faceți față legăturilor. Trebuia să ai un departajare. Ei bine, devine puțin mai greu pe grila hexagonală. Dar iată o soluție. Așa că verificați dacă punctul central are o valoare mai mare decât aceste trei și are o valoare mai mare sau egală cu cele trei și asta vă asigură că nu veți detecta lucruri adiacente care sunt... OK, oh, Bine, acum, să vedem dacă găsesc locul ăsta. Deci, unul dintre lucrurile frumoase pe care le fac este că explică terminologia. Oh, iată-ne. Deci, există un termen comun în legea brevetelor, care este o expresie comună, și anume că inventatorul poate fi propriul său lexicograf, ceea ce înseamnă doar că, dacă definiți termenul într-un fel în brevet, atunci acesta este modul în care se citește pentru brevet, indiferent dacă există altcineva care este de acord cu acesta, este utilizarea corectă a cuvântului respectiv sau nu. Parcă ascult un program de la Canadian Broadcasting. Și a continuat să vorbească despre agenda neoliberală și chestii de genul ăsta. Și eu zic, așteaptă un minut. Tot ce vorbește el este de dreapta. Cum de el numește asta neoliberal? Ei bine, el a scris cartea. El a numit cartea Neoliberal, bla, bla, bla. Deci el ajunge să definească termenul. Și este vina mea că am folosit interpretarea mea. Deci aici, ei fac asta în mod foarte explicit. Ele definesc toate părțile importante. Deci, Object... ce este un obiect? Este orice obiect fizic sau simulat sau porțiune a acestuia având caracteristici care pot fi măsurate de un dispozitiv de formare a imaginii sau simulate de un dispozitiv de procesare a datelor . Acum, aceasta este o generalizare clasică, nu? Vorbim doar de imaginile făcute cu o cameră. Și avocatul de brevete spune, așteptați puțin. Aceasta are aplicații mult mai largi. Deci, ei vorbesc nu doar despre imagini care au fost realizate din obiecte reale, ci și despre grafică. Deci, aceasta ar putea fi folosită pe datele simulate de un dispozitiv de procesare a datelor . Și puteți citi în aceste imagini cu raze X. Nu trebuie să fie imagini cu lumină vizibilă. Atunci ce este o imagine? O funcție bidimensională ale cărei valori corespund caracteristicilor fizice ale unui obiect -- și apoi cred că trebuie să mergem acolo sus -- cum ar fi luminozitatea, energia radiantă, reflectată sau altfel, culoarea, temperatura, înălțimea. Puteți vedea cât de mult s-au distrat încercând să generalizeze acest lucru cât mai mult posibil. Luminozitate, cantitatea fizică sau simulată reprezentată de valorile unei imagini indiferent de sursă. Deci asta pentru a ne asigura că doar pentru că ai spus luminozitate, nu exclude nimic altceva, cum ar fi temperatura, intensitatea razelor X, nu știu. OK, granularitate-- deci aici se vorbește despre dimensiunea în unități de distanță sub care variațiile spațiale ale luminozității imaginii sunt din ce în ce mai atenuate. Deci, atunci când aruncați în aer o imagine, vine un moment în care începe să pară neclară. Și puteți lega definiția lor a granularității la acel punct. Poate fi considerat ca fiind legat de rezoluție. Limită, ce este o graniță? Un contur imaginar, deschis sau închis, drept sau curbat, neted sau ascuțit - alegeți. Îmi place acest lucru în care spune, de exemplu, că va spune ceva de genul cuvintelor și și sau înseamnă ambele și și sau. E ca, ce? Astfel, ei generalizează totul. Și devine mai rău. Adică, pentru noi ne gândim la logică și și sau sunt concepte foarte diferite. Dar acum puteți parcurge întregul document, înlocuiți toate aparițiile și cu sau și încercați toate combinațiile posibile și este încă acoperit de acel brevet. Gradient... Ei bine, știm ce este un gradient. Vector într-un punct dat dintr- o imagine dând direcția și magnitudinea celei mai mari modificări a luminozității la o granularitate specificată. Model -- un aranjament geometric specific al contururilor situate într-un subset delimitat al planului de contururi, contururile menționate reprezentând limitele. Deci ai fi putut veni cu acea definiție? Adică, asta necesită artă. Obții o diplomă în drept înainte de a putea face asta. Model -- un set de caracteristici de codificare a datelor ale unui model care trebuie găsit pentru a fi utilizat printr-o metodă de găsire a modelului. Antrenament -- un act de creare a unui model dintr-o imagine a unui obiect exemplu sau dintr-o descriere geometrică a acestuia. Nu am discutat despre asta. Am presupus până acum că facem modelul dintr-o imagine reală. Dar, desigur, dacă aveți CAD-ul pentru obiect, s- ar putea foarte bine să spuneți, ei bine, acesta este și mai mult un standard de aur. Acesta este cu adevărat adevărul. Și astfel ați putea produce modelul din desen mecanic sau viziune computerizată echivalentă. Dezavantajul este că, dacă există un proces în producție care nu reproduce exact CAD-ul, nu veți captura asta pentru că lucrați - și acest lucru este foarte comun, de exemplu, în circuitele imprimate sau în circuitele integrate. Aveți un aspect perfect dreptunghiular, cu colțuri ascuțite. Ei bine, când treceți prin și expuneți materialul și îl puneți în baia chimică, acel colț nu va fi un colț ascuțit. Va fi rotunjit. Și astfel, acestea sunt situații în care lucrul cu obiectul real este mai bine decât lucrul cu un CAD. OK, poziția -- o mapare de la model la coordonatele imaginii -- am discutat despre asta -- reprezentând o transformare specifică în suprapunerea unui model pe o imagine. Așadar, așa cum am menționat, acest lucru este neobișnuit prin faptul că s-au dat problemei să dezvăluie și să enumere termenii pe care îi vor folosi, ceea ce este foarte bun pentru că, atunci, dacă există vreun argument despre ce înseamnă specificația sau, într-adevăr, ce înseamnă pretențiile, atunci asta este definit acolo. Deci hai să trecem înainte. Deci restul, lucrurile obișnuite. Contextul de ce acesta este cel mai bun lucru de la felii de brânză sau de pâinea feliată și apoi, care este stadiul tehnicii? Așa că ei vorbesc despre toate lucrurile despre care am vorbit - șabloane binare, analiză blob, corelație și transformări dure, despre care nu am vorbit. Și apoi ajung la rezumatul invenției lor, care intră destul de repede în discuția despre figurile și detaliile figurilor. Și apoi sunt niște ecuații. Vezi aici, explicația, e destul de lungă. Iată cifrele. Încerc să ajung la revendicări. Uau, există chiar și un semn integral. Este curat. Da, wow. Oh, asta este integrala de calcul a zgomotului de la 0 la 360. Și devine cam interesant. Există ceva matematică adevărată acolo. OK, haide. Oh, iată-ne, Claims. Am preferat... OK, trebuie să fie jos, aici. OK, ceea ce se revendică este o metodă pentru determinarea prezenței sau absenței a cel puțin unei instanțe a unui model predeterminat într-o imagine de rulare și pentru determinarea locației multidimensionale - locația, în paranteze, poziția -- a fiecărei instanțe prezente, metoda cuprinzând. Și apoi merg mai departe și descriu detaliile. Și vom vorbi câteva despre aceste detalii. Nici ei nu au spus asta dinainte, dar încorporează posibilitatea de inspecție și posibilitatea de recunoaștere. Deci recunoașterea este ceea ce se va întâmpla dacă ai un meci foarte bun. Și așadar, dacă aveți posibilitatea de a vedea mai mult de un obiect, ei bine, rulați acest proces pentru fiecare dintre ele. Și, probabil, majoritatea nu vor fi un meci bun. Și unul dintre ei o va face. Și asta este recunoașterea ta. Un alt lucru -- inspecția -- această metodă funcționează chiar dacă părți ale obiectului sunt ascunse sau părți ale obiectului lipsesc. Dar, desigur, calitatea meciului va scădea pe măsură ce eliminați lucrurile. Deci, dacă echipamentul tău și-a pierdut un dinte, vei obține totuși o potrivire destul de bună. Dacă e să pierzi doi dinți, nu atât de bine și așa mai departe. Deci, evident, vă spune că îl puteți folosi pentru inspecție. Deci, după ce ați găsit obiectul în poză și l-ați potrivit, puteți califica cât de bună este o potrivire. Și acesta ar putea fi o modalitate de a respinge o parte care nu este satisfăcătoare. Deci, aceasta este în mare parte revendicări ale metodei. Încerc să-mi amintesc dacă aceasta-- metoda-- și apoi o mulțime de revendicări dependente. Metoda conform revendicării 1 plus aceasta. Și nu-mi amintesc dacă acesta mai are revendicări despre aparat. Metoda revendicării unu - toate acestea sunt revendicări ale metodei. Da, toate revendicările metodei. Cred că ceea ce s-a întâmplat este că situația legală s-a schimbat puțin și nu au mai fost nevoiți să facă acel joc de a avea atât aparate, cât și metode. OK, unde suntem? BINE. Așa că sper că ideea de sonde este destul de clară. Și modelul, modelul este compus din aceste sonde. Și uriașul avantaj al utilizării sondelor în comparație cu utilizarea, să zicem, a corelației - pentru că acum ne uităm doar la un număr mic de puncte din imaginea cu gradient. Acum, teoretic, am putea doar să calculăm gradientul atunci când trebuie să-l potrivim. Dar, deoarece vom face această potrivire de multe, de multe ori cu orientări și poziții diferite pentru model, există un avantaj clar la precalcularea gradientului. Așa că folosim celălalt brevet pentru a finaliza lucrarea, iar apoi sărim și suprapunem -- mapăm modelul deasupra imaginii de rulare și sunt doar câteva locuri. Și colectăm dovezi. Deci, în fiecare dintre acele locuri de sondă, punem întrebarea, susține asta ipoteza că există un obiect cu această poziție? Și apoi adunăm toate dovezile. Și asta ne dă un scor. Și apoi din asta, putem construi o suprafață de scor în acest spațiu multidimensional. Acum, acest lucru este mult mai ușor de vizualizat dacă ne ocupăm doar de traducere. Apoi avem o funcție care variază cu x și y și căutăm vârful. Și asta este traducerea noastră. Au fost efectuate. Dar, desigur, ne interesează și să ne ocupăm de rotație, scalare etc. Deci este puțin mai dificil, dar aceeași idee. Permiteți-mi să vorbesc puțin despre această problemă de zgomot. Deci se numește zgomot, care este un fel de o denumire greșită în brevet. Amintiți-vă, am avut această funcție de scor pentru unde aceasta a fost diferența de grade dintre direcția sondei modelului și direcția gradientului de rulare. Și am spus că există o oarecare probabilitate ca dacă doar suprapuneți acest lucru într-un loc aleatoriu din imaginea de rulare, să obțineți o potrivire. Și deci cât de rău este asta? Ei bine, evident, ceea ce vrei să faci este doar să integrezi... cum să numim chestia asta? Nu știu, funcție de punctaj. Deci, dacă acesta a fost 22,5 și acesta a fost 11,25, putem calcula această integrală. Am uitat la ce iese. Și, de asemenea, evident, dacă folosim metoda care este insensibilă la sinusul contrastului, atunci dublăm cantitatea pe care o vom obține din potriviri aleatorii. Acum, există două aspecte ale acestui lucru. Una dintre ele este că putem calcula cât de mult va compensa rezultatul și putem scădea, astfel încât să putem elimina această eroare. Dar celălalt este, desigur, că va contribui la zgomotul rezultat, că nu este la fel de bun. Deci iată o idee. Deci, este un fel de neplăcut să calculați acest lucru, să luați cele două direcții, să luați diferența de unghi și apoi să o căutați în acest tabel funcțional. Ce zici dacă luăm doar produsele punctuale ale acestor doi vectori? Dacă aveți doi vectori unitari, putem lua doar produsul punctual. Și acesta va fi cosinusul unghiului dintre ei, nu? Deci ar fi foarte ieftin de calculat pentru că atunci, în sondă, stochez doar V1. Și în imaginea de rulare, am V2 calculat de acel brevet anterior. Și apoi, iau doar produsul punctual, care va fi mai ieftin decât utilizarea acelei metode, deoarece, în această metodă, trebuie să folosesc atan pentru a obține unghiul. Și trebuie să-l folosesc de două ori, o dată la antrenament. Deci cui îi pasă? Faci asta o singură dată. Dar o dată în imaginea de rulare. Deci ce e în neregulă cu asta? Ei bine, asta înseamnă că funcția mea de ponderare arată așa, deoarece dacă sunt aliniate, primesc 1. Dacă sunt vizavi unul de celălalt, primesc minus 1. Și deci acesta este un potențial. Acest lucru nu este în brevet. Acesta este un punctaj alternativ, nu la fel de bun, pentru funcția de direcție a gradientului. Acum, acesta este cel care ține cont de polaritate, dar mă pot gândi și la cel care este insensibil la polaritate, care ar fi valoarea absolută a acesteia. Și așa cred că puteți vedea care este problema, care este aceasta va produce un rezultat destul de mare doar din potriviri aleatorii, nu? Deci ar trebui să luăm integrala cosinusului, valoarea absolută a cosinusului de la 0 la 360 de grade și, nu știu, uit ce este -- pi peste 4 sau ceva de genul. Dar este un număr mare, în timp ce numărul de aici este foarte mic. Să estimăm asta. Oh, am făcut-o. Am spus 20 peste... este ca, 1 din 18. Nu cred că este corect, dar este aproximativ atât. Acesta va fi mult mai mare, cum ar fi 1 și 1/2 sau ceva. Deci da, este mult mai ușor de calculat, dar nu este nici pe departe la fel de bun, așa că nu l-au folosit. Deci, ce rămâne de spus despre asta? Așa că acest lucru a avut mare succes. Și mai trebuie să vorbim despre funcțiile de scor. Cum sunt combinate aceste măsurători? Dar atunci, doar urcând un nivel, care este dezavantajul acestei metode? Este cuantificat. Cuantificăm spațiul de poziție. Deci ne uităm doar la, să spunem, rotații care sunt multipli de 5 grade. Adică, trebuie să decidem cât de mult să-l cuantificăm. Dar este cuantificat. Cum luăm această decizie? Ei bine, am putea face totul foarte bine, dar apoi calculul este foarte lent. Deci există un schimb acolo. Și cum putem îmbunătăți asta? Ei bine, o modalitate este de a folosi metoda cu cuantizare destul de grosieră. Dar apoi, trebuie să căutăm tot spațiul de poziție. La început, nu știm nimic. Ar putea fi rotit cu cinci grade, 143 de grade, orice. Așa că suntem forțați să căutăm tot spațiul de poziție. Dar odată ce aveți un număr de potriviri potențiale - și, de obicei, doriți să păstrați mai multe -- atunci puteți căuta cu o cuantizare mai fină în apropiere. Și deci acesta este un alt aspect important al acestui lucru și va trebui să vorbim despre asta. Deci, ideea este că este un fel ca la scară multiplă, că noi... la o scară de bază, parcurgem întregul spațiu de poziție a cursului și apoi folosim un bloc chiar în jurul zonelor care par să producă un rezultat bun pentru a obține un rezultat mai precis. Deci ceea ce eram... din nou , brevetul este online. Probabil ar trebui să te uiți la asta. Și ce mai am de făcut este să vorbesc despre diferitele funcții de scoring pentru că, în unele cazuri, ne- am dori un scor pe care să îl comparăm cu un prag absolut și să spunem: OK, dacă este mai mare de 0,95, atunci avem cu siguranță un potrivire, genul ăla despre care am vorbit cu corelație normalizată. În alte cazuri, vrem doar să obținem un rezultat cât mai repede posibil. Și găsim vârful și nu ne interesează cât de mare este vârful. Deci sunt două calcule diferite. Și în funcție de ceea ce facem, unul poate fi mai eficient decât celălalt. Apoi, ar putea dori să facem lucruri precum eliminarea acestui termen, care cred că este de fapt 3 peste 32. Dar, în orice caz, nu este prea greu de realizat. Deci, să-i spunem N. Chiar vrem să eliminăm asta? Ei bine, asta va însemna că există mai multe calcule, dar va fi mai precis. Deci, în funcție de locul în care ne aflăm în proces, ne apropiem de răspuns. Vrem să-l rafinăm pentru a fi cât mai precis posibil. Apoi, vom arunca asta și doar vom mușca glonțul din el, luând mai multe calcule. OK, câteva puncte pe care le-am evidențiat aici -- unul dintre ele este că, dacă lucrăm la mai multe scari, atunci vom dori să folosim diferite sonde la diferite scale. Și acesta este un fel de mod și mai sofisticat de a proceda, în care, în loc să fixăm doar cuantizarea sau fixarea granularității, încercăm la diferite granularități. Și dacă facem asta, avem nevoie de modele diferite pentru fiecare dintre aceste granularități. Apoi este nevoie de filtrare trece-jos rapidă, deoarece încercăm să construim aceste niveluri multiple. Și vom vorbi despre asta pentru că un alt brevet, care este mult mai ușor decât acesta, ne oferă metode pentru efectuarea foarte rapidă a convoluțiilor și filtrarea trece-jos. Direcția gradientului este mai fiabilă decât luminozitatea -- contrastul, am vorbit despre asta. Fiecare test oferă dovezi directe ale prezenței modelului. Am vorbit despre modul în care sondele vor contribui cu dovezi. Sondele nu sunt limitate la grila de pixeli. Oh, asta e una importantă. Adică, în primul rând, sunt derivate din puncte de margine pe care le-am interpolat deja. Deci acestea nu erau deja pe grila de pixeli. Dar apoi, în plus, le aruncăm afară și ne punem propriile sonde separat. Limită de precizie-- oh, precizie limitată de cuantificarea spațiului de căutare. De ce subliniez asta? Ei bine, pentru că asta ne va duce la un alt tipar care o face într-un mod diferit, care nu este limitat în acest sens. Deci de ce vorbim despre acesta? Ei bine, pentru că celălalt are nevoie de o primă estimare bună. Și astfel, acesta este modul de a obține o primă estimare foarte bună. Și apoi celălalt îl poate rafina. Și nu se limitează la pași discreti în spațiul de poziție. OK, asta e tot pentru azi.