• No results found

Objektföljning med roterbar kamera Object tracking with rotatable camera

N/A
N/A
Protected

Academic year: 2021

Share "Objektföljning med roterbar kamera Object tracking with rotatable camera"

Copied!
60
0
0

Loading.... (view fulltext now)

Full text

(1)

INOM

EXAMENSARBETE ELEKTROTEKNIK, GRUNDNIVÅ, 15 HP

,

STOCKHOLM SVERIGE 2021

Objektföljning med roterbar

kamera

Object tracking with rotatable

camera

JOEL ZETTERLUND

KTH

(2)
(3)

Objektföljning med roterbar

kamera

Object tracking with rotatable camera

JOEL ZETTERLUND

Examensarbete inom Elektroteknik

Grundnivå, 15 hp

Handledare på KTH: Martin Jacobsson Examinator: Elias Said

TRITA-CBH-GRU-2021:56 KTH

Skolan för kemi, bioteknologi och hälsa 141 52 Huddinge, Sverige

(4)
(5)

Sammanfattning

Idag är det vanligt att det sker filmning av evenemang utan att man använder sig av en professionell videofotograf. Det kan vara knatteligans fotbollsmatch, konferens-möten, undervisning eller YouTube-klipp. För att slippa ha en kameraman kan man använda sig av något som kallas för objektföljningskameror. Det är en kamera som kan följa ett objekts position över tid utan att en kameraman styr kameran.

I detta examensarbete beskrivs hur objektföljning fungerar, samt görs en jämförelse mellan objektföljningskameror med datorseende och en kameraman. För att kunna jämföra de mot varandra har en prototyp byggts. Prototypen består av en Raspberry Pi 4B med MOSSE som är en objektföljningsalgoritm och SSD300 som är en detek-teringsalgoritm inom datorseende. Styrningen består av en gimbal som består av tre borstlösa motorer som styr kameran med en regulator.

Resultatet blev en prototyp som klarar av att följa en person som promenerar i max-imalt 100 pixlar per sekund eller 1 meter per sekund i helbild, med en maxdistans på 11,4 meter utomhus. Medan en kameraman klarar av att följa en person i 300–800 pixlar per sekund eller 3 meter per sekund. Prototypen är inte lika bra som en ka-meraman men kan användas för att följa en person som undervisar och går långsamt. Under förutsättningen att prototypen är robust vilket inte är fallet. För att få bättre resultat behövs starkare processor och bättre algoritmer än som använts med proto-typen. Då ett stort problem var att uppdateringshastigheten var låg för detekte-ringsalgoritmen.

Nyckelord

(6)
(7)

Abstract

Today, it is common for events to be filmed without the use of a professional video photographer. It can be the little league football game, conference meetings, teaching or YouTube clips. To film without a cameraman, you can use something called object tracking cameras. It is a camera that can follow an object's position without a cam-eraman.

This thesis describes how object tracking works as well as comparison between ob-ject tracking cameras with computer vision and a cameraman. In order to compare them against each other, a prototype has been developed. The prototype consists of a Raspberry Pi 4B with MOSSE which is an object tracking algorithm and SSD300 which is a detection algorithm in computer vision. The steering consists of a gimbal consisting of three brushless motors that control the camera with a regulator. The result was a prototype capable of following a person walking at a maximum speed 100 pixels per second or 1 meter per second in full screen, with a maximum distance of 11.4 meters outdoors. While a cameraman managed to follow a person at 300-800 pixels per second or 3 meters per second. The prototype is not as good as a cameraman but can be used to follow a person who teaches and walks slowly. Un-der basis that the prototype is robust, which is not the case. To get better results, stronger processor and better algorithms are needed than used with the prototype. That’s because a big problem was that the refresh rate was low for the detection al-gorithm.

Keywords

(8)
(9)

Lista över förkortningar

AI Artificiell intelligens BLDC Borstlös Likströmsmotor COCO Common Objects in Context CNN Convolutional Neural Network

DCF-CSR Discriminative Correlation Filter with Channel and Spatial Reliability Faster R-CNN Faster Region-based Convolutional Network

HOG Histogram of oriented gradients KCF Kernelized Correlation Filters

MOSSE Minimum Output Sum of Squared Error NMS Non-Maximum Suppression

PWM Pulse Width Modulation SSD Single Shot MultiBox Detector SVM Support-Vector Machine YOLO You Only Look Once

(10)
(11)

Förord

Jag vill tacka min handledare Martin Jacobsson för bra rådgivning under arbetes gång. Samt bra återkoppling av rapporten och dess struktur.

Jag vill också tacka min fru, mor, syster och bror som gett mig bra feedback på rap-porten.

(12)
(13)

Innehållsförteckning

1 Inledning ... 1

1.1 Problemformulering ... 1

1.2 Målsättning ... 1

1.3 Avgränsningar ... 2

2 Teori och bakgrund ... 3

2.1 Robotkamera ... 3 2.2 Utrustning för objektföljning ... 3 2.2.1 Soloshot ... 3 2.2.2 PIXIO ... 4 2.2.3 OBSBOT ... 4 2.2.4 Jigabot ... 4

2.3 Enkortsdator och programvara ... 4

2.4 Motor ... 5 2.4.1 Borstad likströmsmotor ... 5 2.4.2 Stegmotor ... 5 2.4.3 Servo ... 6 2.4.4 Borstlös likströmsmotor ... 6 2.4.5 Gimbal ... 7 2.5 Objektdetektering ... 8

2.5.1 Neurala nätverk och maskininlärning ... 8

2.5.2 Klassificerare ... 9

2.5.3 Faltningsnätverk ... 9

2.5.4 Databaser ... 9

2.5.5 Objektdetekteringsalgoritmer utan neurala nätverk ... 10

2.5.6 Objektdetekteringsalgoritmer med neurala nätverk ... 11

2.6 Visuell Objektföljning ... 13

2.6.1 Objektföljning utan objektdetektering ... 13

2.6.2 Objektföljning med objektdetektering ... 13

2.7 Regulator ... 15

(14)

3.1 Enkortsdator ... 17 3.2 Kamera ... 17 3.3 Gimbal ... 18 3.4 Objektdetektering... 19 3.5 Objektföljning... 20 3.6 Regulator ... 22 3.7 Prototyp ... 22

3.8 Tester av färdig prototyp ... 23

3.8.1 Test av olika algoritmer ... 23

3.8.2 Distansmätning ... 24

3.8.3 Följningshastighet ... 26

3.8.4 Mjukhet och snabbhet i kamerarörelserna ... 28

4 Analys och diskussion ... 31

4.1 Analys av vald metod ... 31

4.2 Analys av resultat ... 32

4.3 Ekonomi, hållbar utveckling och etik ... 34

5 Slutsatser ... 35

6 Källförteckning ... 37

(15)

1 | INLEDNING

1 Inledning

Idag är det vanligt att det sker filmning av event utan att man använder sig av en professionell videofotograf. Det kan vara knatteligans fotbollsmatch, konferensmö-ten, undervisning eller YouTube-klipp. För att slippa ha en kameraman kan man an-vända sig av något som kallas för objektföljningskameror [1]. Detta är en kamera som kan följa ett objekts position utan att en kameraman styr kameran. På så sätt kan kameran exempelvis följa fotbollsspelaren, bollen eller talaren helt på egen hand.

1.1 Problemformulering

Med detta som utgångspunkt är syftet med detta examensarbete att undersöka hur väl en objektföljningskamera kan följa ett objekt. Samt undersöka om man kan få följningen av ett objekt lika bra som om en kameraman hade filmat.

För att svara på frågan om en objektföljningskamera är lika bra som en kameraman tar vi hjälp av följande frågeställningar:

- Hur långt avstånd kan objektföljningskameran följa ett objekt? - I vilken hastighet kan en objektföljningskamera följa ett objekt?

- Hur jämnt kan en objektföljningskamera styra in i rätt position och hur lång tid tar det?

Dessa frågeställningar ställs i relation till hur väl en kameraman kan filma ett objekt.

1.2 Målsättning

Målsättningen med arbetet är att jämföra en objektföljningskamera med datorse-ende med en kameraman som filmar. Samt undersöka om man kan få följningen av ett objekt lika bra som om en kameraman hade filmat. Den valda metoden för att svara på frågeställningarna är att skapa en prototyp av en objektsföljningskamera som använder sig utav bildseende för att följa ett objekt.

Prototypen ska kunna följa ett objekt i rörelse, i detta fall en person som promenerar eller springer. Kameran skall kunna följa personen i halvbild där personen syns från midjan och uppåt. Den skall även klara av att följa personen i totalbild ifrån minst tjugo meter. Styrsystemet skall vara ett inbyggt system, där energiförbrukningen skall vara låg. Objektföljningskameran skall klara av att köras på batteri vid behov. Detta skall sedan jämföras med en kameraman.

(16)

2 | INLEDNING

1.3 Avgränsningar

Arbetet kommer avgränsas till följande:

