Introducere …………………………………………………………………………………………………………… 4 Tehnologii… [304750]
UNIVERSITATEA DIN BUCUREȘTI
Facultatea de Matematică și Informatică
Specializarea Informatică
LUCRARE DE LICENȚĂ
Urmărirea mișcării obiectelor
Coordonator
Lect. Dr. Păduraru Ciprian
Absolvent: [anonimizat]
2019
UNIVERSITATEA DIN BUCUREȘTI
Facultatea de Matematică și Informatică
Specializarea Informatică
LUCRARE DE LICENȚĂ
Urmărirea mișcării obiectelor
Coordonator
Lect. Dr. Păduraru Ciprian
Absolvent: [anonimizat]
2019
Cuprins
Capitolul 1. Introducere
Introducere …………………………………………………………………………………………………………… 4
Tehnologii folosite ………………………………………………………………………………………………… 5
Python 3.6 ………………………………………………………………………………………………. 5
OpenCV …………………………………………………………………………………………………. 5
Python-OpenCV ……………………………………………………………………………………… 5
Tracking vs Detection ……………………………………………………………………………………………. 6
Capitolul 2. Algoritmi de tip „Tracking”
Object Algorithms Tracking …………………………………………………………………………………….. 7
Tracker-ul BOOSTING …………………………………………………………………………………………… 8
Tracker-ul MIL ……………………………………………………………………………………………………… 10
Tracker-ul KCF …………………………………………………………………………………………………….. 11
Tracker-ul TLD …………………………………………………………………………………………………….. 12
Tracker-ul MEDIANFLOW …………………………………………………………………………………… 15
Tracker-ul GOTURN …………………………………………………………………………………………….. 16
Tracker-ul MOSSE ………………………………………………………………………………………………… 17
Tracker-ul CSRT ………. …………………………………………………………………………………………. 18
Capitolul 3. Evaluare
Baza de date folosită și modul de evaluare al algoritmilor ………………………………………… 18
Evaluarea performanței algoritmilor ………………………………………………………………………. 19
Evaluarea algoritmilor în mod calitativ (occlusions) ………………………………………………… 32
Bibliografie …………………………………………………………………………………………………………………. 43
Anexe …………………………………………………………………………………………………………………………. 44
Capitolul 1. Introducere
1.1 Introducere
Scopul algoritmilor de supraveghere este de a [anonimizat] o [anonimizat]-un video. Această supraveghere a [anonimizat]tat. Astfel, cu un algoritm eficient, se poate determina cu ce viteză și în ce direcție se deplasează obiectul ales. Cunoscând aceste lucruri, se poate calcula cu ușurință unde se va afla modelul în cadrele viitoare ale video-ului.
În viața de zi cu zi, algoritmii de supraveghere au o vastă utilizare, aceasta fiind și motivația alegerii acestei teme. Am observat prezența acestora la scară largă în recuperarea înregistrărilor video, controlul roboților și supravegherea traficului. Astfel, consider necesară o bună înțelegere a acestor algoritmi de urmărire atât din punct de vedere al mecanismului de funcționare cât și al performanței.
Rezultatele generate de algoritmii de supraveghere pot fi destul de greu de interpretat fără o bază de date vastă a unor video-uri de test. Totuși, având la dispoziție aceste resurse, se poate realiza o paralelă interesantă între diverși algoritmi de urmărire și scenariile în care aceștia pot fi folosiți, evidențiidu-se momentele cheie pentru studiul realizat: ocluziile dintre modelele urmărite și alte modele din fundal, ieșirea obiectului din cadru, mărirea sau micșorarea modelului observat, schimbarea bruscă a direcției de deplasare a acestuia etc.
1.2 Tehnologii folosite
1.2.1 Python 3.6
Python 3.6 este un limbaj de programare de nivel înalt ce a apărut în anul 2016. Acesta este folosit în inteligența artificială fiind un limbaj multi-paradigmă (programarea orientată pe obitecte, imperativă, funcțională, procedurală, reflectivă).
Am ales această tehnologie datorită bibliotecii de metode de care dispune. Trei dintre aceste biblioteci sunt OpenCV-Python, Numpy și MatplotLib.
1.2.2 OpenCV
OpenCV este o tehnologie ce a debutat în anul 1999. „Aceasta a fost folosită pe o mașină autonomă, poreclită „Stanley”, ce a câștigat în anul 2005 DARPA Grand Challenge.” [7] Suportă o varietate de limbaje de programare ca și C++, Python etc., si este disponibil atât pe Windows cât și pe Linux, OS X, Android și IOS.
În prezent, OpenCV conține o multitudine de algoritmi relativi la Computer Vision și Machine Learning.
1.2.3 OpenCV-Python
OpenCV-Python este o librărie dedicată acestui limbaj de programare la baza căreia stă Numpy, o librărie optimizată pentru operațiile numerice asemănătoare sintaxei MATLAB. Astfel, toate structurile de tip matrice sau vector din OpenCV sunt convertite în vectori Numpy și invers. Prin acest proces, librăria pentru învățarea mecanică (machine learning) poate fi accesată direct prin intermediul limbajului de programare Python.
1.3 Tracking vs Detection
Pentru „Object Tracking” (urmărirea obiectelor) există mai multe clase de algoritmi care conduc la același rezultat.
Dense Optical Flow (flux optic dens) sunt acei algoritmi care ajută la estimarea vectorului de mișcare pentru fiecare pixel dintr-un frame extras din video.
Sparse Optical Flow (flux optic redus) sunt algoritmii care urmăresc locația câtorva puncte din imagine. Din această categorie face parte și algoritmul Kanade-Lucas-Tomashi (KLT).
Kalman Filtering (filtrarea Kalman) reprezintă un algoritm de procesare a semnalului utilizat care prezice locația unui obiect în mișcare bazându-se pe informațiilor anterioare privind deplasarea sa. „Una dintre aplicațiile acestui algoritm a fost ghidarea rachetelor. În particular, calculatorul de bord care a condus coborârea modulului lunar Apollo 11 pe lună avea un filtru Kalman.” [9]
Meanshift și Camshift sunt algoritmi folosiți la localizarea maximului unei functți dense. De asemenea, se folosesc și pentru tracking.
Single Object Trackers (tracker de obiecte unice) reprezintă o clasă de algoritmi unde primul cadru în care apare modelul este marcat cu un dreptunghi pentru a indica locația sa. Obiectul este apoi urmărit de-a lungul secvențelor folosind acest algoritm. În practică, acești algoritmi se folosesc împreună cu un detector de obiecte.
Multiple Object Track Finding Algorithms (algoritmi de gasire a obiectelor multiple) sunt utilizați în cazul în care avem o detectare rapidă a obiectelor. Logica este detectarea mai multor obiecte în fiecare cadru și apoi rularea algoritmului de găsire care identifică ce dreptunghi dintr-un cadru corespunde cu alt dreptunghi din urmatorul cadru.
„Object detection” (detectarea obiectelor) reprezintă scanarea și căutarea unui obiect într-o imagine sau într-un video, spre deosebire de „object tracking” care nu doar găsește un obiect, ci și îl urmărește, returnând pe langă poziția sa, viteza și locul în care se deplasează. Astfel, apar mai multe motive pentru care tracking-ul unui obiect este mai eficient decat detectarea lui.
În primul rand, tracking-ul este mai rapid față de simpla detectare. Motivul este simplu. Atunci cand se urmărește un obiect care a fost detectat deja în cadrele anterioare din video, se știe deja cum arată obiectul, locațiile anterioare, direcția de deplasare și viteza mișcării. În urmatoarele cadre, folosind toate aceste informații, se poate preciza locația obiectului printr-o căutare simplă în jurul locului în care ar trebui să se afle. Localizarea va dobândi astfel eficiență maximă din punct de vedere al timpului. Un algoritm de urmărire se va folosi mereu de toate datele de care dispune până în acel moment, în timp ce unul de detectare va începe mereu căutarea de la zero. Totuși, poți pierde urma unui obiect dacă acesta trece prin spatele unui obstacol pentru o perioadă mai lungă de timp sau dacă se mișcă mai repede față de viteza de urmărire a algoritmului. O altă problemă comună a algoritmilor de tracking este faptul că dreptunghiul ce urmărește obiectul se îndepărtează ușor de el, generând erori. Aceasă problemă se rezolvă prin rularea algoritmului de detectare. Aceștia din urmă au mai multe informații legate de clasa obiectului, fiind antrenați pe un număr mai mare de exemple de obiecte. Totuși, cei de tracking au mai multe informații specifice fiecărui obiect urmărit. În primul frame, dreptunghiul de pe poziția 16 poate fi asociat, în cea de-a doua matrice, cu cel de pe poziția 23. Astfel, folosind detectarea, nu avem nicio idee despre ce dreptunghi ii corespunde cărui obiect. Trackig-ul oferă, pe de altă parte, o modalitate de a conecta literalmente punctele.
În al doilea rând, urmărirea păstrează identitatea fiecărui model. Rezultatul detectării obiectelor este o matrice de dreptunghiuri în jurul modelului. Cu toate acestea, nu există nicio identitate atașată obiectului. De exemplu, un detector ce găsește puncte roșii, va afișa dreptunghiuri corespunzătoare tuturor punctelor pe care le-a detectat într-un cadru. În cadrul următor, va fi generată o altă matrice de dreptunghiuri
De asemenea, tracking-ul (urmărirea) poate ajuta atunci când detectarea eșuează. Un bun exemplu este momentul în care fața unei persoane urmărite este acoperită parțial. Pentru acest scenariu, un algoritm eficient este „Multiple Instance Learning” (MIL) tracker.
Capitolul 2. Algoritmi de tip „Tracking”
2.1. Object Algorithms Tracking (algoritmi de urmărire a obiectelor)
Scopul algoritmilor de urmărire nu este de a avea o înțelegere teoretică a fiecărui tracker în parte, ci de a le înțelege din punct de vedere practic.
În urmărire, obiectivul principal este găsirea unui obiect în cadrul actual, având deja obiectul urmărit cu succes în cadrele anterioare. Din moment ce am urmărit obiectul până în cadrul actual, se cunoaște viteza, direcția de deplasare și locația acestuia. Fără alte cunoștințe, se poate prezice noua locație pe baza modelului de mișcare actual și aceasta poate fi destul de aproape de locul în care se află noua locație a obiectului. Dar, se cunosc mai multe informații nu doar despre mișcarea obiectului. Se știe cum arată obiectul în fiecare din cadrele anterioare, deci, se poate construi un „appearance model” (model de aparență) ce poate fi folosit pentru a căuta într-o zonă și mai restrânsă a locației prezise de modelul de mișcare. Astfel se va realiza o prezicere mai exactă a locației obiectului folosindu-se cele doua modele: cel de mișcare și cel de aspect.
Dacă obiectul a fost foarte simplu și nu s-a schimbat foarte mult, se poate folosi un șablon ca model de aspect și să se efectueze căutarea după acel șablon. Cu toate acestea, în viața reală nu este atât de simplu. Aspectul unui obiect se poate modifica dramatic de la un moment la altul. Pentru abordarea acestei probleme, multe tracker-e folosesc modelul de aspect ca pe un clasificator care e antrenat într-o manieră online. Clasificatorul are misiunea de a clasifica un dreptunghi ca fiind parte din background sau obiect returnând o valoare între 0 si 1 care indică probabilitatea ca pachetul de imagini să conțină obiectul. Scorul este 0 atunci când este absolut sigur că dreptunghiul face parte din fundal și 1 atunci cand face parte din obiect.
În procesul de învățare (machine learning) se folosește cuvântul „online” pentru a sugera algoritmii care sunt antrenați la momentul rulării. Acest timp de învățare este definită ca fiind învățarea nesupervizată. Pe de alta parte, cea supervizată (offline) are nevoie de mii de exemple pentru a se antrena, comparativ cu cel online care are nevoie doar de câteva exemple.
Astfel, pentru a antrena un clasificator să detecteze persoane și mașini, acesta trebuie antrenat cu mii de imagini ce conțin oameni și vehicule și imagini ce nu conțin nici una nici alta pentru a putea diferenția ce este om sau mașina de ceea este fundal. Pe de altă parte, dacă se folosește un clasificator online, nu vor exista aceste mii de exemple de clase pozitive și negative.
2.2 Tracker-ul BOOSTING
Acest tracker este bazat pe versiunea online a algoritmului AdaBoost. „Algoritmul AdaBoost al lui Freund și Schapire a fost primul algoritm folosit în practică și rămâne unul dintre cele mai folosite la scară largă și cele mai studiate cu aplicații în multe domenii științifice.” [10] Cu toate astea, algoritmul fiind vechi, are o performanță de rulare mediocră. De asemenea, nu se poate determina momentul în care tracking-ul a eșuat.
Acest clasificator trebuie să fie instruit în timpul rulării cu exemple pozitive și negative ale obiectului. Caseta de margine inițială furnizată de utilizator este considerată ca exempl pozitiv pentru obiect și toate celelalte pachete de cadre din exterior sunt considerate parte din fundal. Având un nou cadru, clasificatorul este rulat pe fiecare pixel din vecinătatea locului anterior și se înregistrează scorul clasificatorului. Noua locație a obiectului este cea în care punctajul este maxim. Pe măsură ce video-ul rulează, sunt furnizate noi cadre, iar clasificatorul este actualizat pe baza acestora.
Matematic vorbind, algoritmul AdaBoost parcurge un număr de T iterații. La fiecare iterație alege clasificatorul slab cel mai bun ht(P) pe care îl folosește la construcția unui clasificator f(P) mai puternic. Această funcție [10] este de forma:
[10]
Algoritmul BOOSTING (pseudocod) [16]
Intrare: Distribuția comună cu , predicția inițială . În practică, este probabilitatea empirică a datelor de antrenare.
Pentru se execută
Găsește astfel încât: . Minimizarea nu trebuie sa fie exactă.
Găsește un coeficient astfel încât: . Metoda căutării liniare sau metoda lui Newton poate fi aplicată pentru a rezolva problema de optimizare a unei singure dimensiuni.
Actualizarea predicției: .
Ieșire: predicție estimată
2.3 Tracker-ul MIL
Acest tracker este similar cu tracker-ul BOOSTING descris anterior. Diferența mare este faptul că în loc să se considere doar locația curentă a obiectului ca un exemplu pozitiv, se caută în vecinătatea exemplului pentru a genera câteva potențiale exemple pozitive. Totuși, această tehnică pare să dea greș deoarece în majoritatea acestor exemple pozitive, obiectul nu este centrat.
Aici intervine modulul de învățare a instanțelor multiple (Multiple Instance Learning – MIL) pentru salvare. În MIL, nu se specifică exemple pozitive și negative, ci grupuri pozitive și negative. Colecția de imagini acumulată în grupul celor pozitive nu este întotdeauna formată din exemple pozitive. În schimb, este suficient ca doar o imagine din această grupare să fie pozitivă. În exemplul meu, un grup pozitiv conține un patch centrat pe locația curentă a obiectului și, de asemenea, patch-uri din vecinătatea acestuia. Chiar dacă locația curentă a obiectului urmărit nu este exactă, atunci când eșantioanele din vecinătatea locului curent sunt puse în grupul pozitiv, există o bună șansă ca în această colecție să fie cel puțin o imagine în care obiectul este bine centrat.
Performanța acestui tracker este destul de bună. Aceasta nu se deplasează la fel de mult ca tracker-ul BOOSTING, dar face o muncă rezonabilă. Totuși, în versiunea OpenCV 4.0, acest tracker nu este cel mai bun din colecție.
Legat de eroarea de urmărire, aceasta nu este raportată în mod fiabil.
Algoritmul MIL (pseudocod) [12]
Intrare: Datele de antrenare .
Antrenare: Învățarea bazată pe setul instanțelor din toate datele de intrare.
Pentru se execută:
Alege noi vectori pentru funcția de mapare
Folosește noul set de date pentru a învăța clasificatorul .
Testare: Pentru toate execută:
Alege noi vectori pentru funcția de mapare
Ieșire: Predicția
2.4 Tracker-ul KCF
Acest tracker a aparut în versiunea OpenCV 3.1 și este cel mai bun chiar și în versiunea OpenCv 4.0. Precizia, viteza acestuia și raportarea eșecurilor de urmărire sunt cele mai bune.
Tracker-ul a fost propus din necesitatea unei viteze mai bune de antrenare și învățare. Acesta poate rula pe orice calculator la o viteză de 300-450 fps deoarece nu necesită o antrenare offline ci, din contră, rețeaua învață online, parcurgând fiecare cadru din video.
Prescurtarea KCF (Kernelized Correlation Filter) înseamnă filtre de corelație kernel-izate. Acest tracker se bazează pe ideile prezentate anterior în celelalte două tracker-e. KCF se folosește de faptul că mostrele multiple pozitive folosite în cadrul tracker-ului MIL au suprafețe mari comune. Aceste date care se suprapun conduc la câteva proprietăți matematice frumoase care sunt exploatate pentru a realiza un tracking mai rapid și mai precis.
Algoritmul KCF (pseudocod) [3]
Intrare: Dreptunghiul inițial de urmărire , conturul cadrului , ciclul complet al filtrului de scalare
Ieșire: Dacă (Condiția 1) atunci:
Starea Estimată a Țintei , Modelul Filtrul de Scalare
Altfel dacă (Condiția 2) atunci:
Starea Estimată a Țintei , Modelul Filtrul de Translatare a unei zone mari
Altfel (Condiția 3):
Starea Estimată a Țintei , Modelul Filtrul de Translatare a unei zone mici
Funcția track
Tranzitează Filtrului de Particule către cadrul și calculul mediei
Decupează ROI pentru (Condiția 2), sau (Condiția 3) fiind dat și estimează o nouă poziție
Scalarea pentru
Decupează ROI pentru (Condiția 1), estimează factorului de scalare , calculează o nouă scalare
Dacă este necesar, creează noi eșantioane și calculează media
Actualizează (Condiția 3)
Actualizează (Condiția 2)
Dacă atunci actualizează (Condiția 1)
Întoarce
2.5 Tracker-ul TLD
Prescurtarea TLD (Tracking, Learning and Detection) înseamnă urmărire, învățare și detectare. După cum sugerează și numele, acest tracker descompune sarcina de urmărire pe termen lung în trei componente pe termen scurt: urmărire, învățare și detectare. „Tracker-ul urmărește obiectul din cadru în cadru. Detectorul localizează toate aparițiile care au fost observate până în acel moment și corectează tracker-ul dacă este necesar. Învățarea evaluează erorile detectorului și îl actualizează pentru a evita producerea acestora în viitor.” [5] Datele de ieșire are tracker-ului tind spre haotic. De exemplu, dacă este urmărit un pieton și în scenă există și alți pietoni, acest tracker poate uneori să urmărească temporar un pieton diferit de cel ales inițial. Pe de o parte, această abordare pare să urmărească un obiect pe o scară mai mare. Dacă s-a ales o secvență video în care obiectul este ascuns în spatele unui alt obiect, acest tracker poate fi o alegere bună.
Tracker-ul funcționează cel mai bine pe mai multe cadre și urmărește cel mai bine modificările la scară largă. Cu toate astea, generează o mulțime de fals pozitiv care îl fac aproape inutilizabil.
Algoritmul TLD (pseudocod) – acesta este format din 5 algoritmi mai mici, fiecare având rolul lui bine definit.
Funcția „track” urmărește obiectul ales, funcția „learn” ajută la învățarea rețelei, funcția „fuse” fuzionează rezultatele, funcția „detect” găsește modelele pe toata suprafața cadrului și funcția „valid” validează următorul pas al algoritmului. Toate aceste funcții sunt descrise în Figurile 2.5.1, 2.5.2, 2.5.3, 2.5.4, 2.5.5 și în Figura 2.5.6 este funcția principală care le leagă alcătuind tracker-ul TLD.
Figura 2.5.1 – Funcția track [6] Figura 2.5.2 – Funcția valid [6]
Figura 2.5.3 – Funcția detection [6]
Figura 2.5.4 – Funcția fuse [6]
Figura 2.5.5 – Funcția learn [6]
Figura 2.5.6 – Funcția principală (main) [6]
2.6 Tracker-ul MEDIANFLOW
Acest tracker urmărește obiectul atât în direcția înainte cât și înapoi și măsoară discrepanțele dintre aceste două traiectorii. Minimizarea acestei erori de tip „ForwardBackward” permite detectarea în mod fiabil a eșecurilor de urmărire și selectează traiectoriile de încredere în secvențele video.
În testele mele, am descoperit că acest tracker funcționează cel mai bine atunci când micșorarea este predictibilă și mică. Spre deosebire de alte trackere care continuă să funcționeze chiar și atunci când urmărirea a eșuat în mod clar, tracker-ul MEDIANFLOW știe cu exactitate când urmărirea a eșuat.
Un dezavantaj al acesui tracker este eșuarea în cazul mișcărilor ample. Totuși, raportează cu exactitate eșecurile de urmărire și funcționează foarte bine atunci când mișcarea este previzibilă și fără a exista nicio anomalie.
Algoritmul MEDIANFLOW (pseudocod) – o nouă variantă a algoritmului Forward – Backward – este prezentat în Figura 2.5.7.
Figura 2.6.1 – Pseudocodul algoritmul MEDIANFLOW [15]
2.7 Tracker-ul GOTURN
Denumirea GOTURN (Generic Object Tracking Using Regression Networks) sugerează exact procesul descris de acest algoritm: urmărirea modelelor folosind rețele de regresie.
Dintre toți algoritmii de urmărire, acest tracker este singurul bazat pe Rețeaua Neuronală Convoluțională (CNN). GOTURN preia toate avantajele unei astfel de rețele și le îmbunătățește performanța deoarece se bazazează pe o învățare pasivă (offline) folosind un set de date static. Acesta este foarte bun în urmărirea modificărilor punctului de vedere, schimbărilor de lumină și deformărilor, totuși nu se descurcă bine cu eventualele anomalii care apar.
2.8 Tracker-ul MOSSE
Prescurtarea MOSSE (Minimum Output Sum of Squared Error) înseamnă suma minimă a erorii pătratice. Acest tracker utilizează corelația adaptivă pentru urmărirea obiectului, ceea ce produce filtre de corelare stabile atunci când este inițializat folosind un singur cadru. MOOSE este foarte bun în variațiile de deformare ale iluminării, dimensiunii, poziției și rigidității. De asemenea, detectează anomalii bazate pe raportul de la vârf la maxim local care permite urmăririi să se întrerupă și să se reia de unde s-a oprit atunci când obiectul reapare în cadru. Altfel spus, în momenul în care un obiect blochează obiectul urmărit (anomalie), tracker-ul nu va da greș.
MOOSE se descurcă bine și la o viteză mai mare (450 fps și chiar mai mult), este ușor de implementat și totuși la fel de precis ca și alte tracker-e. Pe o scară de performanță, acesta este la finalul clasamentului fiind depășit de tracker-e bazate pe „deep learning” (învățarea profundă).
Algoritmul MOSSE (implementare)
Figura 2.8.1 – Implementare MATLAB a algoritmului MOSSE [8]
2.9 Tracker-ul CSRT
Algoritmul CSRT (Discriminative Correlation Filter with Channel and Spatial Reliability Tracker) a pornit de la urmărirea pe termen scurt a modelelor la care filtrele de corelare distrimantivă (DCF) au demonstrat performanțe incredibile. La acestea au fost adaugate concepte precum canal și fiabilitate spațială rezultând astfel algoritmul CSRT.
Acest tracker este mai rapid față de tracker-ul KCF, deși viteza video-ului asupra căruia se face urmărirea (FPS) va fi foarte mică.
Figura 2.9.1 – Pseudocodul algorimului CSRT [1]
Capitolul 3. Evaluarea
3.1 Baza de date folosită și modul de evaluare al algoritmilor
Am ales setul de date oferit de Universitatea Stanford numit Stanford Drone Dataset[11] (SDD). Această bază de date constă în 8 scene diferite, fiecare având un număr diferit de video-uri. Aceste scene sunt: „gates”, „little”, „nexus”, „coupa”, „bookstore”, „deathCircle”, „quad” și „hyang”.
3.2 Evaluarea performanței algoritmilor
Considerând scena „bookstore”, în urma analizei algoritmilor de urmărire, s-au constatat următoarele rezultate și nereguli. Pentru o analiză corectă au fost alese aceleași modele din același cadru.
Tracker-ul BOOSTING este bazat pe N exemple de antrenare unde și . Rezultatul returnat de algoritmul BOOSTING este codat ca fiind -1 sau +1. Scopul acestui algoritm este de a minimiza pierderea exponențială: [10]. Într-un mod iteal problema s-ar rezolva pentru toți parametri simultan. Totuși o astfel de optimizare nu ar fi practică. Astfel, majoritatea algoritmilor de tip BOOSTING caută parametri optimi adăugând câte un learner pe rând. Fie [10] cel mai puternic model pentru primii m-1 cei mai slabi learneri. Regula de actualizare pentru minimizarea pierderii rezultatului celui mai puternic model va fi: [10].
Algoritmul BOOSTING are o viteză mică, se descurca la urmărirea modelelor precum se poate observa în Figura 3.2.1, dar nu și în condiții mai dificile precum ocluziunile.
Figura 3.2.1 – Algoritmul BOOSTING la începutul urmăririi
Legat de rata de detectare a eșecului, algoritmul are o performanță slabă nefiind capabil să returneze eșuarea în detectare.
Figura 3.2.2 – Algoritmul BOOSTING
În Figura 3.2.2 se poate observa pierderea modelelor urmărite de către algoritmul BOOSTING, iar detectarea eșecului survenit în urma acesteia lipsește.
Formal, analizând algoritmul MIL, se oferă un set de date de antrenare , unde este a i-a instanță și este eticheta instanței. Această problemă poate beneficia de o abordare online, deoarece seturile de date de tip MIL tind să fie foarte mari. În comparație cu algoritmul BOOSTING, MIL va returna rezultatul sub forma a două valori 0 sau +1.
Probabilitatea ca o instanță să fie pozitivă este [2], unde reprezintă funcția sigmoidă. Această ecuație este bazată pe formula Noisy-OR. Funcția de pierdere [2] este dată de răspunsurile negative probabil pentru fiecare instanță:
Pentru varianta online algoritmul primește câte un exemplu pe rând folosind regula de actualizate: [2].
Observând comportamentul algoritmului asupra locatiei „bookstore”, se remarcă faptul că dreptunghiul generat de algoritmul MIL nu ramâne fixat pe model. Acesta încurcă modelul cu fundalul destul de des, iar dacă obiectul urmărit se apropie de alt obiect, algoritmul va continua urmărirea celui de-al doilea obiect.
Comparativ cu algoritmul BOOSTING, tracker-ul MIL are o viteză la fel de mică, pierde modelele în timpul urmăririi și de asemenea, lipsește detectarea eșecului apărut.
Figura 3.2.3 și Figura 3.2.4 – Algoritmul MIL
În Figura 3.2.3 se observă debutul urmăririi modelelor de către tracker-ul MIL. Inițial urmărirea are loc cu succes.
Pe parcursul urmăririi, se observă în Figura 3.2.4 pierderea modelelor și confundarea acestora cu fundalul, cel din urmă fiind urmărit în continuare. Dintr-un total de cinci modele urmărire simultan, tracker-ul rămâne în final cu trei obiecte observate în mod corect.
Totuși, situația se înrăutățește în momentul în care pe lângă unul dintre modelele urmărite, trece o persoana care face parte din fundal. În această situație comportamentul dorit ar fi păstrarea obiectului inițial urmărit și continuarea observării acestuia. Algoritmul MIL nu va face acest lucru, din contră, va începe observarea celuilalt obiect. Acest lucru se poate observa inițial în Figura 3.2.4 când în urmărire se află persoana cu o vestimentație verde din dreapta, iar în Figura 3.2.5, în chenarul de observație, se află altă persoană îmbrăcată în alb.
Algoritmul MIL ajunge în final la eșec prin faptul că dintr-un total de cinci modele urmărite, nu se păstrează niciunul, lucru care nu va fi detectat cu succes.
Figura 3.2.5 – Algoritmul MIL – schimbarea modelului de urmărire
Tracker-ul KCF este foarte rapid, dar poate pierde foarte ușor modelele, acesta urmărind în final fundalul. De asemenea, precum algoritmii BOOSTING și MIL, nu detectează eșecul din urmărire.
Formal, KCF antrenează rețeaua neuronală cu scopul de a găsi funcția: ce minimizează eroarea pătratică asupra datelor și regresiei : [8]. Parametrul este unul de regularizare ce controlează supraînvățarea. Minimizarea este de forma [8] unde matricea X are pe fiecare rând datele de antrenare și y reprezintă regresiile corespunzătoare. I este matricea identitate.
Din testele efectuate s-a remarcat faptul că încă din primele secunde de supraveghere multiplă a obiectelor, algoritmul KCF eșuează. Rapiditatea sa, deși pare să fie un punct forte, se dovedește în final a fi un mare dezavantaj. Urmărirea va eșua drastic în toate cazurile testate. Algoritmul în final va avea un număr foarte mare de ecuații liniare de rezolvat pentru a returna soluția optimă, iar acest lucru poate fi copleșitor într-un mediu de test bazat pe exemple reale.
S-a continuat testarea algoritmului mărindu-se chenarele de supraveghere, dar fără succes. Totuși, se remarcă reușita pe termen scurt a tracker-ului asupra unui singur model. Ca exemplu de urmărire a fost vizat biciclistul din Figura 3.2.6.
Acesta a fost urmărit cu succes precum se poate vedea in Figura 3.2.7, dar se observă în mod clar faptul că acest model a fost confundat cu fundalul, lucru care nu a fost semnalat de algoritm ca fiind un eșec.
Figura 3.2.6 și Figura 3.2.7 – Algoritmul KCF
În concluzie, algoritmul KCF aplicat pe mai multe obiecte simultan nu este întotdeauna eficient, dar dacă totuși se dorește utilizarea acestuia, este de preferat alegerea unui cadru prielnic testării.
În comparație cu algoritmii prezentați anterior, tracker-ul TLD are o viteză de urmărire medie și este predispus la detectare de fals-pozitiv. Totuși, se descurcă mai bine decât algoritmul
KCF care ratează detectarea încă din primele momente.
Denumirea algoritmului TLD (Tracking-Learning-Detection) reprezintă exact modul de lucru al acestuia: urmărire, învățare și detectare. Tracker-ul estimează urmărirea mișcării obiectelor de la un frame la altul, și Detectarea tratează fiecare cadru din video în mod independent realizând o scanare a întregii imagini și , Învățarea reprezintă procesul realizat de rețeaua neuronală bazat pe totalitatea datelor (urmărire și detectare).
Formal, fie un model din spațiul modelelor X și o etichetă din mulțimea . Scopul rețelei este de a învăța un clasificator pe baza seturilor de date și să-i crească performanța pentru fiecare neetichetat. La o anumită iterație k a algoritmului, clasificatorul a etichetat toate celelalte date anterioare: pentru toate . [14]
Erorile de tip fals-pozitiv și fals-negativ sunt calculate pe baza următoarelor doua formule:
[14]
[14]
Tracker-ul TLD este predispus la detectare de fals-pozitiv încă din primele momente de supraveghere. Viteza de urmărire este medie, dar aceasta nu mai contează în momentul în care dintr-un total de cinci cadre, acesta reușește să urmărească un singur obiect, pe care în final îl va confunda cu fundalul. Se poate observa în Figura 3.2.8 faptul că au fost selectate inițial cinci obiecte pentru a fi urmărite, aceleași luate ca exemplu și pentru tracker-ele anterioare.
Figura 3.2.8 – Modelele alese pentru urmărirea cu algoritmul TLD
În momentul începerii urmăririi celor cinci modele, tracker-ul va urmări doar patru dintre acestea și chiar și în acest caz va eșua drastic.
În Figura 3.2.9 este evidențiat comportamentul algoritmului în cel mai clar mod. Acesta reușește să urmărească obiectele alese, totuși consideră fundalul ca fiind unul dintre modele. Astfel, tracker-ul TLD are cea mai mare rată de detectare a falsului pozitiv.
Figura 3.2.9 și Figura 3.2.10 – Algoritmul TLD
În Figura 3.2.10 se observă în mod foarte clar, felul în care algoritmul TLD acționează. Acesta urmărește cu succes modelele alese, iar în clipa în care a pierdut obiectul, acesta îl caută folosind detectarea, lucru care duce la o traiectorie neuniformă. Obietul din stânga imaginii este cel mai bun exemplu în acest sens. În cazul în care devierea este mult mai mare, traiectoria devine foarte bruscă, iar fundalul ajunge detectat ca fiind obiectul urmărit inițial. Algoritmul ajunge la eșec, deoarece predomină fals pozitivul.
În comparație cu celelalte tracker-e, algoritmul TLD se află la coada clasamentului din toate punctele de vedere: viteză, detectarea eșecului de urmărire și urmărirea cu succes a modelului pe mai multe cadre.
Tracker-ul MEDIANFLOW are o viteză impresionantă în urmărire și reușește să supravegheze cu succes modelele în primele momente, dar la un moment dat, eșuează dramatic în toate cele cinci cazuri de urmărire. Algoritmul rămâne blocat pe fundal având rata de eșec destul de mare, dar nu mai mare decât tracker-ul TLD sau tracker-ul KCF.
Un alt algoritm de urmărire este MEDIANFLOW, la baza căruia stă algoritmul FB(Forward-Backward). Fie o secvență de imagini și un punct localizat în timpul . Dacă se folosește un tracker oarecare, punctul va fi urmărit pe durata a pași. Traiectoria rezultată va fi: [13], unde semnifică deplasarea „înainte” și reprezintă lungimea. Scopul este de a estima eroarea traiectoriei pe setul de imagini dat. Pentru acest lucru, este construită traiectoria deplasării „înapoi”: [13]. Eroarea algoritmului Forward-Backward va fi calculată conform: [13]. Pentru simplitate, se va folosi distanța Euclidiană dintre punctul inițial și punctul final: . [13]
Se observă în Figura 3.2.11 faptul că algoritmul debutează cu o urmărire foarte bună a obiectelor, însă pe parcurs se remarcă un comportament diferit față de celelalte tracker-e: aproximativ toate chenarele își vor schimba dimensiunea și chiar vor pierde din urmărire modelele alese. Cel mai bun exemplu pentru redimensionarea cadrelor de urmărire este paralela dintre Figura 3.2.11 și Figura 3.2.12 de mai jos. De asemenea, imaginile ilustrează și faptul că algoritmul MEDIANFLOW eșuează în urmărirea obiectelor.
Figura 3.2.11 și Figura 3.2.12 – Algoritmul MEDIANFLOW
Redimensionarea cadrelor apare ca urmare a implementării algoritmului. Calculul erorii Forward-Backward nu este optimă pentru teste reale.
Analizând algoritmul de supraveghere MEDIANFLOW se poate spune că are o viteză destul de bună, rata de returnare a eșecului este foarte slabă. Asemenea tuturor algoritmilor analizați până acum, s-a remarcat faptul că niciunul nu se descurcă foarte bine la acest aspect al testării.
Algoritmul GOTURN este unic în această paralelă deoarece necesită o antrenare offline a rețelei țo folosește o rețea neuronală convoluțională. Aceasta trebuie să aibă o învățare lină; mișcările mici fiind preferate. Pentru această idee, se alege ca model centrul chenarului din imaginea prezentă relativ la centrul dreptunghiului din viitoarele cadre folosindu-se următoarele formule:
[3]
[3]
unde și sunt lățimea și înălțimea dreptunghiului de urmărire din cadrul anterior. Termenii și iau valori aleatoare care capturează schimbările poziției chenarului de urmărire de la un cadru la altul. În antrenarea acestei rețele, atât cât și pot fi reprezentate cu ajutorul unei distribuții Laplace cu media zero [3]. În mod similar, shimbările create de redimensionarea obiectului urmărit sunt tratate astfel:
[3]
[3]
unde și sunt lățimea și înălțimea dreptunghiului de urmărire din cadrul prezent și și sunt lățimea și înălțimea dreptunghiului de urmărire din cadrul anterior. Variabilele și sunt modelate de distribuția Laplace cu media egală cu unu [3]. O astfel de distribuție oferă o probabilitate mai mare de a pastra marimea inițială a chenarului de urmărire de la un cadru la altul.
În practică, s-au efectuat teste asupra tracker-ului GOTURN și s-a observat un comportament de urmărire mult mai liniar față de toți ceilalți algoritmi prezentați până în acest moment. În timp ce algoritmii BOOSTING și KCF au fost predispuși la a urmări modelele fals pozitive, algoritmul GOTURN a afișat un comportament extrem de diferit, ajung foarte greu la cazurile de detectare a fals pozitivului. Totuși, precum algoritmul MEDIANFLOW, acesta are o problemă de redimensionare a cadrelor de urmărire, însă nu debutează la fel de repede.
Urmărindu-se folosirea unei mișcări line, continue, algoritmul GOTURN depășește la nivel de performață algoritmul TLD, cel din urmă având o traiectorie de surpraveghere a modelelor neregulată.
Figura 3.2.13 și Figura 3.2.14 – Algoritmul GOTURN
Se observă în Figura 3.2.13 debutul urmăririi tracker-ului GOTURN. Aceasta este una liniară aproape ideală, însă în Figura 3.2.14 situația se schimbă. În momentul în care modelul din josul imaginii a dispărut din cadru, rețeaua începe o urmărire haotică, iar în clipa când modelul urmărit de sus s-a apropiat de un alt obiect care semăna cu el, supravegherea de asemenea a devenit neuniforma.
Fiecare cadru de urmărire are altă dimensiunea față de cum era inițial, lucru care indică faptul că algoritmul, în ciuda formulelor și grijei sporite oferite în implementare, manifestă probleme de redimensionare. Acestea, combinate cu pierderea modelului de urmărire se pot transforma într-un adevărat eșec de supraveghere, lucru care se poate observa în Figura 3.2.14.
În ansamblu, algoritmul GOTURN se descurcă mult mai bine în condițiile reale de test spre deosebire de ceilalți algoritmi prezentați.
Algoritmul MOSSE este cel mai rapit algoritm, însă eficiența este foarte slabă. Acesta are o rată de urmărire de 669 fps, spre deosebire de algoritmul MIL care are 25 fps[5]. Ca și în cazul algoritmului KCF, se remarcă faptul că o viteză prea mare în urmărire duce în final la pierderea modelului, rezultatul fiind detectarea falsului pozitiv. Și mai interesant este faptul că supravegherea celor cinci modele alese va fi identică cu cea de la tracker-ul KCF.
Figura 3.2.15 – Algoritmul MOSSE
S-a testat algoritmul mărindu-se chenarele de supraveghere, schimbându-se modelele de urmărire sau numărul obiectelor alese, dar fără succes. Totuși, se remarcă reușita pe termen scurt a tracker-ului asupra unui singur model. Ca exemplu de urmărire a fost vizat biciclistul din Figura 3.2.15. Acest rezultat o fost obținut și în cazul algoritmului KCF, dar traiectoria biciclistului diferă.
Pentru început, algoritmul MOSSE are nevoie de date de antrenare ce constau într-un set de imagini și returnează datele antrenate . În cazul acesta, datele antrenate vor avea o formă compactă 2D Gaussiană cu vârful în centrat pe ținta urmărită în imaginile de antrenare . Se definesc variabilele , și filtrul asupra cărora se va aplica transformarea Fourier [5]:
[5]
Pentru a găsi un filtru ce mapează datele de antrenare, algoritmul MOSSE găsește filtrul care minimizează suma erorii pătratice dintre datele de ieșire actuale și datele de ieșire dorite. Astfel, problema de minimizare va lua următoarea formă:
[5]
Fiecare element H (indexat după și) poate fi rezolvat independent deoarece fiecare operație dintr-o transformare Fourier este de sine stătătoare. Asta implică rescrierea funcției folosindu-se și .
[5]
Prin rezolvarea ecuației pentru se găsește o expresie pentru filtrul MOSSEE:
[5]
Filtrele trebuie sa aibă o învățare rapidă. Prin urmare, filtrul MOSSE devine:
[5]
[5]
[5]
unde reprezintă rata de învățare. În practică, îi permite filtrului MOSSE să se adapteze schimbărilor.
Algoritmul CSRT, pe baza testelor efectuate, se poate remarca faptul că se descurcă extraordinar de bine. Linia de urmărire este lină, nu detecteaza fals pozitiv-ul, are o viteză destul de bună și reușește să depășească orice alt tracker analizat până acum. Algoritmul GOTURN are o urmărire la fel de exactă asemenea algoritmului CSRT, însă pierde modelele de urmărire dacă acestea se apropie de zone din fundal care seamană cu obiectele inițiale.
Dat un set de date, canale și filtrele corespunzătoare , unde și , iar poziția obiectului este estimată prin maximizarea probabilității: [1]. Densitatea [1] este o convoluție a unei viitoare hărți cu o învățare evaluată în și . Filtrele optime sunt obținute pe baza următoarei formule [1]:
În egalitatea anterioara, bazată de teorema lui Parsevall, operatorul [1] este o transformare Fourier. Minimizarea formulei anterioare duce la ecuația gradientului unde fiecare canal este egal cu zero.
Harta fiabilității spațiale cu elementele indică cât de fezabilă este învățarea fiecărui pixel din imagine. Probabilitatea ca pixelul să fie fiabil este condiționată de astfel: [1]. Această hartă a fiabilității identifică pixelii ce trebuie ignorați în procesul de învățare utilizându-se constrângerea: [1].
Tracker-ul CSRT va localiza obiectul vizat adunând răspunsurile primite de la filtere de învățare corelate . Se vor distinge modelele de fundal prin două histograme împărțite conform chenarului de urmărire. Se va construi apoi harta fiabilității spațiale și va fi calculat un filtru optim și va fi estimat canalul de învățare fiabil [1].
Figura 3.2.16 și Figura 3.2.17 – Algoritmul CSRT
În Figura 3.2.16 se poate observa parcursul urmăririi într-un mediu de test aproape de realitate. Datorită separării foarte exacte a modelelor de fundal, tracker-ul CSRT are o urmărire foarte exactă și punctuală. Acesta reușește ceea ce niciun alt algoritm, din aceasta paralelă, nu a putut finaliza în cel mai dorit mod.
În momentul în care are loc o ocluzie mai greu de interceptat precum ieșirea din cadru a modelului urmărit, tracker-ul încearcă să continue supravegherea, dar desigur eșuează. Se remarcă în Figura 3.2.17 faptul că obiectul din josul imaginii părăsește cadrul și tracker-ul încearcă sa-l urmăreasca într-un loc total greșit, în partea de sus a figurii.
În comparație cu ceilalți algoritmi, urmărirea se desfășoară în mod liniar cu o viteză destul de mare.
3.3 Evaluarea algoritmilor în mod calitativ (occlusions)
Atunci când este dezvoltat un sistem ce urmărește modelele selectate, inevitabil apar ocluziile. Dacă este folosit un cadru fix, atunci majoritatea ocluziilor vor apărea din cauza faptului că obiectele ies din raza de acțiune a camerei de supraveghere. Dacă aceasta nu poate filma la o calitate foarte mare sau pe o rază care acoperă cât mai multe unghiuri moarte, implicit nici urmărirea obiectelor nu va avea randamentul dorit.
Pierderea obiectului urmărit din cauze externe, diferite de algoritmul implementat, pot fi cauza a mai multor scenarii: ieșirea modelului din cadru, mascarea obiectului de un alt model urmărit, ascunderea modelului în spatele unui alt obiect ce aparține fundalului etc. O ocluzie este reprezentată și de dispariția obiectului din cadru, schimbarea culorii sau a formei acestuia, sau chiar și redimensionarea modelului vizat.
Momentul în care un obiect iși schimbă în mod brusc viteza sau direcția în care se deplasează, reprezintă o ocluzie, iar algoritmul de supraveghere poate să eșueze. Un alt exemplu de ocluzie este dat de o aglomerație sau o mulțime de obiecte cu caracteristici asemănătoare.
Tracker-ele alese pentru realizarea acestei paralele vor fi testate pentru fiecare tip de ocluzie exemplificat în paragraful de mai sus. Pentru acest lucru s-au folosit alte video-uri din setul de date oferit de Universitatea Stanford numit Stanford Drone Dataset[11] .
Inițial s-au testat algoritmii pe video-ul numărul trei din setul de date „coupa” pentru a observa comportamentul acestora în momentul în care modelul urmărit părăsește cadrul. Pentru ca testele să fie corecte, am selectat același model pentru fiecare algoritm în parte.
Figura 3.3.1 – Modelul ales pentru testarea ieșirii din cadru
Testând algoritmul BOOSTING, s-a remarcat faptul că tracker-ul a pierdut modelul atunci când acesta a părăsit cadrul. Se observă în Figura 3.3.2 urmărirea liniară până în momentul părăsirii cadrului de către model.
Figura 3.3.2 – Comportamentul algoritmului BOOSTING atunci când modelul părăsește cadrul camerei de supraveghere
Deși traiectoria descrisă de algoritmul MIL diferă de cea a algoritmului BOOSTING, rezultatul ocluziei este același. În Figura 3.3.3 se remarcă faptul că tracker-ul MIL a ajuns aproximativ în aceeași zonă din fundal ca și tracker-ul BOOSTING.
Figura 3.3.3 – Comportamentul algoritmului MIL atunci când modelul părăsește cadrul camerei de supraveghere
În comparație cu BOOSTING și MIL, algoritmul MOSSE are, de asemenea, o urmărire liniară, iar cadrul de urmărire se oprește în locul în care tracker-ul a pierdut modelul. Acest lucru este favorabil momentului în care se poate întoarce în cadru modelul urmărit.
Figura 3.3.4 – Comportamentul algoritmului MOSSE atunci când modelul părăsește cadrul camerei de supraveghere
Algoritmul CSRT are o traiectorie aproape identică cu algoritmul MOSSE în acest caz. Modelul este urmărit cu succes până în momentul în care acesta părăsește cadrul camerei de supraveghere. Acest lucru se poate remarca în Figura 3.3.5.
Figura 3.3.5 – Comportamentul algoritmului CSRT atunci când modelul părăsește cadrul camerei de supraveghere
Un comportament asemănător, dar diferit îl afișează tracker-ul GOTURN. Acesta, urmărește obiectul aproape liniar, însă atunci când apare ocluzia, se pierde și mărește chenarul de căutare pe întreaga suprafață a video-ului.
Figura 3.3.6 – Comportamentul algoritmului GOTURN atunci când modelul părăsește cadrul camerei de supraveghere
Se remarcă în Figura 3.3.6 momentul pierderii modelului urmărit. Tracker-ul încearcă să continue urmărirea însă fără succes. Totuși ajunge în final să părăsească cadrul video-ului.
Tracker-ul KCF nu poate fi testat pentru acest tip de ocluzie deoarece pierde modelul ajungând la detectarea fals pozitivului. S-a încercat testarea cu diferite dimensiuni ale dreptunghiului de urmărirea însă fără succes. Se vede în Figura 3.3.7 acest fapt.
Figura 3.3.7 – Comportamentul algoritmului KCF
Asemenea algoritmului KCF, nici algoritmul MEDIANFLOW nu a putut finaliza testarea. În ambele cazuri, ambele tracker-e au pierdut modelul și au ajuns în final să urmărească fundalul, deci să fie predispuse la fals pozitiv.
În cazul tracker-ului MEDIANFLOW, dreptunghiul de urmărire se va redimensiona așa cum se observă în Figura 3.3.8. În urma acestui fapt, algoritmul va pierde obiectul urmărit și testarea ocluziei nu va mai putea fi posibilă.
Figura 3.3.8 – Comportamentul algoritmului MEDIANFLOW atunci când modelul părăsește cadrul camerei de supraveghere
Algoritmul TLD are o urmărire neuniformă, iar în momentul în care modelul părăsește cadrul camerei de supraveghere, aceasta devine și mai haotică. Tracker-ul pierde modelul încă din primele clipe de urmărire. Încearcă să se redreseze asupra modelului urmărit inițial dar eșuează și continuă să urmărească alte obiecte asemănătoare din fundal. Tracker-ul sfârșește prin a supraveghea fundalul. În Figura 3.3.9 se observă urmărirea algoritlui TLD, supraveghere care este agresivă, neuniformă.
Figura 3.3.9 – Comportamentul algoritmului TLD atunci când modelul părăsește cadrul camerei de supraveghere
Algoritmii de supraveghere au fost testați în vederea ocluziei de suprapunere a modelului urmărit cu fundalul. Pentru acest lucru s-a folosit video-ul numărul zece din setul de date „nexus”. Pentru ca testele să fie corecte, am selectat același model pentru fiecare algoritm în parte.
Figura 3.3.10 – Modelul ales pentru testarea suprapunerii cu alte obiecte din fundal
Inițial, modelul va trece parțial pe sub un copac, apoi pe sub al doilea copac unde va dispărea complet și va reapărea în fundal când iese de sub acesta. În urma acestui test, se va determina algoritmul cel mai optim din punctul de vedere al ocluziei cu un alt obiect din fundal.
Algoritmul BOOSTING, așa cum se poate observa și în Figura 3.3.11, trece cu brio ambele teste reușind să localizeze obiecte chiar și atunci când acesta dispare complet și reapare în altă parte. De asemenea, reușește să localizeze foarte exact și momentul în care obiectul este ascuns parțial de un alt obiect din fundal.
Figura 3.3.11 – Comportamentul algoritmului BOOSTING atunci când modelul este ascuns de alte obiecte din fundal
Figura 3.3.12 – Comportamentul algoritmului MIL atunci când modelul este ascuns de alte obiecte din fundal
În Figura 3.3.12 este surprins comportamentul tracker-ului MIL în cadrul descris anterior. Acesta depășește ocluzia parțială însă nu reușește să supravegheze obiectul la ieșirea de sub al doilea copac. Are loc o ocluzie totală între model și fundal, iar algoritmul nu este capabil să detecteze noua locație a obiectului în momentul reapariției acestuia în cadru.
Dacă până în acest momentul BOOSTING a reușit să treacă testul complet, iar MIL parțial, algoritmul KCF nu depășește nici măcar primul obstacol. Figura 3.3.13 reprezintă eșecul acestui tracker încă de la prima ocluzie.
Figura 3.3.13 – Comportamentul algoritmului KCF atunci când modelul este ascuns de alte obiecte din fundal
Figura 3.3.14 – Comportamentul algoritmului TLD atunci când modelul este ascuns de alte obiecte din fundal
Agoritmul TLD surprinde și de această dată într-un mod neplăcut. Acesta nu doar că nu reușește să urmărească obiectul în timpul ocluziilor, dar mai mult decat atât, găsește alte modele în fundal pe care le va supraveghea în locul obiectului ales inițial. Se poate observa în Figura 3.3.14 acest comportament.
Asemenea algotirmului MIL, tracker-ul MEDIANFLOW pierde obiectul încă de la prima ocluzie. Totuși, spre deosebire de MIL, încearcă o redimensionare a chenarului de urmărire, dar fără succes. Obiectul va rămâne pierdut, lucru ce poate fi văzut în Figura 3.3.15.
Figura 3.3.15 – Comportamentul algoritmului MEDIANFLOW atunci când modelul este ascuns de alte obiecte din fundal
Figura 3.3.16 – Comportamentul algoritmului GOTURN atunci când modelul este ascuns de alte obiecte din fundal
În Figura 3.3.16 este descris comportamentul algoritmului GOTURN. Acesta urmărește în primă instanță obiectul ales. La apropierea de o zonă din fundal care pare că seamănă cu obiectul inițial, tracker-ul va începe supravegherea fundalului, iar testarea ocluziilor va eșua drastic. La capitolul ocluzii, acest algoritm este la fel de ineficient ca și algoritmul TLD.
Figura 3.3.17 – Comportamentul algoritmului CSRT atunci când modelul este ascuns de alte obiecte din fundal
Figura 3.3.18 – Comportamentul algoritmului MOSSE atunci când modelul este ascuns de alte obiecte din fundal
Algoritmii CSRT și MOSSE au un comportament asemănător cu cel al algoritmului MIL. Atât Figura 3.3.17 cât și Figurile 3.3.18 și 3.3.12 arată dreptunghiul de urmărire blocat pe al doilea pom din fundal. Toate cele trei tracker-e depășesc obstacolul primei ocluzii și eșuează la al doilea test.
În concluzie, pentru ocluzii parțiale, CSRT, MOSSE și MIL sunt cei mai buni din toți cei analizați, însă pentru toate tipurile de ocluzii, algoritmul BOOSTING rămâne cea mai bună alegere.
Bibliografie
Alan Lukezic, Tomas Vojır, Luka Cehovin Zajc, Jiri Matas and Matej Kristan, articolul „Discriminative Correlation Filter with Cahnnel and Spatial Reliability”, publicat în „International Journal of Computer Vision”, 2016
Boris Babenko, Ming-Hsuan Yang , Serge Belongie, articolul „A Family of Online Boosting Algorithms”, publicat în „IEEE 12th International Conference on Computer Vision Workshops”, 2009
Burak Uzkent, Young Woo Seo, articolul „EnKCF: Ensemble of Kernelized Correlation Filters for High-Speed Object Tracking”, publicat în „IEEE Winter Conference on Applications of Computer Vision(WACV)”, 2018
David Held, Sebastian Thrun, Silvio Savarese, articolul „Learning to Track at 100 FPS with Deep Regression Networks”, publicat în „European Conference on Computer Vision (ECCV)”, 2016
David S. Bolme, J. Ross Beveridge, Bruce A. Draper, Yui Man Lui, articolul „Visual Object Tracking using Adaptive Correlation Filters”, publicat în „IEEE Computer Society Conference on Computer Vision and Pattern Recognition” 2010
Georg Nebehay, teză de doctorat cu titlul „Robust Object Tracking Based on Tracking-Learning-Detection”, 2012
Gary Bradski, Adrian Kaehler, „Learning OpenCV”, ed. O’Reilly, sept 2008, p. XVI
Joao F. Henriques, Rui Caseiro, Pedro Martins and Jorge Batista, articolul „High-Speed Tracking with Kernelized Correlation Filters”, publicat în „IEEE Transactions on Pattern Analysis and Machine Intelligence”, 2014
Mohinder S. Grewal și Angus P. Andrews, „Applications of Kalman Filtering in Aerospace 1960 to the Present”, publicat în „IEEE Xplore”, mai 2010
Robert E. Schapire, „Expaining AdaBoost”, publicată de Springer, Berlin, Heidelberg, 2013
A. Robicquet, A. Sadeghian, A. Alahi, S. Savarese, „Learning Social Etiquette: Human Trajectory Prediction In Crowded Scenes in European Conference on Computer Vision (ECCV)”, 2016
Xiu-Shen Wei, Jianxin Wu, Zhi-Hua Zhou, articolul „Scalable Algorithms for Multi-Instance Learning”, publicat în „IEEE Transactions on Neural Networks and Learning Systems”, volumul 28, 2007
Zdenek Kalal, Krystian Mikolajczyk, Jiri Matas, articolul „Forward-Backward Error: Automatic Detection of Tracking Failures”, publicat în „International Conference on Pattern Recognition”, august 2010
Zdenek Kalai, Krystian Mikolajczyk and Kiri Matas, articolul „Tracking-Learning-Detection”, publicat în „IEEE Transactions on Pattern Analysis and Machine Intelligence”, volumul 6, ianuarie 2010
http://lxmls.it.pt/2011/guide_day2.pdf
https://www.researchgate.net/figure/Pseudocode-for-generic-boosting-algorithms_fig1_6265168
Anexe
Figura 2.5.1 – Funcția track …………………………………………………………………………………………….. 13
Figura 2.5.2 – Funcția valid ……………………………………………………………………………………………. 13
Figura 2.5.3 – Funcția detection ……………………………………………………………………………………… 14
Figura 2.5.4 – Funcția fuse …………………………………………………………………………………………….. 14
Figura 2.5.5 – Funcția learn …………………………………………………………………………………………….. 15
Figura 2.5.6 – Funcția principală (main) ………………………………………………………………………….. 15
Figura 2.6.1 – Pseudocodul algoritmul MEDIANFLOW …………………………………………………… 16
Figura 2.8.1 – Implementare MATLAB a algoritmului MOSSE …………………………………………. 17
Figura 2.9.1 – Pseudocodul algorimului CSRT………………………………………………………………….. 18
Figura 3.2.1 – Algoritmul BOOSTING la începutul urmăririi ……………………………………………. 19
Figura 3.2.2 – Algoritmul MIL ……………………………………………………………………………………….. 20
Figura 3.2.3 – Algoritmul MIL ……………………………………………………………………………………….. 21
Figura 3.2.4 – Algoritmul MIL – schimbarea modelului de urmărire ……………………………………. 21
Figura 3.2.5 – Algoritmul KCF ……………………………………………………………………………………….. 22
Figura 3.2.6 – Algoritmul KCF ……………………………………………………………………………………….. 23
Figura 3.2.7 – Algoritmul KCF ……………………………………………………………………………………….. 23
Figura 3.2.8 – Modelele alese pentru urmărirea cu algoritmul TLD ……………………………………… 24
Figura 3.2.9 – Algoritmul TLD ……………………………………………………………………………………….. 25
Figura 3.2.10 – Algoritmul TLD ………………………………………………………………………………………. 25
Figura 3.2.11 – Algoritmul MEDIANFLOW …………………………………………………………………….. 26
Figura 3.2.12 – Algoritmul MEDIANFLOW …………………………………………………………………….. 26
Figura 3.2.13 – Algoritmul GOTURN ………………………………………………………………………………. 28
Figura 3.2.14 – Algoritmul GOTURN ………………………………………………………………………………. 28
Figura 3.2.15 – Algoritmul MOSSE …………………………………………………………………………………. 29
Figura 3.2.16 – Algoritmul CSRT ……………………………………………………………………………………. 31
Figura 3.2.17 – Algoritmul CSRT ……………………………………………………………………………………. 31
Figura 3.3.1 – Modelul ales pentru testarea ieșirii din cadru ……………………………………………….. 33
Figura 3.3.2 – Comportamentul algoritmului BOOSTING atunci când modelul părăsește cadrul camerei de supraveghere ………………………………………………………………………………………………… 33
Figura 3.3.3 – Comportamentul algoritmului MIL atunci când modelul părăsește cadrul camerei de supraveghere ……………………………………………………………………………………………………………. 34
Figura 3.3.4 – Comportamentul algoritmului MOSSE atunci când modelul părăsește cadrul camerei de supraveghere ………………………………………………………………………………………………… 34
Figura 3.3.5 – Comportamentul algoritmului CSRT atunci când modelul părăsește cadrul camerei de supraveghere ……………………………………………………………………………………………………………. 35
Figura 3.3.6 – Comportamentul algoritmului GOTURN atunci când modelul părăsește cadrul camerei de supraveghere ………………………………………………………………………………………………… 35
Figura 3.3.7 – Comportamentul algoritmului KCF …………………………………………………………….. 36
Figura 3.3.8 – Comportamentul algoritmului MEDIANFLOW atunci când modelul părăsește cadrul camerei de supraveghere ………………………………………………………………………………………. 36
Figura 3.3.9 – Comportamentul algoritmului TLD atunci când modelul părăsește cadrul camerei de supraveghere ……………………………………………………………………………………………………………. 37
Figura 3.3.10 – Modelul ales pentru testarea suprapunerii cu alte obiecte din fundal …………….. 37
Figura 3.3.11 – Comportamentul algoritmului BOOSTING atunci când modelul este ascuns de alte obiecte din fundal ……………………………………………………………………………………………………. 38
Figura 3.3.12 – Comportamentul algoritmului MIL atunci când modelul este ascuns de alte obiecte din fundal …………………………………………………………………………………………………………………….. 38
Figura 3.3.13 – Comportamentul algoritmului KCF atunci când modelul este ascuns de alte obiecte din fundal …………………………………………………………………………………………………………………….. 39
Figura 3.3.14 – Comportamentul algoritmului TLD atunci când modelul este ascuns de alte obiecte din fundal …………………………………………………………………………………………………………………….. 39
Figura 3.3.15 – Comportamentul algoritmului MEDIANFLOW atunci când modelul este ascuns de alte obiecte din fundal ………………………………………………………………………………………………… 40
Figura 3.3.16 – Comportamentul algoritmului GOTURN atunci când modelul este ascuns de alte obiecte din fundal ………………………………………………………………………………………………………….. 40
Figura 3.3.17 – Comportamentul algoritmului CSRT atunci când modelul este ascuns de alte obiecte din fundal ………………………………………………………………………………………………………….. 41
Figura 3.3.18 – Comportamentul algoritmului MOSSE atunci când modelul este ascuns de alte obiecte din fundal ………………………………………………………………………………………………………….. 41
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Introducere …………………………………………………………………………………………………………… 4 Tehnologii… [304750] (ID: 304750)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