• Rapporten kommer att utgå ifrån olika existerande objektföljningsalgoritmer och objektdetekteringsalgoritmer. Dessa kommer att jämföras och de som får bäst resultat kommer sedan att användas i arbetet.

• Prototypen som rapporten bygger på kommer inte att kunna zooma, utan endast panorera och tilta.

• Systemet skall endast följa en person och kommer inte kunna hantera om det förekommer flera personer i bilden

• Rapporten kommer endast jämföra prototypens resultat med en kameraman. Inga färdiga existerande objektföljningskameror kommer att tas med i jämfö-relsen.

• Det som kommer jämföras är avståndet kameran kan detektera ett objekt. Hastigheten den kan följa ett objekt, jämnheten i styrningen och tiden det tar för kameran att centrera ett objekt.

(17)

3 | TEORI OCH BAKGRUND

2 Teori och bakgrund

Några av de delar som krävs för att bygga en objektföljningskamera med datorseende är enkortsdator, programvara, kamera, motor, objektdetekteringsalgoritm, objekt-följningsalgoritm och regleringsalgoritm för motorn. Dessa nämnda delar kommer att introduceras och förklaras i detta kapitel. I kapitlet kommer också färdiga lös-ningar och system för objektföljning att beskrivas kortfattat.

2.1 Robotkamera

En robotkamera består av en kamera som styrs av två motorer. Den ena styr hori-sontellaxeln och den andra styr vertikalaxeln. När horihori-sontellaxeln styrs kallas det för att panorera och när vertikalaxeln styrs kallas det för att tilta. Vid filmning an-vänds olika utsnitt som närbild, halvbild, helbild och totalbild. Närbild är när huvu-det på personen tar upp hela bilden. Halvbild är när personen syns från midjan och uppåt i bilden. Helbild är när hela personen syns i bilden och slutligen totalbild när omgivningen syns på platsen där personen står [2].

2.2 Utrustning för objektföljning

Det finns olika företag som säljer färdiga system för automatiserad objektföljning, några är Soloshot, PIXIO, OBSBOT och Jigabot.

2.2.1 Soloshot

Soloshot [3] är en robotkamera som använder GPS för att hitta positionen för sitt objekt. Personen har en tagg på sig och positionen beräknas genom trilateration (se figur 2.1) där taggen beräknar sträckan till ett flertal satelliter genom den tid som det tar för signalen från satelliten att nå taggen. Därefter beräknas positionen för taggen genom att veta var satelliterna är gentemot varandra. Soloshot fungerar endast ut-omhus på grund av att GPS:en tappar signalstyrka inut-omhus [3].

Figur 2.1. Figuren visar trilateration för beräkning av position med GPS, där taggens position, cirklarnas skärningspunkt är taggens beräknade position [45]

(18)

4 | TEORI OCH BAKGRUND

2.2.2 PIXIO

Pixio [4] använder en liknande teknik som Soloshot men istället för att använda GPS använder den sig av egna beaconsändare. Dessa sändare ställs ut runt platsen där det skall filmas och användaren får ha en tagg som beräknar ut positionen relativt till följningsroboten. Pixio har en räckvidd på 100m och kan endast följa objektet i horisontell led. Den har däremot ingen kamera som följer med utrustningen utan användaren får använda en egen kamera som inte väger mer än 2,5 kg [4-5].

2.2.3 OBSBOT

OBSBOT [6] är en robotkamera som använder datorseende för att följa objektet. An-vändaren väljer vilket objekt som skall följas och därefter följer kameran objektet i både horisontalled och vertikalled. [7] Den använder chipet HiSilicon Hi3559A med penta-core Cortex-A73/A53 [8] som gör all beräkning för att följa efter ett valt objekt [6].

2.2.4 Jigabot

Jigabot EX [9] använder sig av infrarött ljus och taggar för att följa ett objekt. An-vändaren behöver ha på sig minst 4 taggar (två fram och två bak) för att den skall kunna följas i alla rotationsvinklar [10]. Sändaren skickar signalen till Jigabot EX där den beräknar vilket håll den skall panorera för att följa personen [9].

2.3 Enkortsdator och programvara

Enkortsdatorn är en dator där allt är byggt på samma chip. Den har processor, ramminne och in- och utgångar. Ett operativsystem behöver installeras för att den skall fungera, men operativsystemet behöver vara lätt. Det vill säga att det endast får ta en liten del av datorns resurser i anspråk. Enkortsdatorn kan vara portabel med strömförsörjning från batteri om det skulle behövas [11]. Två olika enkortsdatorer som finns på marknaden är Nvidia Jetson och Raspberry Pi.

Nvida Jetson är en enkortsdator som är byggd för att klara av att köra program för artificiell intelligens. Det finns olika modeller men den minsta modellen är Nvidia Jetson Nano som har 128-core Maxwell GPU (Grafisk processor) med fyrkärning ARM A57 med hastighet på 1.43 GHz processor och 4 GB ram [12].

Raspberry pi är en enkortsdator som är populär. Det finns olika modeller där modell 4B är den senaste med snabbast processor och högst ramminne. Den har ett Broadcom BCM2711 chip med fyrkärning Cortex-A72 64-bit processor (ARM v8) och med hastigheten 1.5GHz. Den kan ha max 8 GB ramminne. Den har 40 GPIO som är generella in/utgångar [13].

OpenCV är ett bibliotek för datorseende och bildanalys. OpenCV är skrivet i C och C++ men finns implementerbar i andra programmeringsspråk också som Java, Pyt-hon och Ruby. OpenCV innehåller metoder för objektföljning, ansiktsigenkänning, rörelsedetektering med mera [14].

(19)

5 | TEORI OCH BAKGRUND

2.4 Motor

För att styra ett kamerahuvud behövs en motor. Det finns olika sorters motorer att välja mellan, som exempelvis stegmotor, servo, borstad likströmsmotor och borstlös likströmsmotor.

2.4.1 Borstad likströmsmotor

Borstad likströmsmotor har lindningarna i rotorn och permanentmagneter i statorn. Den har kolborstar som kopplas till rotorn för att överföra strömmen från spännings-källan. Motorn kan styras med en H-brygga som genom en PWM (pulsbreddsmodu-lerad) signal skickas från mikrokontroller. H-bryggan består av 4 transistorer som öppnas eller stängs genom att en mikrokontroller skickar en etta eller nolla till varje transistor. Om transistor q1 och q4 är på, roterar motorn åt ena hållet och om tran-sistor q3 och q2 är på, roterar motorn åt andra hållet (Se figur 2.2). PWM kan styra hur mycket ström som går igenom motorn och därmed styra rotationshastigheten [15].

2.4.2 Stegmotor

Stegmotor (se figur 2.3) har en kuggformad rotor bestående av järn och en stator med motorlindningar. Stegmotorn rör sig i ett antal steg per varv. Stegmotorn styrs genom att spolarna spänningssätts i olika steg, det kan den göras med en H-brygga som styrs av en mikrokontroller. Mikrokontrollern väljer vilken riktning strömmen skall ha i spolen [16].

Figur 2.1. En H-brygga som kan styra en DC motor i olika riktningar [46]

Figur 2.2. En bipolär-stegmotor [47]

Figur 2.3 Bild på en bipolär-steg-motor [59]

(20)

6 | TEORI OCH BAKGRUND

2.4.3 Servo

En servo består av en motor, en lägesåterkoppling (kan vara en potentiometer) samt en reduktionsväxel (se figur 2.5). Motorn kan bestå av en AC motor (asynkronmo-tor), borstad likströmsmotor eller en borstslös likströmsmotor. Servon styrs genom att en signal skickas genom pulsbreddsmodulering (PWM) (se figur 2.4) från exem-pelvis en mikrokontroller. Pulsbredden från signalen avgör vilken vinkel som servon skall ställa in sig på. Exempelvis om pulsen är 1 millisekund ställs servons vinkel på 0 grader men om den är 2 millisekunder ställs den på 180 grader. Pulsbredden och vinkeln beror på vilken servo som används och det är viktigt att läsa databladet för att få information om detta samt vilken cykeltid den har [17].

2.4.4 Borstlös likströmsmotor

Borstslös likströmsmotor (BLDC) är en typ av synkronmotor där det magnetiska fäl-tet i rotorn och i statorn roterar i samma frekvens. Motorn har motorlindningarna i statorn och permanentmagneter i rotorn. Det finns olika sorters BLDC-motorer, det finns trefas, tvåfas och enfas motor.

För att en BLDC motor skall snurra behövs en ESC (elektronisk hastighetskontroller) för att styra strömmen. ESC skickar ström till statorns spolar i en sekvens där sex olika sekvenser ger en cykel. I figur 2.6 visas en ESC kopplad till en BLDC motor. För att få motorn att snurra korrekt behöver ESC veta rotorns position vid en viss tid-punkt.

Figur 2.5. Figuren visar hur en servo är upp-byggd [49]

Figur 2.6. Figuren visar hur en BLDC motor styrs med en ESC [50] Figur 2.4. Figuren visar hur en servo styrs med

(21)

7 | TEORI OCH BAKGRUND

Många BLDC motorer har Hall sensorer inbyggda i statorn för att veta positionen. Hall sensorn mäter det magnetiska fältet och när rotorns magneter passerar sensorn ger den en hög eller låg signal för att indikera om nord eller sydpol är vid sensorn [18].

2.4.5 Gimbal

En Gimbal är en motoriserad stabilisator för kameror som kan styras med en PWM (pulsbreddsmodulerad) signal. Den består av 3 borstlösa motorer som styrs av en kontroller. Kontrollern använder en PID regulator som stabiliserar kameran vid rö-relser. De tre axlarna som styrs är tilt, pan och roll-axel (se figur 2.7).

Tilt-axeln roterar kameran upp och ned i vertikalaxeln. Pan-axeln roterar kameran höger och vänster i horisontella axeln. Roll-axeln roterar kameran så att den ändrar vinkel relativt mot marken. Gimbal använder en IMU (tröghetsmätningsenhet) som har gyroskop och accelerometer för att veta lutningen på kameran samt för att kunna motverka skakningar på kameran [19].

Figur 2.7. Figuren visar rotationsaxlarna för en gim-bal [51]

(22)

8 | TEORI OCH BAKGRUND

2.5 Objektdetektering

Objektdetektering är en teknik inom datorseende som används för att detektera ob-jekt i en bild eller video. Det kan vara en person, byggnad, bil, boll med mera.

2.5.1 Neurala nätverk och maskininlärning

Det finns olika sätt att detektera objekt i en bild. Exempelvis genom neurala nätverk eller utan neurala nätverk. Artificiella neurala nätverk är nätverk med artificiella neuroner eller noder. Nätverket består av flera lager där neuronerna är kopplande till andra neuroner i ett annat lager (se figur 2.8). Nätverket är till för att lösa AI (artificiell intelligens) problem. Kopplingar mellan neuronerna kallas för vikter där positivt viktvärde ger starkare kopplingar medan negativt värde ger svagare kopp-lingar. Ett AI nätverk tränas genom att matas med träningsdata. Vikterna justeras efter varje steg och närmar sig ett visst värde på utgången [20].

Om man detekterar objekt utan neurala nätverk behövs också en klassifikationsal-goritm som exempelvis SVM (stödvektormaskin) [21] för att klassificera vad objektet

Figur 2.8. Ett neuralt nätverk [22]

Figur 2.9. En SVM (stödvektormaskin) som separerar två olika klas-ser med ett hyperplan [21]

(23)

9 | TEORI OCH BAKGRUND

är. SVM är en klassificerare som kan separera olika klasser på ett bra sätt. Den sepa-rerar dem med ett hyperplan som placeras mellan klasserna (se figur 2.9). Place-ringen av hyperplanet beräknar SVM genom att hitta en position för som maximerar marginalerna mellan de olika klasserna [21].

2.5.2 Klassificerare

Klassificerare är algoritmer som analyserar numeriska värden av bilder och organi-serar värdena i olika klasser. Om klassificeraren skall lära sig detektera katter tränas den med massor av bilder både med katter och utan katter. Klassificeraren tar en del av en bild som input och returnerar ett värde mellan 0 och 1, som indikerar sanno-likheten att bilden innehåller objektet. Värdet 0 är att delen inte är objektet och 1 är att delen helt säkert är objektet. På så sätt lär sig klassificeraren skilja på vad som är katt och inte. En del klassificerare använder sig av neurala nätverk [20].

2.5.3 Faltningsnätverk

CNN (Faltningsnätverk) är en typ av artificiellt neuronnätverk som används för bild-analys. Nätverket består av faltning, nedsampling och ett neuralt nätverk där beräk-ningarna för att hitta ett objekt sker (se figur 2.10). För att använda nätverket mins-kas först bilden för att få mindre data att beräkna. Därefter används en matematisk funktion som kallas ”faltning” för att ta fram olika former eller kanter från en bild. Det görs genom att analysera en liten del av bilden i taget. Sedan beräknar det neu-rala nätverket fram vad det är för objekt där nätverket är tränat med en klassificerare [22].

2.5.4 Databaser

Det finns olika databaser som detekteringsalgoritmer kan vara tränade med. Några är COCO, ImageNet, Pascal VOC. Dessas databaser innehåller annoterade bilder. De används för att träna algoritmerna att kunna detektera rätt objekt. Exempelvis COCO databas innehåller 91 objektkategorier med 2.5 miljoner märkta exempel i 328 000 bilder [23].

(24)

10 | TEORI OCH BAKGRUND

2.5.5 Objektdetekteringsalgoritmer utan neurala nätverk

Några exempel på objektdetekteringsalgoritmer som inte använder neurala nätverk är Viola Jones [24] eller HOG (Histogram av orienterade gradienter) [25].

Viola Jones algoritm

Viola Jones är en algoritm som letar upp rektangulära egenskaper som kallas Haar egenskaper. Haar-funktioner är egenskaper hos en bild för att kunna detektera ett objekt. Viola Jones algoritmen beräknar tre olika egenskaper, kant, linje eller fyr-sidig funktion (se figur 2.11). De används för att hitta linje, kant eller diagonal i en bild. Algoritmen beräknar vilken region som är ljusare eller mörkare och får fram Haar-egenskaper för det området. Algoritmen fungerar bra för ansiktsdetektering och kan göra det i realtid. På grund av att alla ansikten har vissa gemensamma egen-skaper kan algoritmen med hjälp av Haar-egenegen-skaperna beräkna ut om det är ett ansikte eller ej [24].

HOG

HOG (Histogram of oriented gradients) är en detekteringsalgoritm som beräknar riktningsförändringen av pixlarnas intensitet (ett värde för pixelns ljusstyrka och färg) i en bild. Algoritmen delar in bilden i små celler där ett histogram över gradi-enten (riktningsförändringen av pixlarnas intensitet) beräknas för varje cell. Histo-grammet är en graf som visar frekvensen av varje intensitetvärde i bilden (se figur 2.12).

Figur 2.11. Olika Haar egenskaper som Viola Jones algoritm använder [53]

(25)

11 | TEORI OCH BAKGRUND

Den slutliga funktionsvektorn beräknas genom att sammanfoga funktionsvektorer för alla block i en bild. Därefter matas vektorerna till en linjär SVM (stödvektorma-skin) för objektklassificering [25].

2.5.6 Objektdetekteringsalgoritmer med neurala nätverk

Några exempel på objektdetekteringsalgoritmer som använder neurala nätverk är Faster R-CNN (Faster Region-Based Convolutional Network) [26], YOLO (You Only Look Once) [27], SDD (Single Shot MultiBox Detector) [28].

Faster R-CNN

Faster R-CNN (Faster Region-Based Convolutional Network): Faster R-CNN använ-der en matris med skjutande fönster över delar av bilden tills den har genomsökt hela bilden. Den använder CNN (faltningsnätverk) för detektering och RPN (Region Proposal Network) som ger CNN algoritmen förslag på var den kan leta efter objektet och därmed slipper faltningsnätverket leta igenom hela bilden för att hitta det sökta objektet. I figur 2.13 visas en modell av Faster R-CNN [26].

Figur 2.13. Modell för Faster R-CNN [55]

(26)

12 | TEORI OCH BAKGRUND

YOLO

YOLO (You Only Look Once) [27] är en algoritm som delar upp bilden i flera celler, där varje cell använder CNN för att detektera om ett objekt finns i rutan (se figur 2.14). Beräkningen sker endast en gång då alla celler exekveras samtidigt. Om samma objekt blivit detekterade flera gånger tas de extra detekteringarna bort med NMS (”Non-Maximum Suppression”). Det är en algoritm som beräknar

överlapp-ningen av detekteringsrutorna och tar bort detekteringsrutor som hör till samma ob-jekt. Därmed blir varje objekt detekterat endast en gång. Algoritmen behåller endast detekteringen med högst detekterad sannolikhet [29].

SSD

SSD (Single Shot MultiBox Detector) [28] är en objektdetekteringsalgoritm baserad på Feedforward Convolutional Network. Där feedforward Convolutional Network är ett faltningsnätverk som endast förflyttar indata framåt i nätverket en gång. Objekt-detektorn SSD består av ett ramverk och ett SSD huvud (se figur 2.15). Ramverket är ett bildklassificeringsnätverk där det sista klassificeringslagret har tagits bort och er-satts med SSD huvudet. SSD huvudet består av ett eller flera lager av faltning. Dessa lager minskar i storlek för att kunna detektera objekt i olika skalor. Algoritmen an-vänder en ingångsbild och delar upp bilden i flera rutnätsceller där varje cell ansva-rar för att identifiera objekt i sin del av bilden. Därefter används NMS (Non-Maxi-mum Suppression) [29] för att ta bort multidetekteringar av samma objekt. Sedan kvarstår endast en detektering per objekt.

Figur 2.14. Modell av YOLO (You Only Look Once) [28]

Figur 2.15. Modell av SSD (Single Shot Multibox Detector) där de vita boxarna är ramverket och de blåa är SSD huvudet [56].

Figur 2.15 Modell av SSD (Single Shot Multibox Detector) där de vita boxarna är ramverket och de blåa är SSD huvudet. [56]

(27)

13 | TEORI OCH BAKGRUND

2.6 Visuell Objektföljning

Objektföljning är en metod i bildseende som beräknar positionen för ett valt objekt i efterföljande bilder i en video. Olika visuella objektföljningsalgoritmer som finns är Optisk flöde, Kalmanfilter, Meanshift, Camshift. Dessa algoritmer som nämnts har ingen detekteringsalgoritm implementerad, utan behöver en extern detekte-ringsalgoritm. Andra algoritmer som redan har en detekteringsalgoritm implemen-terad är MOSSE, KCF, CSRT.

2.6.1 Objektföljning utan objektdetektering Optiskt flöde

Optiskt flöde är en algoritm som beräknar rörelsen för en pixel mellan två efterföl-jande bilder [30]. Algoritmen finns i både gles och tät funktion. Gles optiskt flöde beräknar rörelsevektorn för ett helt objekt i bilden, exempel detekterade hörn. En algoritm för gles optisk flöde är Lucas-Kanade algoritm [31]. Den baseras på att be-räkna närliggande pixlar som har samma riktning och hastighet. Tät optiskt flöde är en algoritm som beräknar rörelsevektor för varje pixel i bilden. En algoritm är till exempel Gunnar Farnebäcks algoritm. [32]

Meanshift och Camshift

Meanshift är en algoritm som letar efter lokala maximum i ett område. För att an-vända algoritmen i objektföljning kan en sannolikhetsfördelning skapas i en bild baserat på ett histogram av objektet i föregående bilden. Där varje pixel får ett värde på vilken sannolikhet det är att pixeln förekommer i objektet i den föregå-ende bilden. Algoritmen beräknar sedan ut lokala maximum utifrån sannolikhets-fördelningen. Camshift är en algoritm som bygger på Meansshift men kan ändra storleken på sökfönstret som används och därmed följa med objektet om det blir större eller mindre i bilden [30].

Kalmanfilter

Kalmanfilter är en algoritm som utifrån mätningar uppskattar tillståndet hos ett dy-namiskt system. Filtret uppskattar tillståndet på ett sätt som minskar medelvärdet av felet. Den kan uppskatta tillstånd som redan varit, tillstånd som är nu och tillstånd som skall komma. Filtret kan från ett objekts givna startposition i en bild beräkna fram positionen och hastigheten för objektet i nästkommande bild [33].

2.6.2 Objektföljning med objektdetektering MOSSE

MOSSE (Minimum Output Sum of Squared Error) är en filterbaserad objektföljare som använder korrelationsfilter. Korrelationsfilter är ett filter som tar en del av en bild som input exempelvis en person och letar efter största likheten i nästkommande bild. För att få hitta objektets position initieras filtret med en vald position genom exempelvis objektdetektering. Därefter letar algoritmen efter positionen i en bild

(28)

14 | TEORI OCH BAKGRUND

med den största korrelationen (likheten) av objektet. Där den plats som ger det max-imala värdet för sambandet mellan bilderna anger positionen av objektet.

För att objektföljaren skall vara snabb beräknas sambanden med FFT (Fast Fourier Transform). Den använder faltning och behöver träningsbilder för att träna filtret. Algoritmen tar fram ett filter som minimerar summan av felen mellan det faktiska utvärdet och det önskade utvärdet [34].

CSRT

Discriminative Correlation Filter with Channel and Spatial Reliability (DCF-CSR) är en algoritm som använder discriminative korrelationsfilter för att beräkna var ob-jektet är i en bild. Där ”disciminative model” av filtret lär korrelationsfiltret vilka beslut den skall ta för valt data, den gör det genom att filtret tränas på träningsbilder. HOG egenskaper används för att skapa histogram av förgrund och bakgrund av ob-jektets beräknade position. Sedan skapar algoritmen en rumslig tillförlitlighets-karta för att välja den delen av objektet som förbättrar spårningen. Det möjliggör ett ökat sökområdet för objekt och förbättrar följningen av objekt som ej är rek-tangulära[35].

KCF

KCF (Kernelized Correlation Filter) är en filterbaserad objektföljare som använder

en klassificerare för att skilja på objekt och bakgrund i en bild. Den använder ett korrelations filter för att veta var objektet är i bilden genom att jämföra sambandet mellan pixlar i efterföljande bilder i en video. För att träna filtret används ”Kernel regression” som är en teknik för att hitta en icke-linjär relation mellan ett par värden. Algoritmen används med HOG egenskaper för att beräkna positionen av objektet [36].

(29)

15 | TEORI OCH BAKGRUND

2.7 Regulator

För att styra motorn till att följa ett objekt behövs en regulator. En ofta använd regu-lator är PID-reguregu-latorn. P står för proportionerlig, I för integrerande och D för deri-verande (se figur 2.16).

Den proportionerliga delen är proportionell mot reglerfelet e(t) i formeln (2.1). Om förstärkande faktorn K är stor är utsignalen också stor. Att endast använda P regle-ring ger ett kvarstående fel.

Den integrerande delen Ti beräknar summan av alla fel genom integrering där styr-signalen ökar om felet ökar. När felet försvinner lägger sig styrstyr-signalen konstant på sitt nya värde. Integrerande verkan eliminerar kvarstående fel.

Den deriverande delen Td verkar på lutningen av felet. Om felet är stort är också styrsignalen stor. Deriverande verkan ger bättre snabbhet till regulatorn [37].

(2.1)

Figur 2.16. Blockdiagram för PID-regulator [57]

Figur 2.4 Blockdiagram för PID regulator [57]

Figur 2.5 Blockdiagram för PID regulator [57]

Figur 2.6 Blockdiagram för PID regulator [57]

Figur 2.16 Blockdiagram för PID regulator [57]

Figur 2.7 Blockdiagram för PID regulator [57]

Figur 2.8 Blockdiagram för PID regulator [57]

(30)
(31)

17 | METOD OCH RESULTAT

3 Metoder och resultat

I detta kapitel beskrivs hur prototypen är designad och implementerad, följt av tester och resultat. Först beskrivs vilka komponenter som använts i prototypen. Därefter beskrivs tester och resultat av den byggda prototypen och för en kameraman.

3.1 Enkortsdator

Det finns olika enkortsdatorer att välja mellan som exempelvis Nvida Jetson Nano [12] och Raspberry Pi 4 [13]. Raspberry Pi 4B har en liten snabbare processor medan Nvida Jetson nano har en starkare GPU, samt enligt tillverkaren är den byggd för AI. Trots den starkare GPU på Nvida Jetson Nano valdes Raspberry Pi 4B (se figur 3.1), den valdes för att den var billigare och kunskap om den fanns redan innan. Därmed var inlärningskurvan lägre för att använda det systemet. Den hade också lite snabb-bare processor än Nivida Jetson Nano.

Raspberry Pi installerades med Raspberry Pi OS som är ett OS byggt för Raspberry Pi. Men den fungerar även med andra lättviktsoperativsystem.

3.2 Kamera

Det finns kameror som är byggda för Raspberry Pi som exempelvis Raspberry Pi

kamera Modul v2 med 8 megapixel sensor [38] eller den dyrare Raspberry Pi Hög kvalitets kamera med 12.3 megapixel sensor [39].

Raspberry Pi stödjer också andra kameror som exempelvis webbkameror. Kameran som valdes var en 3 megapixel USB-baserad webbkamera Logitech c270 med 1280 x 720 pixlar 30 bilder per sekund och 55 graders synfält [40]. Den valdes för att den var kompatibel med Raspberry Pi, den var billig och hade bra omdömen. Efter test visade det sig att kameran också kunde köras utan extern strömförsörjning.

(32)

18 | METOD OCH RESULTAT

3.3 Gimbal

Gimbalen som används är en Tarot ZYX T-3D V [41]. För att styra robotkameran kan stegmotor eller servo också användas. Men när det fanns en färdig lösning, som kan ge mjuka rörelser, utan att behöva lägga energi på den mekaniska biten, valdes gimbalen istället. Den valdes för att den kan styras via PWM signal och ge stabila rörelser. Gimbalen är egentligen gjord för drönare men fungerar bra stillastående också. Gimbalen kan panorera 250 grader och tilta 145 grader, och den har en maximal rotationshastighet på 200 grader per sekund (se tabell 3.1). Gimbalen är egentligen gjort för GoPro Hero 5 men den kan fungera också med andra kameror om man balanserar den [41].

Tabell 3.1. Gimbal ZYX T-3D V specifikationer

Strömförbrukning 50 mA (12V) 30mA (25V)

Maximal strömförbrukning 700mA (12V) 350mA (25V) Maximal styrbar

rotations-hastighet

Tilt: ±200 grader/s Roll: ±200 grader/s Pan: ±200 grader/s

Styrbart rotationsområde Tilt: -120 grader ~ +15 grader Pan: -125 grader ~ +125 grader

(33)

19 | METOD OCH RESULTAT

3.4 Objektdetektering

En detekteringsalgoritm används för att kunna hitta positionen till ett objekt om följ-ningsalgoritmen tappar följningen.Där Viola Jones algoritm används mest för att detektera ansikten därmed utesluts den [24]. Samt visar artikeln ”CNN and HOG based comparison study for complete occlusion handling in human tracking” [42] att CNN gav bättre resultat i detekteringen än HOG. Därmed kommer endast objekt-detekteringsalgoritmer med neurala nätverk användas. Bildhastigheten samt tillför-litlighet kommer att jämföras på objektdetekteringsalgoritmerna SSD [28], YOLO [27] och Faster-RCNN [26].

Resultaten är från artikeln SSD Single Shot MultiBox Detector (se tabell 3.2) [28] och kördes på enNvidia Titan X GPU. Resultatet visar att Faster R-CNN hade en bildhastighet på 7 bilder per sekund, vilket är alldeles för lågt för att användas till att följa ett objekt i realtid. Medan både YOLO och SDD har tillräcklig bildhastighet om de hade körts med samma GPU som artikeln använder. Men på grund av att Rasp-berry Pi är svagare än deras dator samt körs enbart på CPU kommer bildhastigheten att vara mycket lägre. I resultatet i Tabell 3.2 finns det en kolumn där det står mAP (mean Average precicion) som är genomsnittlig precision, där objektets riktiga po-sition jämförs med den identifierade popo-sitionen. Högre poäng betyder att algoritmen är bättre på att identifiera var objektet är i bilden. SSD 300 har snabbast bildhastig-het av de jämförda algoritmerna som har över 70 mAP medan Fast YOLO har lägre mAP men snabbare bildhastighet.

Tabell 3.2. Tabell tagen från [28] Resultat av Pascal VOC2007 test. Testerna körs på en Nvidia Titan X GPU

Tabell 3.3 Tabell tagen från [28] Resultat av Pascal VOC2007 test. Testerna köres på en Nvidia Titan X GPU

Tabell 3.3. Tabell tagen från [43] och visar resultat från tester av Tiny-Yolo. Tes-terna kördes på NVIDIA GeForce GTX 1070 GPU

Tabell 3.4 Tabell tagen från [43] och visar resultat från tester av Tiny-Yolo. Tes-terna kördes på NVIDIA GeForce GTX 1070 GPU

(34)

20 | METOD OCH RESULTAT

En annan artikel [43] testade Tiny-Yolo v3 där de fick en hastighet på 4,84 millise-kunder per detektering (se tabell 3.3), vilket är 206 bilder per sekund. Därför gjordes en testkörning på Raspberry Pi med SSD300 och Tiny Yolo v3 (se tabell 3.4). SSD300 använde en bild 300x300 för att detektera objekt med, medan Tiny-Yolo v3 använde en bild på 224x224. Algoritmerna kördes på samma video som i följningstestet. Un-der testet gav SSD 300 en bildhastighet på ungefär två-tre bilUn-der per sekund medan Tiny-Yolo v3 gav en bildhastighet på fyra-fem bilder per sekund. SSD300 var mer korrekt i detekteringen och gav högre mAP än Tiny Yolo v3, samt detekterade den personen oftare.

SSD300 kommer att användas som objektdetekteringsalgoritm på grund av en högre tillförlitlighet där den gav frekvent detektering med hög mAP.

Tabell 3.4. Tester av hastighet av två detekteringsalgoritmer

Detekteringsalgoritm Bildstorlek Bildhastighet

SSD300 300x300 pixlar 2–3 bilder per sekund

Tiny-Yolo v3 224x224 pixlar 4–5 bilder per sekund

3.5 Objektföljning

I denna rapport kommer endast objektföljningsalgoritmer behandlas, som själva kan följa ett objekt utan detekteringsalgoritm som körs på varje bild. Detta för att få en högre hastighet än vad objektdetekteringsalgoritmerna kan klara av. För att be-stämma vilken objektföljningsalgoritm som skall användas har ett flertal algoritmer jämförts genom att använda samma inspelade video med en person som går (se figur 3.2). Personen gick utomhus på en väg och var i både halvbild, helbild och totalbild i olika delar av videon. Därefter jämfördes bildhastighet, tillförlitligheten i följningen och om de tappade följningen någon gång. Testerna gjordes på Raspberry Pi 4 mo-dell B. De olika algoritmerna som jämfördes var KCF, MOSSE och CSRT.

Figur 3.2. Bilder från videon som algoritmerna testades på. Till vänster halvbild, i mitten helbild, till höger totalbild.

(35)

21 | METOD OCH RESULTAT

Vid jämförelsen användes två olika bildstorlekar en på 534x300 pixlar och en på 380x210 pixlar. Under testet med storleken 534x300 pixlar hade KCF bra följning av objektet med en bildhastighet på 7 bilder per sekund. CSRT hade bra följning och tappade aldrig objektet, men hade en bildhastighet på 3 bilder per sekund. MOSSE var snabbast av de tre algoritmerna med en hastighet på 80 bilder per sekund men tappade följningen när personen var i totalbild. Under testet med bildstorleken 380x210 pixlar hade KCF en bildhastighet på 17 bilder per sekund och tappade följ-ningen ungefär samtidigt som MOSSE med bildstorleken 534x300 pixlar. MOSSE hade en bildhastighet på 150 bilder per sekund men tappade följningen relativt snabbt vid helbild. CSRT hade en bildhastighet på 6 bilder per sekund och tappade aldrig följningen.

I resultat av testerna i tabell 3.5 ser man att CSRT var bäst i att följa personen men också långsammast, därmed kommer CSRT att uteslutas. Algoritmerna med bild-storleken 380x210 gav inte lika bra följning som bildbild-storleken 534x300, därmed väljs en bildstorlek på 534x300. KCF hade bättre följning än MOSSE medan MOSSE var snabbare än KCF. Därmed kommer algoritmerna MOSSE 534x300 och KCF 534x300 att i fortsättningen testas som objektföljningsalgoritm.

Tabell 3.5. Tester av hastighet av olika följningsalgoritmer

Tracker Bildstorlek Bildhastighet Kommentarer KCF 534x300 pixlar 7 bilder per sekund Tappade följningen vid

totalbild men hittade personen igen vid

halv-bild.

MOSSE 534x300 pixlar 80 bilder per sekund Tappar följningen vid to-talbild och återfick aldrig

följningen

CSRT 534x300 pixlar 3 bilder per sekund Klarade följningen bra, tappade aldrig KCF 380x210 pixlar 17 bilder per sekund Tappade följningen vid

totalbild och återfick ald-rig följningen MOSSE 380x210 pixlar 150 bilder per sekund Tappade följningen vid

helbild och återfick ald-rig följningen CSRT 380x210 pixlar 6 bilder per sekund Klarade följningen bra,

(36)

22 | METOD OCH RESULTAT

3.6 Regulator

För att kunna styra kameran till rätt vinkel har en PID-regulator valts. Den har valts för att på ett smidigt sätt kunna styra kameran mot rätt position utan att kameran överstyr. De proportionella, integrerande och deriverande variablerna ställdes in ge-nom att testa hur gimbalen uppförde sig vid olika värden. Värdena justerades till att få en jämn och stabil styrning.

3.7 Prototyp

Den färdiga prototypen (se figur 3.3) består av en Raspberry pi 4 B med gimbalen Tarot XYZ T-3DV som styr en webbkamera Logitech C270 med en bildstorlek på 534x300 pixlar. Kameran behövde balanseras upp med en vikt för att fungera med gimbalen. Detekteringsalgoritmen är SSD300 och följningsalgoritmerna som testats är MOSSE och KCF. För att styra kameran används en PID regulator.Opencv 3.4 används som programvara och programmeringsspråket är python.

Figur 3.3. Robotkameran som är styrd av en Raspberry Pi 4B

(37)

23 | METOD OCH RESULTAT

3.8 Tester av färdig prototyp

För att undersöka hur bra den automatiska robotkameran klarade av att följa ett ob-jekt gjordes ett antal tester. Testerna gick ut på att ta reda på vilken detekteringsdi-stans samt vilken följningshastighet kameran klarade av. Det undersöktes också hur jämn styrningen av kameran var och om den överstyrde något när personen stan-nade. Testerna gjordes utomhus och inomhus. Alla tester gjordes med en bildstorlek på 534x300 pixlar. Kameran var i autoläge och justerade färgbalans, bländare och slutartid automatiskt. Videomaterialet för testerna var inspelade i en varierbarhas-tighet på 1–15 bilder per sekund. Inspelningshasvarierbarhas-tigheten varierade på grund av att koden som spelade in videon exekverades i samma loop som följnings och detekte-ringsalgoritmerna.

Koden för robotkameran kördes på parallella exekveringstrådar, där en tråd är en programprocess som kan köras samtidigt som andra processer [44]. Objektföljnings och detekteringsalgoritmen kördes på en tråd medan styrningen för gimbalen kördes på en parallell tråd. Robotkameran var programmerad att styra kameran så att per-sonen alltid var centrerad i bilden och att perper-sonens huvud var 30 pixlar under top-pen av bilden.

Tester gjordes också med en amatörmässig kameraman för att ha en referens till hur bra robotkameran var egentligen. Resultatet av distansmätning, följningshastighets-mätning och följningshastighets-mätning av jämnhet och snabbhet jämfördes.

3.8.1 Test av olika algoritmer

För att undersöka hur ofta detekteringsalgoritmen SSD300 skulle köras valdes att testa fyra olika uppdateringsfrekvenser. Uppdateringsfrekvensen på 0.1, 0.2, 0.33, och 1 gång per sekund. Uppdateringsfrekvensen testades på följningsalgoritmen MOSSE och KCF för att se om det blev någon skillnad.

I testerna gick en person fram och tillbaka parallellt mot kameran i både helbild och totalbild. Inställningen för styrningen av robotkameran var samma i alla tester. Det visade sig att med 0,1 och 0,2 uppdateringar per sekund för SSD300 kunde robotka-meran följa den gående personen bra tills den tappade följningen. När följningen tappades kunde robotkameran ibland överstyras fram och tillbaka tills den tappade personen ur bilden. KCF hade mer tendens att överstyra på grund av att den inte upptäckte att den tappat följningen, medan MOSSE upptäckte det snabbare.

En uppdateringsfrekvens på 0,33 gånger per sekund samt 1 gång per sekund var all-deles för ofta för att KCF skulle kunna köras normalt. MOSSE klarade av att SSD300 uppdaterades 0,33 gånger per sekund medan en gång per sekund var för ofta. Detta hände på grund av att uppdateringshastigheten blev för långsam för att kunna styra robotkameran stabilt.

Valet av uppdateringshastighet blev o,2 gånger per sekund för både MOSSE och KCF för kunna få en godtagbar hastighet, även om det resulterade i att robotkameran kunde styra helt fel vid tappad följning. Den längsta tiden kameran klarade av att

(38)

24 | METOD OCH RESULTAT

följa en person var 40 sekunder utomhus under de tester som gjordes. Tiden det tog innan robotkameran tappade följningen av personen varierade mellan 10–40 sekun-der. Personen promenerade framför kameran i varierande hastighet och i ett varie-rande utsnitt. Inga test har gjorts för att fastslå hur länge robotkameran klarar av att följa en person i olika hastigheter eller utsnitt.

I tabell 3.6 visas hastigheter för olika algoritmer. Hastigheten uppmättes på en video som hade helbild samt halvbild. Där resultatet visar att objektföljningsalgoritmerna ger snabbare uppdateringshastighet då personen tar mindre plats i bilden. Algorit-men SSD300 uppvisade ingen skillnad i uppdateringshastigheten vid helbild eller halvbild.

Tabell 3.6. Uppdateringshastighet för olika algoritmer Tracker Gim-bal MOSSE helbild MOSSE halvbild SSD300 KCF hel-bild KCF halvbild Uppdaterings-frekvens i sekunder 3-5 ggr/s 30 ggr/s 15 ggr/s 0.5-1.5 ggr/s 5-7 ggr/s 2-3 ggr/s 3.8.2 Distansmätning

Distansmätningen gjordes genom att en person gick ifrån kameran tills kameran tap-pade detekteringen av personen. Därefter gick personen sakta mot kameran tills per-sonen blev detekterad av kameran igen. Perper-sonen stannade upp efter varje steg för att detekteringsalgoritmen skulle hinna uppdateras. När en punkt fastslogs mättes distansen från personen till kameran. Testerna gjordes utomhus på en äng i solsken, samt inomhus i lägenhet där det enda ljuset som fanns var det som kom in genom fönstren (se figur 3.4). Personen som gjorde testet var 180 cm lång. Detekteringsgoritmen var SSD300 och bildstorleken var 534x300 pixlar. Konfidensgraden för al-goritmen SSD300 var inställd på 0.8, där högre värde betyder större säkerhet att rätt objekt detekterats.

Figur 3.4. Bilden visar längsta avståndet kameran klarade av att detektera en person inomhus och utomhus.

(39)

25 | METOD OCH RESULTAT

Det gjordes fyra tester utomhus (se tabell 3.7), där den längsta distansen som kunde detekteras var 11,4 meter. Detekteringsrektangeln runt personen var då 30x70 pixlar stor. Den kortaste mätningen var 10,7 meter och detekteringsrektangeln var 50x90 pixlar. I testerna hade personen olika färger på tröjan för att se om det påverkade distansen. Det gjordes fem tester inomhus (se tabell 3.7), där den längsta distansen var 9,3 meter och 52x109 pixlar medan den kortaste 8,8 meter och 59x123 pixlar. Ett test gjorde också där personen hukade sig och fick en distans på 8,3 m med detekte-ringsstorlek på 62x70 pixlar.

Av de fåtal tester som gjordes visade det sig att detekteringsalgoritmen inte var kon-sekvent i detekteringen utan kunde variera. Det kan bero på att algoritmen behöver beräkna sannolikheten för att det är en person, och om sannolikheten är mindre än 0.8 rensas den bort och personen detekteras inte. Färgen på kläderna verkar inte ha någon större betydelse utan distansen skiljde sig inte mycket. Men svårt att avgöra då endast vit, grön, svart och grå tröja användes. I test 9 när personen satt hukad var pixelstorleken 62x70 pixlar och distansen var 8,3 meter. Det visar att inte endast pixelstorleken påverkar detekteringen utan också distansen, där längre distans gjorde personen mer oskarp i bilden.

Utifrån testerna visar det sig att algoritmen klarar av att detektera en person vid 11 meter utomhus i solsken och 9 meter inomhus. Skillnaden i distansen inomhus och utomhus har att göra med att det var ljusare ute än inne.

När detekteringsdistansen skulle mätas för en kameraman gick en person 50m bort. Därefter undersöktes videon genom att titta på hur långt det gick att urskilja perso-nen från bakgrunden. Testet gjordes utomhus i solsken och bildstorleken var 534x300 pixlar. Personen kunde urskiljas hela 50 m bort som personen gick. Då var personen var 7x10 pixlar i storlek, men så suddig att det inte gick att urskilja färg på tröjan eller vem det var.

Tabell 3.7. Resultat från distansmätning med SSD300 och en bildstorlek på 534x300 pixlar TEST Distans Personens

stor-lek i bilden Klädsel Test1 utomhus 11,2 m 35x70 pixlar Svart tröja Test2 utomhus 10,9 m 42x83 pixlar Grön jacka Test3 utomhus 11,4 m 30x70 pixlar Grön jacka Test 4 utomhus 11,3 m 39x74 pixlar Vit tröja

Test6 inomhus 9,1 m 53x120 pixlar Grå tröja Test7 inomhus 9,3 m 52x109 pixlar Svart tröja

(40)

26 | METOD OCH RESULTAT

Test8 inomhus 8,8 m 59x123 pixlar Svart tröja Test9 inomhus 8,3 m 62x70 pixlar Svart tröja Test10 inomhus 9,1 m 61x122 pixlar Vit tröja

3.8.3 Följningshastighet

Beräkning av robotkamerans följningshastighet gjordes genom att en person gick fram och tillbaka i en halvcirkel runt kameran i en hastighet som kameran klarade av, därefter ökades hastigheten sakta tills kameran tappade följningen. Hastigheten beräknades genom att mäta distansen i antal pixlar från en fast punkt till en annan punkt efter en sekund. Testerna gjordes på en äng utomhus en solig dag med en upp-datering var femte sekund av algoritmen SSD300. Regulatorns inställning för styr-ningen var orörd. Det gjordes åtta tester totalt (se tabell 3.8) där hastigheten testades för både KCF och MOSSE både i helbild och totalbild (se figur 3.5). Tester med halv-bild valdes bort då det var tillräckligt svårt att få kameran att följa en person i helhalv-bild.

I dessa test definieras helbild som att personen tar upp en större yta än 50 procent av höjden i bilden. Totalbild definieras som att personen tog upp en mindre yta än 50 procent av höjden. Personen var minst fyra meter bort från kameran i helbild och med totalbild var personen minst sju meter från kameran.

Den snabbast mätta hastigheten var 120 pixlar per sekund för MOSSE, medan den långsammaste var 105 pixlar per sekund. För KCF var den snabbaste hastigheten 117 pixlar per sekund och den långsammaste 98 pixlar per sekund. MOSSE visar en mar-ginell minskning på hastigheten för totalbild medan KCF visar en marmar-ginell ökning för totalbild. Av testerna som visas kan inga slutsatser göras om någon algoritm ger snabbare följningshastighet på robotkameran eller ej.

På grund av att testerna gjordes med en bildstorlek på 534x300 pixlar, är följnings-hastigheten i pixlar endast relevant för denna bildstorlek. Om en annan bildstorlek används blir följningshastigheten snabbare i antal pixlar om det antas att algorit-merna klarar av att köra i samma hastighet som på dessa tester. En annan notis är att under testerna var styrningen ryckig då personen var nära kanten av bilden.

(41)

27 | METOD OCH RESULTAT

Sex tester gjordes för att mäta följningshastigheten med en kameraman (se tabell 3.9). Där sprang en person framför kameran och kameramannen försökte följa per-sonen med kameran. Det var inte den maximala följningshastigheten som mättes utan personen sprang i en hastighet på ungefär 3 meter per sekund. Därmed blev det en högre hastighet för halvbild än för helbild och totalbild. Lägst hastighet för blev det för totalbild. Testerna var till för att se om robotkameran klarade följa i en lika hög hastighet som en kameraman.

Resultatet visar att så inte var fallet utan robotkameran hade följningshastighet i ge-nomsnitt 100–120 pixlar per sekund medan kameramannen klarade av att följa en person i 300–800 pixlar per sekund. Det kan också nämnas att under följningen vid test 13 var halva personen utanför bild vid ett tillfälle.

Tabell 3.8. Tester av följningshastighet med KCF och MOSSE

TEST Följningsalgoritm Följningshastighet Test 1 helbild KCF 98 pixlar per sekund Test 2 helbild KCF 103 pixlar per sekund Test 3 totalbild KCF 117 pixlar per sekund Test 4 totalbild KCF 105 pixlar per sekund Test 5 helbild MOSSE 120 pixlar per sekund Test 6 helbild MOSSE 112 pixlar per sekund Test 7 totalbild MOSSE 119 pixlar per sekund Test 8 totalbild MOSSE 107 pixlar per sekund

Tabell 3.9. Tester av följningshastighet med kameraman

TEST Den som filmade Följningshastighet Test 9 helbild Kameraman 437 pixlar per sekund Test 10 helbild Kameraman 515 pixlar per sekund Test 11 totalbild Kameraman 340 pixlar per sekund Test 12 totalbild Kameraman 366 pixlar per sekund

(42)

28 | METOD OCH RESULTAT

Test 13 halvbild Kameraman 802 pixlar per sekund Test 14 halvbild Kameraman 708 pixlar per sekund

3.8.4 Mjukhet och snabbhet i kamerarörelserna

Åtta tester gjordes för att analysera hur snabbt och korrekt robotkameran kan styras in i rätt position (se tabell 3.10). Fyra tester för panorering och fyra för tiltning. Lika många tester gjordes också med en kameraman. För att mäta panoreringens snabb-het tog en person ett steg i sidled och stod stilla där tills kameran styrt klart. Testerna gjordes inomhus där tiden beräknades från att kameran börjat röra sig tills att per-sonen var i centrum av bilden och kameran slutat att panorera. Testerna gjordes med följningsalgoritmen KCF och detekteringsalgoritmen SSD300 som uppdaterades var tredje sekund. Noggrannheten i mätningarna var 0.1 sekunder då inspelningshastig-heten av videon var i genomsnitt 10 bilder per sekund.

I mätningen med helbild tog det 3 sek för ena testet och 3,5 sek för andra. I mät-ningen med halvbild tog det 3,2 sekunder för test 3 och 3,5 sekunder för test 4. Ro-botkameran panorerades mjukt och korrekt utan översväng. Det syns ingen markant skillnad på helbild eller halvbild gällande panoreringshastigheten, utan det tog mel-lan tre-fyra sekunder från start till stopp. Även om panoreringsdistansen ökade med 67 pixlar i helbild för test 1 till test 2, ökade styrningstiden med endast 0,5 sekunder. I testerna för att mäta snabbheten i robotkamerans tiltning stod en person stilla och böjde sig ner samt reste sig upp igen. Det var två tester för att mäta tiltningen upp och två för tiltningen ned. Då kameran hade helbild på personen tog det 7,8 sekunder för kameran att tilta ned. Medan det tog 13,8 sekunder att tilta upp. Distansen var 112 samt 116 pixlar. Då kameran hade halvbild på personen tog det 9,7 sekunder för kameran att tilta ner, medan det tog 30 sekunder att tilta upp. Distansen var 194 samt 204 pixlar. Robotkameran överstyrde alltid tiltningen en liten bit, för att sedan gå in i rätt position. Tiltningshastigheten för robotkameran skiljde mycket vid hel-bild och halvhel-bild men det beror troligtvis på att det var en längre distans som robot-kameran fick styra vid halvbild, samt att PID regulatorn var felinställd.

På grund av att endast ett fåtal tester gjorts är det svårt att säga exakt vilken styr-ningshastighet kameran klarar av. Resultatet visar att från det att personen har slutat gå tar det mellan tre-fyra sekunder tills kameran har centrerat personen i bilden, beroende på vilken distans som kameran behöver styras.

I tabell 3.11 visas åtta tester där en kameraman har filmat. Där testerna visar att det tog runt 1–1,2 sekunder från att kameramannen började panorera tills kameran stod stilla med personen korrekt centrerad. Det gällde i både helbild och halvbild. När kameramannen tiltade i helbild tog det 1–1,1 sekunder. I halvbild tog det runt 2 se-kunder tills personen var korrekt positionerad. Detta hände på grund av att kamera-mannen överstyrde tiltningen lite.

(43)

29 | METOD OCH RESULTAT

Resultatet av testerna visar att kameramannen var mycket snabbare än robotkame-ran i styrningen men att mjukheten i rörelserna var likvärda för panorering men inte tiltning.

Tabell 3.10. Styrningshastighet för robotkameran Tester Bildut-snitt Tiltning/ Panorering Tid från början av panorering tills kameran var stilla. Distans Överstyr-ning. Tid till

centrering i sekunder Test1 Helbild Panorering 3,0 s 96 pixlar Ingen Test2 Helbild Panorering 3,5 s 163 pixlar Ingen Test3 Halvbild Panorering 3,2 s 198 pixlar Ingen Test4 Halvbild Panorering 3,4 s 213 pixlar Ingen Test5 Helbild Tiltning upp 13,8 s Inkl.

överstyrning

116 pixlar 1.4 s

Test6 Helbild Tiltning ner 7,8 s Inkl.

över-styrning 112 pixlar 3.6 s Test7 Halvbild Tiltning upp 30,0 s Inkl.

överstyrning

204 pix-lar

10 s Test8 Halvbild Tiltning ner 9,7 s Inkl.

över-styrning

(44)

30 | METOD OCH RESULTAT

Tabell 3.11. Styrningshastighet för kameran med en kameraman Tester Bildut-snitt Tiltning/ Panorering Tid från början av panorering tills kameran var stilla. Distans Överstyr-ning.

Test9 Helbild Panorering 1,2 s 116 pixlar Ingen Test10 Helbild Panorering 1,1 s 115 pixlar Ingen Test11 Halvbild Panorering 1,0 s 215 pixlar Ingen Test12 Halvbild Panorering 1,1 s 239 pixlar Ingen Test13 Helbild Tiltning ner 1,0 s 97 pixlar Ingen Test14 Helbild Tiltning upp 1,1 s 95 pixlar Ingen Test15 Halvbild Tiltning ner 2,1 s 201 pixlar Liten Test16 Halvbild Tiltning upp 2,2 s 195 pixlar Liten

(45)

31 | ANALYS OCH DISKUSSION

4 Analys och diskussion

I denna rapport har en prototyp av en robotkamera byggts som automatiskt kan filma och följa en person som går. I detta kapitel analyseras valet av komponenter och algoritmer till robotkameran samt en analys av resultatet. Sist kommer objekt-följningskamerors påverkan inom samhället att tas upp.

4.1 Analys av vald metod

Raspberry Pi 4 B som användes för robotkameran var inte optimal för att köra neu-rala nätverk på, utan det skulle behövas något med mer processorkraft för att få högre följningshastighet. Ett val skulle kunna vara en Nvida Jetson eller att använda någon annan detekteringsalgoritm som är snabbare.

Kamerans Logitech c270 som användes fungerade bra, men skärpan och kontrasten på kameran var inte den bästa. Om en zoomkamera hade använts skulle en längre distans ha kunnat detekterats än de 11,4 m som blev det längsta resultatet för di-stansmätningen utomhus. Detta på grund av att kameran då får en närmare bild på objektet.

Gimbal var ett bra val för den kunde styras precist och snabbt. Den enda nackdelen var att den ibland kunde vara för snabb i styrningen och då hann kamerabilden inte med. Maxhastigheten för styrningen var 200 grader per sekund men sattes ned till 100 grader per sekund för att inte styras för snabbt.

Det var svårt att få en bra inställning för PID-regulatorn, för den påverkades av al-goritmernas uppdateringsfrekvens. Algoritmerna MOSSE, KCF och SSD300 har alla olika uppdateringsfrekvenser. Om den följda personens position uppdateras lång-sammare än regulatorns styrning kunde regulatorn bli instabil och överstyra.

Både KCF och MOSSE är bra objektföljningsalgoritmer där MOSSE är snabbare men KCF var mer korrekt i följningen. Båda algoritmerna hade svårt att ändra storlek på följningsrektangeln då personen gick mot eller från kameran. Av de två algoritmerna skulle MOSSE valts på grund av att den var snabbare än KCF. Den upptäckte också snabbare att den hade tappat följningen, vilket gjorde att den inte styrde robotkame-ran åt fel håll lika ofta.

Detekteringsalgoritmen SSD300 var långsammare än följningsalgoritmerna och var anledningen till att robotkameran inte klarade av en hög följningshastighet. Tiny-Yolo var ett annat alternativ som var snabbare men hade väldigt dålig tillförlitlighet i detekteringen. Det finns andra realtids detekteringsalgoritmer som SSD-Lite, YOLO-Lite med mera som är värt att testa, för att se om man kan få en högre detek-teringshastighet med bra tillförlitlighet.

(46)

32 | ANALYS OCH DISKUSSION

4.2 Analys av resultat

Målet var att undersöka om man kan få följningen av ett objekt lika bra som om en kameraman hade filmat.Där robotkameran skulle följa en person som gick eller sprang samt att den också skulle kunna filma lika jämt och bra som en kameraman. Målet var också att kameran skulle klara av att filma en person i halvbild samt att klara av att följa en person minst 20 meter bort. Resultatet blev att kameran endast kunde följa en person som gick i en meter per sekund i helbild. Den kunde endast detektera en person med en maximal distans på 11,4 m.

Kameran klarade av att följa en person i maximalt 40 sekunder innan följningen tap-pades. Följningen av personen tappades oftast av olika orsaker. En orsak var när ob-jektdetekteringsalgoritmen skulle uppdateras kunde det hända att personen som de-tekterats redan var för långt borta när följningsalgoritmen skulle initieras med den nya positionen, därmed tappades följningen på en gång. Följningen kunde tappas när personen vände håll på grund av att kameran inte hann reagera utan överstyrde. För att inte tappa följningen behövde personen stanna lugnt och sakta för att sedan gå åt andra hållet. Följningen kunde också tappas genom att SSD300 misslyckades att hitta ett objekt i bilden. När detta hände stannade robotkameran i samma posit-ion tills den detekterat ett objekt igen. En fjärde anledning kunde vara att var att personen gick i riktningen från kameran för snabbt, detta hände på grund av att följ-ningsalgoritmerna var dåliga på att ändra skalan av följningsrektanglen.

Resultatet från distansmätningen visar, att bra ljus ger längre distans, samt att fär-gen på kläderna inte verkar påverka distansen märkbart, men det är svårt att säga utifrån endast ha testat färgerna svart, grön, vit och grå. SSD300 använder filter som detekterar hörn, kanter, konturer och om personens kläder smälter in i omgivningen skulle det kanske kunnat ha påverkat distansen, men det har inte testats i detta exa-mensarbete. Testerna av distansmätningen gjordes endast på en bildstorlek på 534x300 pixlar men SSD300 använder en bildstorlek på 300x300 pixlar. Därmed borde inte detekteringsdistansen ökat om bildstorleken ökade. Men om man använt en annan algoritm med större bildstorlek skulle detekteringsdistansen troligtvis kunnat öka. Följningsalgoritmerna tillförlitligheten hade varit bättre med mer pixlar i en bild, detta på grund av mer data att basera följningen på.

I testerna av (se tabell 3.8) följningshastigheten var det kamerans styrningshastighet som begränsade hastigheten. Även om MOSSE har en högre uppdateringsfrekvens än KCF och klarar av högre styrningshastighet, begränsas den av hastigheten från algoritmen SSD300. Detta på grund av uppdateringsfrekvensen på 0,5–1,5 gånger per sekund som SSD300 har. Skillnader i resultaten av testerna när det gäller följ-ningshastigheten kan bero på att det var svårt att gå i rätt hastighet och mäta tid-punkten innan den tappade följningen. Det kan också bero på mätfel vid beräkning av distansen i pixlar.

Styrningshastigheten av kameran var snabbare för panoreringen än för tiltningen. Det beror på att PID-regulatorn räknar ut vilken distans det är till felet och längre distans ger större styrutslag av regulatorn. Men vid tiltningen upp, vet inte regula-torn hur långt den skall tilta utan den tror att den endast skall tilta 30 pixlar. För att

(47)

33 | ANALYS OCH DISKUSSION

30 pixlar under toppen av bilden är den rätta positionen. Annars var snabbheten ganska lika för panoreringen och tiltningen ned, förutom överstyrningen på tilt-ningen. Den snabbaste panoreringen var tre sekunder och det är alldeles för lång tid. Det skulle behövas en hastighet på 1–1,2 sekunder för att kunna vara likvärdig med en kameraman.

En jämförelse mellan robotkamera och kameraman

Robotkameran som byggdes klarar endast av en panoreringshastighet på en meter per sekund i helbild medan kameramannen klarade av en följningshastighet på minst tre meter per sekund i helbild. Robotkameran klarade av en distans på 11,4 m medan kameramannen klarade av att följa en person i bilden upp 50 m utan pro-blem.

Hastigheten som en kameraman kan filma beror på hur skicklig den är, och distan-sen beror på bildstorleken samt hur bra synen är för kameramannen. Kameraman-nen klarade av att filma i halvbild samt helbild på en person som springer. En kame-raman kan också justera bildutsnittet samt bildkompositionen som den vill, medan denna prototyp har ett fast bildutsnitt.

På grund av fördröjning från beräkning till styrning, var alltid personen positionerad mot kanten av bilden då den gick. Men panorering var likvärdig med en kameraman i testerna i tabell 3.10, men inte tiltningen då den överstyrde. Robotkameran klarade av att centrera personen på 3–3,5 sekunder medan kameramannen klarade det på 1,1–1,2 sekunder. I testet av följningshastigheten var paneringen ryckig då personen var nära kanten av bilden. Det kan bero på felaktig inställning av gimbalens styrning.

(48)

34 | ANALYS OCH DISKUSSION

4.3 Ekonomi, hållbar utveckling och etik

En visuell objektföljningskamera kan vara ekonomiskt gynnsam både för privatper-soner och företag som vill filma, utan att behöva anlita en kameraman. En robotka-mera är en engångskostnad för systemet medan en karobotka-meraman kostar att anlita varje gång den skall filma. Därför är en objektföljningskamera i längden mycket billigare än en kameraman.

En visuell objektföljningskamera kan också tänkas göra kameramän arbetslösa. Men i dagens läge är det inte en stor risk då kamerorna endast kan följa ett objekt, inte göra några avancerade beslut som en kameraman kan göra. Men om utvecklingen av objektföljningskameror skulle göra dem lika bra som en kameraman genom exem-pelvis AI då finns det en risk.

En objektföljningskamera kan användas för att filma ett möte, lektioner i klassrum eller en sportaktivitet. Exempelvis kan en lärare undervisa både elever på plats och elever som är hemma som studerar på distans. Därmed kan fler elever gå en utbild-ning utan att behöva resa eller flytta till annan ort. Personer som är sjuka behöver inte missa viktiga lektioner eller möten. En automatisk robotkamera kan också an-vändas av de som utövar sport för att kunna analysera och förbättra sin prestation. Det går att använda objektdetektering för att identifiera personer men denna kamera gör inte det. Utan den vet endast om att det en person den följer, inte vem det är. Därmed kan folk känna sig trygga i att kamerorna inte används för identifiering. En automatisk robotkamera kan påverka samhället miljömässigt genom att folk inte behöver resa lika ofta då de studerar eller jobbar på distans. Samt behöver inte före-tag göra affärsresor lika ofta då de kan ha möten på distans. Det resulterar i att mindre energi går åt till resor vilketminskar användningen av fossila bränslen. Ett annan användning kan vara vänner, familj som vill umgås men kan inte träffas på grund av de bor för långt ifrån varandra, eller på grund av covid-19 då en del är isolerade och inte träffar så många. Där den automatiska robotkameran gör det möj-ligt att umgås med vänner och familj även fast de inte är i samma byggnad.

References

Related documents

The number of calibration points is chosen partially to allow for an even spread along the horizontal and vertical axis (3x3), and partially to be greater than the number

För Tvåkärlssystemet, Fyrfackskärl och KNI är det tomgångskörningen vid tömning av kärl i Lisas höjd som bidrar minst till miljöpåverkanskategorin försurning

I, detta, kapitel, presenteras, bakgrund, till, studiens, problemställning, och, syfte., Vidare, formuleras,

The paper has described experiments with apply- ing three state-of-the-art part-of-speech taggers to Amharic, using three different tagsets. All tag- gers showed worse performance

The other two curves show how the dialogue act tagging results improve as more annotated training data is added, in the case of active (upper, dashed curve) and passive learning

Med eller utan nikotin marknadsförs den som ett hjälpmedel för att sluta röka, ett hälsosammare alternativ till vanliga cigaretter och ett alternativ i miljöer där vanliga

The aim of the thesis is to design and implement a wireless sensor network for object tracking under real-time constraints using time division multiple access TDMA with

In the images received by the digital camera, these colors are segmented and the binary image for each object is generated inside the FPGA. The robot is moved forward