• No results found

Realtidsklassificering av munskyddsanvändning på Google Coral Dev Board

N/A
N/A
Protected

Academic year: 2022

Share "Realtidsklassificering av munskyddsanvändning på Google Coral Dev Board"

Copied!
50
0
0

Loading.... (view fulltext now)

Full text

(1)

Uppsala Universitet

Inst. för informatik och media

Realtidsklassificering av munskyddsanvändning på

Google Coral Dev Board

Mathilda Carlgren & Svante Pihl

Kurs: Examensarbete

Nivå: C

Termin: VT-21

Datum: 210613

(2)

Sammanfattning

Covid-19 pandemin är den mest omfattande pandemin i modern tid. Länder världen över har infört olika typer av krav och rekommendationer för att hämma smittspridningen, däribland rekommendationer om att bära munskydd. Tidigare studier har utvecklat modeller och system för att avgöra huruvida personer bär munskydd eller ej. Syftet med denna studie är att bevisa att det är tekniskt genomförbart att utveckla och implementera en IT-artefakt på en Google Coral Dev Board som i realtid inte bara kan avgöra om en person bär munskydd eller ej, utan även kan klassificera om ett munskydd bärs korrekt samt ge återkoppling om eventuell felanvändning. Ett sådant system skulle kunna användas för att uppmuntra och påminna om korrekt användning av munskydd. Det utvecklade systemet bygger på en två-stegs-arkitektur bestående av två stycken Convolutional Neural Networks (CNN), en förtränad ansiktsdetekteringsmodell samt en egenutvecklad klassificeringsmodell som bygger på en MobileNetV3-arkitektur. Klassificeringsmodellen tränades med hjälp av ett dataset bestående av 184 572 bilder och kategoriserar ansikten i fyra olika kategorier: munskydd används korrekt, munskydd täcker ej näsa, munskydd placerat på haka och munskydd används ej. Vid 5-delad korsvalidering uppnådde klassificeringsmodellen en genomsnittlig accuracy på

>0.9994. Resultaten för studien var goda och bevisar den tekniska genomförbarheten. Den utvecklade prototypen kunde med hög tillförlitlighet detektera och korrekt klassificera ansikten i en videoström. Dock kommer studien fram till att denna typ av två-stegs-arkitektur är mindre lämplig i situationer då ett större antal ansikten är synliga i bild samtidigt då tiden som krävs för att behandla en bild ökar när antalet ansikten blir fler, vilket innebär att systemet ej kommer upplevas som responsivt.

All data som använts i studien samt producerad kod och modeller finns öppet tillgängliga på GitHub.

https://github.com/svantepihl/Thesis-MaskDetection

Nyckelord: ansiktsdetektering, covid-19, convolutional neural networks, detektering, edge

TPU, Google Coral Dev Board, klassificering, maskininlärning, munskydd

(3)

Förord

Vi vill rikta ett tack till vår handledare Simone Callegari för värdefulla kommentarer och råd under arbetet. Ytterligare vill vi rikta ett stort tack till Cygni, part of Accenture för att vi fick låna deras Google Coral Dev Board för denna studie.

Upprepningsbarhet & Transparens

I syfte för att främja upprepningsbarhet och transparens inom Design Science Research finns all data som använts i denna studie samt all producerad kod och färdigtränade modeller öppet tillgängliga på GitHub via länken nedanför.

https://github.com/svantepihl/Thesis-MaskDetection

(4)

Innehållsförteckning

1 Introduktion 1

1.1 Bakgrund 1

1.2 Problembeskrivning 2

1.3 Syfte & kunskapsbidrag 3

1.4 Avgränsning 3

2 Teori & Tidigare forskning 4

2.1 Maskininlärning & Artificiella Neurala Nätverk 4

2.1.1 Convolutional Neural Networks 5

2.1.2 MobileNets 9

2.1.3 Transfer learning 10

2.1.4 Överanpassning 10

2.2 Utvärdering 11

2.2.1 Holdout-utvärdering 11

2.2.2 K-delad korsvalidering 11

2.2.3 Utvärderingsmått 12

2.3 Google Coral Dev Board 13

2.4 Tidigare forskning 14

3 Forskningsansats & Metod 16

3.1 Forskningsstrategi 16

3.2 Utvecklingsmiljö, verktyg & infrastruktur 17

3.3 Systemarkitektur 17

3.4 Utveckling av munskyddsklassificeringsmodell 18

3.4.1 Datainsamling 18

3.4.2 Förbehandling av dataset 18

3.4.3 Beskrivning av dataset 19

3.4.4 Uppdelning av dataset 22

3.4.5 Data augmentations 22

3.4.6 Val av modellstruktur 22

3.4.7 Träning av modell 24

3.5 Anpassning för Edge TPU 25

3.6 Test av system 26

4 Resultat 27

4.1 Korsvalidering av klassificeringsmodell 27

4.2 Träning av klassificeringsmodell 27

4.3 Anpassning för Edge TPU 30

4.4 Test av system 30

(5)

4.4.2 Bilder per sekund 35

5 Analys & Slutsats 36

5.1 Analys 36

5.2 Slutsats 37

6 Diskussion 39

6.1 Reflektion 39

6.4 Vidare forskning 40

Källförteckning 41

(6)

Figurer

Figur 1. Artificiellt Neuralt Nätverk 5

Figur 2. Tillplattning av en matris 6

Figur 3. Exempel på Convolutional Neural Network 6

Figur 4. Exempel på filter 7

Figur 5. Exempel på pooling operation där average pooling och max pooling beräknas 8

Figur 6. Exempel på global average pooling layer 8

Figur 7. Exempel på convolutions 9

Figur 8. Exempel på dropout 10

Figur 9. K-delad korsvalidering 11

Figur 10. Confusion matrix 12

Figur 11. En Google Coral Dev Board 13

Figur 12. Fördelning av kategorier i datasetet 19

Figur 13. Stickprov från dataset 20

Figur 14. Exempel på bilder med data augmentation 21

Figur 15. Modellstruktur för slutgilitg modell 22

Figur 16. Graf för learning rate per epok 23

Figur 17. Process för att anpassa modell till att köras på en Edge TPU 24

Figur 18. Testbilder för bilder-per-sekund experiment 25

Figur 19A. Accuracy per epok under träning för klassificeringsmodell 27 Figur 19B. Loss per epok under träning för klassificeringsmodell 27 Figur 20A. Accuracy per epok under träning för klassificeringsmodell 28 Figur 20B. Loss per epok under träning för klassificeringsmodell 28 Figur 21. Skärmdumpar från test av kategorin munskydd används korrekt 30 Figur 22. Skärmdumpar från test av kategorin munskydd täcker ej näsa 31 Figur 23. Skärmdumpar från test av kategorin munskydd placerat på haka 31 Figur 24. Skärmdumpar från test av kategorin munskydd används ej 32 Figur 25. Skärmdumpar när hand täcker delar av ansikte och munskydd 32 Figur 26. Resultat från utvärdering med flera personer i bild 33

Tabeller

Tabell 1. Resultat från 5-delad korsvalidering 26

Tabell 2. Filstorlek vid anpassning av modeller för Edge TPU 29

Tabell 3. Resultat från utvärdering av bilder-per-sekund (FPS) 34

(7)

1 Introduktion

I detta avsnitt ges en introduktion till ämnet och problemområdet samt en beskrivning av studiens mål och syfte.

1.1 Bakgrund

I slutet av 2019 identifieras en ny virussjukdom tillhörande coronavirusfamiljen i staden Wuhan i Kina. Sjukdomen orsakas av viruset SARS-CoV-2 och får namnet covid-19 (coronavirus disease 2019). Sjukdomen sprids snabbt över världen och i mars 2020 klassar Världshälsoorganisationen sjukdomen som en pandemi. Covid-19 är en luftvägssjukdom och smittar främst via droppsmitta, vilket innebär att droppar med viruset sprids genom luften vid exempelvis nysning eller hosta. Symtomen varierar men sjukdomen kan påminna om en förkylning eller en influensa. En person som drabbas av covid-19 kan få milda eller mer allvarliga symtom där sjukhusvård kan behövas. Ofta får den som vårdas på sjukhus hjälpmedel för att underlätta andningen men ibland krävs intensivvård och då kan behandling i respirator behövas för att kroppen ska få chans att läka och vila. (Vårdguiden, 2021) Sedan pandemins början har, idag den 27 maj 2021, över 3.5 miljoner dödsfall rapporterats relaterade till sjukdomen (Johns Hopkins University, 2021).

För att hämma smittspridningen av covid-19 har länder infört olika lagar och rekommendationer. Flera länder har bland annat infört lagkrav på munskydd, till exempel utanför hemmet eller vid situationer där det inte går att hålla avstånd (Skagermark m.fl., 2020). För att ett munskydd ska vara ett effektivt skydd mot covid-19 krävs det att det bärs korrekt. För att bära munskyddet på ett korrekt sätt ska skyddet täcka mun och näsa samt sitta tätt kring näsa, kind och haka. (Folkhälsomyndigheten, 2021)

I Sverige rekommenderar Folkhälsomyndigheten (2021) att munskydd används i kollektiv- trafiken vid rusningstrafik. Striktare lokala rekommendationer finns, exempelvis i Region Stockholm (2021) där användningen av munskydd rekommenderas i följande situationer: i kollektivtrafiken oavsett tid, på ställen där trängsel kan uppstå (exempelvis butiker, apotek, arbetsplatser och frisörer) samt när du besöker vården.

Länsstyrelserna i Sverige presenterar veckovisa rapporter om hur Folkhälsomyndighetens rekommendationer, riktlinjer och råd efterlevs i samhället utifrån observationer. Enligt deras rapporter varierar användningen av munskydd i landet men i majoriteten av länen som rapporterat upplevs användandet av munskydd i kollektivtrafiken som lågt. (Länsstyrelsen Stockholm, 2021) Dessa iakttagelser stämmer även överens med flera mediers rapportering om att få använder munskydd vid resor i kollektivtrafiken (Burström, 2021; Sundbeck, 2021).

I och med att användningen av munskydd i kollektivtrafiken är låg har länsstyrelserna uttryckt

ett behov av åtgärder för att få bättre efterlevnad av rekommendationen (Länsstyrelsen

Stockholm, 2021)

.

(8)

1.2 Problembeskrivning

En möjlig lösning för att öka användningen av munskydd i kollektivtrafiken i Sverige är att utveckla ett system baserat på djupinlärning som kan avgöra om personer bär munskydd och om det bärs korrekt. Ett sådant system skulle potentiellt kunna implementeras i anslutning till tunnelbane- och busstationer för att främja och påminna om korrekt användning av munskydd. Sedan starten av pandemin har flera studerat hur ett sådant system skulle kunna fungera (Jiang, Fan och Yan, 2020; Jignesh Chowdary m.fl., 2020; Park m.fl., 2020; Chen m.fl., 2021; Loey m.fl., 2021b; Nagrath m.fl., 2021; Wang m.fl., 2021). Exempelvis utvecklade Park m.fl. (2020) två system för klassificering om ett ansikte bär munskydd eller ej. Systemen kördes på en typ av enkortsdator anpassad för maskininlärning som heter Google Coral Dev Board med Edge TPU (se avsnitt 2.2 Google Coral Dev Board). Implementering på enkortsdatorer är en vanlig metod för att kunna minska integritetsrisker. Anledningen till att enkortsdatorer används är för att de möjliggör att all databehandling kan utföras lokalt utan att någon information behöver sparas eller skickas vidare. För att behandla data lokalt krävs det ofta att modellen är anpassad till att fungera på enheter med begränsad prestanda, vilket ställer krav på att antalet beräkningar som krävs för att göra inferens med modellen är så få som möjligt. När antalet beräkningar som krävs är få brukar modeller kallas för lättviktiga. (Zhao m.fl., 2019)

Wang m.fl. (2021) utvecklade WearMask, vilket är ett system baserat på lättviktiga

djupinlärningsmodeller för detektering av munskydd i realtid. Applikationen utvecklades i

syfte för att påminna och uppmuntra användandet av munskydd. ‘WearMask’ kan avgöra om

en person bär munskydd eller ej, men inte huruvida personen bär munskyddet korrekt. Detta

gäller även övrig forskning inom området som granskats (Jiang, Fan och Yan, 2020; Jignesh

Chowdary m.fl., 2020; Park m.fl., 2020; Chen m.fl., 2021; Loey m.fl., 2021b; Nagrath m.fl.,

2021; Wang m.fl., 2021). System utvecklade i tidigare studier kan alltså inte avgöra om och på

vilket sätt ett munskydd bärs fel. Wang m.fl. (2021) föreslår därför som vidare forskning att

utveckla modeller som kan klassificera om ett munskydd används korrekt och ge återkoppling

gällande eventuell felanvändning (till exempel uppmärksamma om munskyddet inte täcker

näsa eller mun). Denna typ av modell kan således användas för att påminna om att använda

munskydd samt för att uppmuntra korrekt användning och informera om munskydd bärs på

fel sätt.

(9)

1.3 Syfte & kunskapsbidrag

Syftet med denna studie är att utveckla och implementera ett system på en Google Coral Dev Board som i realtid kan avgöra om en person bär munskydd korrekt och informera om eventuell felanvändning. Studien är ett så kallat proof-of-concept (Oates, 2005) och syftar till att bevisa den tekniska genomförbarheten genom att utveckla en prototyp.

Studiens syfte ska anses som uppnått när följande mål för prototypen är uppfyllda:

● Systemet ska i realtid detektera och klassificera flera ansikten i en videoström i följande fyra kategorier: munskydd används korrekt, munskydd täcker ej näsa, munskydd placerad på haka och munskydd används ej.

● Systemet ska behandla fler än 30 bilder-per-sekund för att det ska upplevas som responsivt och videoströmmen som flytande. Antalet bilder-per-sekund som krävs för att en videoström ska upplevas som flytande varierar beroende på användnings- område. Målet är baserat på att det är en vanligt förekommande bildhastighet och tillräckligt för att videoströmmen ska upplevas som flytande i de flesta situationer (Dacast, 2021; IPVM, 2021)

● Systemet ska köras från en Google Coral Dev Board och vara kompatibel med Edge TPU. Eftersom att liknande system ofta implementeras med hjälp av enkortsdatorer och att Google Coral Dev Boards är särskilt anpassade för maskininlärnings- applikationer (se avsnitt 2.3 Google Coral Dev Board).

● Systemet ska inte spara eller skicka vidare någon information för att minska integritetsrisker.

Denna studie ämnar att generera en IT-artefakt i form av en instansiering som ska bidra med preskriptiv kunskap om hur man kan gå tillväga för att lösa problemet att klassificera olika typer av munskyddsanvändning i en videoström. Baserat på Gregor och Hevners (2013) Design Science Research Knowledge Contribution Framework kan kunskapsbidraget från studien betraktas som en exaptation. Detta eftersom att studien kommer att vidareutveckla metoder som tidigare använts för att detektera och klassificera om munskydd används till att även avgöra huruvida munskydd bärs korrekt samt klassificera olika typer av munskyddsanvändning. (Gregor m.fl., 2013)

1.4 Avgränsning

Studien är avgränsad till att endast utveckla en prototyp för det föreslagna systemet och ingen

riktig implementation eller utvärdering i den potentiella miljön kommer att genomföras. Detta

eftersom studiens fokus ligger på att bevisa den tekniska genomförbarheten. Till följd av

pandemin kan endast ett begränsat test av systemet i realtid genomföras eftersom man ej ska

samlas flera personer.

(10)

2 Teori & Tidigare forskning

I detta avsnitt presenteras den teori som ligger till grund för studien och en beskrivning av tidigare forskning inom området.

2.1 Maskininlärning & Artificiella Neurala Nätverk

Maskininlärning är ett område inom datavetenskap som fokuserar på att utveckla mjukvara som lär sig från data för att utföra en uppgift. Maskininlärning kan användas för problem som är ytterst svåra att lösa med traditionella systemutvecklingsmetoder. Ett klassiskt sådant exempel är igenkänning av handskrivna siffror. Vi människor kan med enkelhet känna igen olika siffror men att med traditionell systemutveckling, programmera en dator för att utföra samma uppgift har visat sig ytterst komplext. Maskininlärningsmjukvara kan lära sig utföra den typen av uppgifter givet att det finns ett lämpligt dataset. (Goodfellow m.fl., 2016)

Det vanligaste området inom maskininlärning är övervakad maskininlärning. Vid övervakad inlärning ges algoritmen input och dess förväntade output. Utifrån den givna datan tränas algoritmen för att skapa representationer som kopplar input med rätt output. (Tan m.fl., 2020) Artificiella Neurala Nätverk (ANN) är en typ av maskininlärning som strävar att efterlikna hur det biologiska nervsystemet behandlar information. Ett biologiskt nervsystem består av ett stort antal neuroner som är ihopkopplade i ett så kallat neuronnätverk. Varje enskild neuron kan ses som enkel struktur som tar emot signaler från andra neuroner och beroende på varifrån signalerna kommer och dess styrkor, skickas eventuellt en ny signal vidare. Dessa enkla sammankopplade neuroner skapar komplicerade sammansättningar som anpassar sig och förändras över tid vilket gör det möjligt för människan att lära sig nya saker. (Tan m.fl., 2020)

Motsvarigheten till en neuron i ett ANN är en nod. Noderna är sammankopplade med vikter, vilka bestämmer hur mycket en output från en nod påverkar en annan. Varje nod består av en bias och en aktiveringsfunktion. Nodens output beräknas genom att tillämpa aktiverings- funktionen på värdet som ges av att addera den viktade summan av alla inputs och nodens bias. Aktiveringsfunktionen är en viktig del av ett ANN och det finns flera olika att välja mellan. En vanligt förekommande och enkel aktiveringsfunktion är Rectified Linear Unit (ReLU). Funktionen returnerar noll om inputvärdet är mindre eller lika med noll och för övriga värden returneras inputvärdet. Om nätverket används för klassificering är det vanligt att använda aktiveringsfunktionen Softmax i slutet av nätverket. Softmax används för att omvandla den viktade summan till en sannolikhet mellan 0 och 1 att en input tillhör outputen.

(Goodfellow m.fl., 2016; Shanmuganathan, 2016)

Ett ANN består av lager av noder och behandlar input genom att skicka signaler med vikter

genom nätverket. Det första lagret i nätverket kallas för inputlager och det sista lagret kallas

för outputlager. Mellan input- och outputlagret finns ofta ett antal så kallade dolda lager. I

figur 1 nedanför visas ett enkelt exempel på ett ANN, bestående av ett input laget, ett dolt

lager och slutligen ett outputlager. Nätverket i figur 1 är ett exempel på ett så kallat

feed-forward nätverk där output från en nod ej kan påverka dess egen input och nätverket rör

sig på så sätt endast “framåt”. Nätverk där noders output kan påverkas sin egna input är en

(11)

Figur 1. Ett ANN med ett doltlager mellan input- och outputlager. Noderna i lagerna är sammankopplade med vikter.

En viktig aspekt hos ANN är att dess funktion ej är bestämd av dess struktur. Ett ANN tränas med hjälp av en learning algorithm, en vanligt förekommande sådan är ADAM som står för Adaptive Moment Estimation. Vikterna mellan noderna samt nodernas bias brukar kallas för parametrar. Parametrarna är initialt slumpmässigt satta men dessa uppdateras under träningen.

Vid övervakad träning av ANN ges nätverket träningsdata i form av inputs och dess förväntade output. Sedan uppdateras vikterna och nodernas bias för minimera hur mycket fel nätverket har. Felet beräknas med en förlustfunktion, vilken förlustfunktion som används varierar beroende på typ av uppgift. Träningsprocessen upprepas tills ett önskvärt resultat uppnås. Under varje träningsrunda visas all träningsdata för nätverket, en träningsrunda brukar kallas för en epok. (Kingma och Ba, 2014; Goodfellow m.fl., 2016; Shanmuganathan, 2016)

2.1.1 Convolutional Neural Networks

Ett Convolutional Neural Network (CNN) är en typ av feed-forward nätverk som främst

används för uppgifter kopplade till analys av bilder, exempelvis bildklassificering eller

objektdetektering. CNN är inspirerade av hur den biologiska hjärnans syncentrum bearbetar

information från synnerven. Motiveringen bakom CNN är att traditionella ANN ej lämpar sig

väl för bilder av två anledningar. När bilder ska användas som input för ett traditionellt ANN

behöver bilden plattas ihop till en lång vektor av pixelvärden. När detta görs förloras den

positionella informationen som finns i bilden. I figur 2 nedanför visas ett exempel på en

tillplattning. (LeCun, Kavukcuoglu och Farabet, 2010)

(12)

Figur 2. Tillplattning av en matris

Ytterligare så kräver denna representationen av bilder en stor mängd parametrar. En relativt liten bild med till exempel upplösningen 224 x 224 pixlar med tre kanaler (RGB), skulle leda till neuroner med 224*224*3=150 528 vikter. Vilket innebär modeller med ett stort antal parametrar och ökad risk för överanpassning. (Brownlee, 2016a; Fei-Fei, 2020)

CNN bevarar och lär sig av den positionella informationen i inputdatan och är därför särskilt lämpat för att lära sig av data där ordningen har en stor betydelse som exempelvis bilder men även andra områden såsom brädspel (Goodfellow m.fl., 2016).

Centralt för ett CNN är användandet av ett eller flera convolutional layer. Ytterligare används ofta activation layer med en aktiveringsfunktion exempelvis ReLU, pooling layer och fully connected layer. En vanligt förekommande CNN-arkitektur är att dela upp nätverket i två delar, en del för feature learning och en del för klassificering, se figur 3. Feature learning består ofta av kombinationer av ett eller flera convolutional layer, activation layer och pooling layer. Klassificeringsdelen, även kallad klassficeringshuvud, inleds ofta med en tillplattning av outputen från delen för feature learning följt av ett eller flera fully connected layer alternativt ett global average pooling layer. (LeCun, Kavukcuoglu och Farabet, 2010;

Lin, Chen och Yan, 2013; Goodfellow m.fl., 2016)

Figur 3. Ett CNN som tar en input i form av en bild.

(13)

Ett convolutional layer består av ett bestämt antal filter med en bestämd storlek. Dessa filter förflyttas med en viss stride över inputen och skapar nya feature maps. Värdena för feature maps beräknas genom att ta skalärprodukten mellan filtret och den del av inputen som täcks av filtret. Ett exempel på en sådan operation med ett 3x3x1 filter visas nedanför i figur 4.

Filter i convolutional layers är ej förutbestämda utan lärs under träning. Filterna lär sig detektera olika typer av egenskaper. I de första lagrena i nätverket bör enklare egenskaper som exempelvis raka linjer, hörn eller kontraster mellan svart och vitt identifieras. Djupare i nätverket kombineras egenskaper för att kunna identifiera mer komplexa mönster som exempelvis människoansikten och katter. Desto djupare i nätverket, desto mer komplexa mönster bör identifieras. (LeCun, Kavukcuoglu och Farabet, 2010)

Figur 4. Ett filter som flyttas över en input och skapar en ny feature map.

Ett activation layer brukar oftast följa direkt efter ett convolutional layer. I ett activation layer går varje feature map från ett convolutional layer igenom någon typ av aktiveringsfunktion, vanligast förekommande är ReLU. (LeCun, Kavukcuoglu och Farabet, 2010)

Ett pooling layer används för att minska höjd och bredd dimensionerna på föregående lagers

feature maps. Detta leder både till att antalet parametrar minskar och även att modeller blir

mindre känsliga för vart i bilden en viss egenskap finns. En pooling operation är likt ett filter

som förflyttas över en feature map och genomför någon typ av matematisk operation för att

summera, vanligtvis beräknas genomsnittet eller maximum. I figur 5 visas exempel på 2x2

pooling med en stride på två för både average pooling samt max pooling.

(14)

Figur 5. En pooling operation där average pooling och max pooling beräknas.

I ett fully connected layer är alla noder i lagret sammankopplade med alla noder i föregående och efterföljande lager. Ett fully connected layer kräver att dess input är tillplattad därför brukar ett tillplattningslager användas innan. Ett alternativ till tillplattade fully connected layer är ett så kallat global average pooling layer. Exempelvis om vi har en input med 1024 stycken feature maps får vi som output en endimensionell matris med genomsnittet för varje feature map i inputen, det vill säga 1024 genomsnittsvärden. Ett enklare exempel visas i figur 6 nedan.

Figur 6. Ett global average pooling layer.

(15)

2.1.2 MobileNets

MobileNets är en familj av lättviktiga CNN modeller anpassade för att köras på mobila och små enheter, exempelvis enkortsdatorer. Modellerna kan användas för en mängd olika bildigenkänningsuppgifter, däribland ansikts- och objektssdetektering. MobileNets bygger på en effektiv typ av convolution som kallas för depthwise separable convolutions. Målet med depthwise separable convolutions är att minska antalet beräkningar som krävs. Detta uppnås genom att dela upp en convolution i två operationer, dessa kallas för depthwise convolution och pointwise convolution. I MobileNets modeller applicerar depthwise convolution ett filter per kanal i inputen. Sedan applicerar pointwise convolution ett 1x1 filter för att kombinera den output som kommer från depthwise convolution. I en vanlig convolution görs applikationen av filtren och kombinationen till en ny output i samma steg. (Howard m.fl., 2017) I figur 7 visas en grafisk representation av standard convolution, depthwise convolution och pointwise convolution.

Figur 7. En standard convolution, en depthwise convolution och en pointwise convolution.

För MobileNets ger användningen av depthwise separable convolutions en 8 till 9 faldig minskning i antalet beräkningar som krävs med endast en liten minskning i prestanda.

Författarna bakom MobileNets presenterar även en breddparameter alpha för att ge användaren ett enkelt verktyg för att kontrollera storleken på modellen. Alpha kan anta värden mellan noll och ett, om värdet är mindre än ett minskar antal parametrar i modellen och beräkningarna som krävs med ungefär alpha upphöjt till två. (Howard m.fl., 2017)

Tre iterationer av MobileNets har släppts och alla bygger på samma grundläggande struktur.

Den tredje versionen, MobileNetV3, introducerade konceptet att dela upp MobileNets i två

olika versioner, en mindre, MobileNetV3Small, och en större MobileNetV3Large. Anpassade

för enheter med mindre respektive mer beräkningskraft. (Howard m.fl., 2017, 2019; Sandler

m.fl., 2018)

(16)

I programvarubiblioteket TensorFlow finns flera versioner av MobileNets. MobileNet modellerna i TensorFlow är förtränade på ett dataset från ImageNet som består av över 1.2 miljoner träningsbilder med 1000 olika kategorier (ImageNet, 2012; Tensorflow, 2021a).

2.1.3 Transfer learning

Normalt så är algoritmer utvecklade och tränade för att lösa en specifik uppgift. Transfer learning är en metod för att återanvända en modell tränad för en annan men relaterad uppgift.

Kunskap för en tidigare inlärd uppgift används således och generaliseras för att appliceras på en annan uppgift. (Sarkar, Bali och Ghosh, 2018) Fördelarna med transfer learning är flera men kan summeras som kortare träningstid, bättre prestanda i många situationer och att mindre mängd data krävs för träning. (Torrey och Shavlik, utan årtal)

2.1.4 Överanpassning

En maskininlärningsmodell bör prestera bra på både data som den tränats på och på ny okänd data. Överanpassning innebär att modellen speglar den data som den tränats på och misslyckas med att prediktera data som den inte sett förut. Detta sker när modellen lär sig detaljer under träning i form av brus och uteliggare snarare än generella mönster. Förmågan att prestera bra på okänd data kallas generalisering och avser hur väl modellen kan prediktera ny osedd data. (Brownlee, 2016b)

Det finns flera tekniker för att reducera risken för överanpassning till exempel data augmentation. Data augmentation är en teknik för att öka mängden och variationen i ett dataset. Detta görs genom att göra slumpmässiga förändringar på bilder i ett dataset. De förändringar som görs kan exempelvis vara rotering och spegelvändning samt justering av storlek och färg. (Shorten och Khoshgoftaar, 2019)

En annan teknik för att förebygga överanpassning i ANN är att använda dropout layer. Under träning av en modell ignoreras slumpmässigt noder och deras vikter i ett nätverk, andelen noder som ignoreras kan justeras. Ett exempel på ett dropout layer visas nedanför i figur 8 där två noder i nätverket slumpmässigt ignoreras. Detta gör att nätverket lär sig olika strukturer under varje epok och chansen att noder överanpassar sig efter varandra minskar. Dropout kan appliceras på de flesta lager i ett nätverk men inte på outputlagret. (Srivastava m.fl., 2014)

Figur 8. Det första ANN:et är ett vanligt sammankopplat ANN. I de två ANN:en till vänster används dropout och därför ignoreras slumpmässigt två noder.

(17)

2.2 Utvärdering

2.2.1 Holdout-utvärdering

Vid holdout-utvärdering delas ett dataset slumpmässigt in i ett träningsset och testset. Ett träningsset används för att träna en modell medan ett testset används för att validera en tränad modell. (Sammut och Webb, 2017) En vanlig uppdelning är att använda 80 % av datasetet för träning och 20 % för validering (Xu och Goodacre, 2018).

2.2.2 K-delad korsvalidering

K-delad korsvalidering är en utvärderingsmetod som tillämpas för att nyttja all data i ett dataset för både träning och validering. Metoden kan till exempel användas för att utvärdera modellen och för att upptäcka om modellen är överanpassad. Ett dataset delas slumpmässigt in i k antal lika stora delar, vanligt förekommande värden för k är fem och tio (James m.fl., 2013; Kuhn och Johnson, 2013). Vid en iteration används en del för test och resten för träning av en modell. Processen upprepas sedan tills att alla delset har använts för både träning och test, vilket totalt blir k gånger, se figur 9. Varje delset används en gång för test och (k-1) gånger för träning. För varje iteration utvärderas modellen baserat på ett antal mått och slutligen kan genomsnittliga utvärderingsmått sammanfatta alla k körningar. (Tan m.fl., 2020)

Figur 9. K-delad korsvalidering. Under första iterationen används delset ett till fyra för träning och delset k för test.

(18)

2.2.3 Utvärderingsmått

Det finns flera olika mått som kan användas för att utvärdera en modells prestanda. Ett vanligt tillvägagångssätt vid utvärdering av övervakade klassificeringsmodeller är att använda en så kallad confusion matrix. Figur 11 representerar en confusion matrix med fyra olika klasser.

Utifrån matrisen kan True Positive, False Positive, True Negative och False Negative beräknas, vilket beskrivs i figur 10. (Ting, 2016)

● True Positive (TP) - antal positiva exempel som klassificerats korrekt av modellen.

● False Positive (FP) - antal negativa exempel som klassificerats felaktigt som positiva av modellen.

● True Negative (TN) - antal negativa exempel som klassificerats korrekt av modellen.

● False Negative (FN) - antal positiva exempel som klassificerats felaktigt som negativa av modellen.

Figur 10. Confusion matrix med fyra stycken klasser samt beräkning av TP, FP, TN och FN för varje klass.

Nedan presenteras de mått som används för att utvärdera modellprestanda i studien.

Precision beräknas med hjälp av true positive och false positive enligt formeln nedan. Ett högt precision-värde indikerar att modellen klassificerar de flesta positiva exempel korrekt.

Precision = True Positive / (True Positive + False Positive)

Recall beräknas med hjälp av true positive och false negative enligt formeln nedan. Ett högt

recall-värde indikerar att det finns en stor chans att modellen klassificerar positiva respektive

negativa test korrekt.

(19)

F1-score är ett harmoniskt medelvärde mellan precision och recall enligt formeln nedan. Ett högt F1-score-värde antyder att både precision och recall är relativt höga, vilket är positivt.

F1-score = 2 x precision x recall / precision + recall

Accuracy beräknas baserat på antal korrekta prediktioner och det totala antalet prediktioner.

Accuracy = antal korrekta prediktioner / total antalet prediktioner

Cross entropy loss är en förlustfunktion som används för att beräkna ett mått på hur mycket fel en klassificeringsmodell har. Varje predikterad klass jämförs med den faktiska klassen och ett loss värde mellan 0 till 1 ges beroende på hur långt ifrån klassificeringen var den faktiska klassen. Cross entropy loss används sedan för att justera modellens vikter under träning.

Målet är att få ett så lågt loss värde som möjligt. (Brownlee, 2019) 2.3 Google Coral Dev Board

En Google Coral Dev Board är en enkortsdator, stor som ett kreditkort (se figur 11), anpassad för att utföra snabb maskininlärning. Det är ett fullt integrerat system och den unika prestandan kommer från Google’s Edge TPU co-processor. Edge TPU:n är en liten integrerad krets anpassad specifikt för att behandla tensors och gör det möjligt att utföra högpresterande maskininlärningsberäkningar. Edge TPU är endast kompatibel med Tensorflow Lite modeller som är specifikt kompilerade för att köras på en Edge TPU. Det är även värt att notera att Edge TPU endast har stöd för ett antal av de operationer som finns tillgängliga i TensorFlow Lite (Coral, 2021c). Dessutom behöver modellerna vara kvantifierade (eng: quantized) till 8-bitars heltal, vilket innebär att decimaltal (till exempel modellens vikter) approximeras med heltal. (Coral, 2020b)

Figur 11. En Google Coral Dev Board (Källa: Coral, 2020a)

(20)

2.4 Tidigare forskning

Sedan starten av covid-19 pandemin har flera studerat hur djupinlärning kan användas för att avgöra om en person bär munskydd eller ej. Vid granskning av forskning inom området har endast studier som på olika sätt detekterar och klassificerar om en person bär munskydd eller ej hittats.

Nagrath m.fl. (2021) presenterade i deras studie en modell som använder djupinlärning, TensorFlow och en MobileNetV2-arkitektur för att klassificera om en person bär munskydd eller inte. För att detektera och klassificera ansikten används en Single Shot Detector modell som är baserad på MobileNetV2. Datasetet som användes i studien bestod av drygt 55 000 bilder. Vid utvärdering uppnådde deras modell ett accuracy på ungefär 0.93 och ett F1-score på 0.93.

Som tidigare nämnt utvecklade Wang m.fl. (2021) applikationen WearMask, en munskyddsdekteringslösning som kan användas i en webbläsare och som kan avgöra om en person bär ett munskydd eller inte. Deras webbaserade lösningen kan användas på vanliga enheter, såsom på en dator, mobil eller surfplatta. I WearMask används modellstrukturen YOLO (You-Only-Look-Once) för ansiktsdetektering och klassificering. Systemet använde ramverket NCNN för att optimera modellen. Slutligen komplicerades modellen till WebAssembly för att kunna köra modellen i en webbläsare. Datasetet som användes för att utveckla modellen bestod av ungefär 9000 bilder med nästan 18 000 ansikten. När applikationen utvärderades på olika enheter behandlade den som flest 20.4 bilder-per -sekund (MacBook Pro 15 från 2019) och som minst ta 4.12 bilder-per-sekund (iPad Pro från 2016) med en genomsnittlig precision på 89 %.

Qin och Li (2020) utvecklade en modell som kan avgöra om en person bär ett munskydd eller inte. Däremot skiljer sig deras studie från övriga studier i att deras modell klassificerar munskydd som ej täcker näsa och mun som inget munskydd. Vid utveckling av modell användes CNN för att detektera ansikte och sedan användes en metod för bildklassificering som använde convolutional layer för att identifiera klass. Datasetet som användes i studien bestod av nästan 4000 bilder. Vid utvärdering uppnådde modellen en accuracy på 0.987.

Jiang, Fan och Yan (2020) utvecklade en ny effektiv och precis en-stegs-modell för

munskyddsdetektering som de kallar RetinaFaceMask. Modellen kan avgöra om en person

bär ett munskydd eller inte. Författarna undersökte dels en lättviktsimplementering av

RetinaFaceMask baserad på MobileNet anpassad för att köras på mobila och embedded

devices samt dels en implementering med Residuala Neurala Nätverk (ResNet). Vid

utvärdering jämförde man implementationen som använde MobileNet med en annan modell

som använde ResNet. ResNet gav då bäst resultat av de två modellerna.

(21)

Park m.fl (2020) jämförde två metoder för att detektera om en person bär munskydd eller inte

implementerade på en Google Coral Dev Board. Första metoden var en två-stegs-metod som

använde en MobileNetV2 Single Shot Detector modell för att detektera ansikten samt en

annan MobileNetV2 modell för att klassificera de detekterade ansiktena. Den andra metod

använde en MobileNetV2 Single Shot Detector modell för både detektering och

klassificering. Datasetet som användes innehöll 2127 bilder. Vid jämförelse av de två

metoderna, uppnådde den första en accuracy på cirka 0.58 och en latens på 6.4 ms medan den

andra modellen uppnådde 0.55 i accuracy och en latens på 26 ms.

(22)

3 Forskningsansats & Metod

I detta avsnitt beskrivs studiens forskningsmetod och tillvägagångssätt för att utveckla den tänkta IT-artefakten.

3.1 Forskningsstrategi

Den huvudsakliga kunskapsprodukt som denna studie kommer att resultera i är en ny IT-artefakt och därför lämpar sig forskningsstrategin design science. Denna forsknings- strategi används vid utveckling och utvärdering av IT-artefakter som är avsedda att lösa identifierade problem. (Hevner m.fl., 2004) IT-artefakter kan kategoriseras som konstrukt, modeller, metoder eller instansieringar. Den IT-artefakt som utvecklas i denna studie kan beskrivas som en instansiering. En instansiering visar att konstrukt, modeller och metoder kan implementeras i ett fungerande IT-system. I enlighet med design science har Peffers m.fl.

(2007) metod Design Science Research Methodology (DSRM) valts som arbetsprocess.

Metoden används för utveckling och vid presentation av design science studier inom informatik. DSRM består av sex stycken aktiviteter som tillsammans bildar en iterativ process. Aktiviteterna och dess relation till studien beskrivs i större detalj nedan:

Problem identification and motivation - Det specifika problemet identifieras och varför det är nödvändigt att finna en lösning på problemet motiveras. De resurser som krävs för denna aktivitet inkluderar kunskap om problemet och vikten av en lösning. Det identifierade problemet beskrivs i avsnitt 1.2 Problembeskrivning.

Define the objectives for a solution - Ett eller flera mål definieras för en lösning av det identifierade problemet. Målen kan vara av kvantitativ eller kvalitativ karaktär och bör formuleras rationellt utifrån problemformuleringen. Målen för IT-artefakten definieras i avsnitt 1.3 Syfte & kunskapsbidrag.

Design and development - En artefakt utvecklas. Utvecklingen inkluderar att bestämma artefaktens funktionalitet, dess arkitektur och själva skapandet av den faktiska artefakten.

Verktyg som använts under utvecklingen beskrivs i avsnitt 3.2 Utvecklingsmiljö, verktyg &

infrastruktur, artefaktens arkitektur beskrivs i avsnitt 3.3 Systemarkitektur, utvecklingen av CNN-modellen för munskyddsklassificering beskrivs i avsnitt 3.4 Utveckling av munskydds- klassificeringsmodell och slutligen beskrivs tillvägagångssättet för anpassningen av modellerna för Edge TPU i avsnitt 3.5 Anpassning för Edge TPU.

Demonstrate - Resultatet från Design and development samt en demonstration av användningen av artefakten presenteras i avsnitt 4 Resultat. Metodiken för demonstrationen av IT-artefakten beskriv i avsnitt 3.6 Test av system.

Evaluation - Artefakten utvärderas och det fastställs hur väl artefakten stödjer en lösning på

det definierade problemet. Målen som formulerats i aktivitet två jämförts med det faktiska

resultatet som presenterats. Utvärdering av IT-artefakten presenteras i avsnitt 4 Resultat och

analyseras sedan i avsnitt 5 Analys & Slutsats.

(23)

Communicate - Studien förmedlas i sin helhet, det vill säga artefakten samt problemet och dess betydelse. Kommunikationen av studien kommer att ske genom att publicera uppsatsen på DiVA, Uppsala Universitets digitala arkiv för vetenskapliga publikationer samt att all data och källkod öppet publiceras på Github.com.

3.2 Utvecklingsmiljö, verktyg & infrastruktur

I denna studie användes programmeringsspråket Python (Version 3.8.2) genomgående och beroende på del av projektet användes olika utvecklingsmiljöer. Utvecklingen av munskydds- klassficeringsmodellen samt förbehandlingen av bilderna gjordes i den molnbaserade utvecklingsmiljön Google Colab Pro. För all övrig utveckling användes utvecklingsmiljön Visual Studio Code (Version 1.55.2).

Programvarubiblioteket OpenCV användes för ansluta till kameran, läsa av bildströmmen, köra djupinlärningsmodellerna och presentera resultatet. För utveckling av modeller samt anpassning för körning på enkortsdator användes ramverket TensorFlow och TensorFlow Lite.

Alla bilder och data kopplade till träningen av munskyddsklassficeringsmodellen lagrades i Google Cloud Storage (Google Cloud Platform, 2021a). Under träningen av djupinlärnings- modellen nyttjades ett beräkningskluster från Google Cloud Platform bestående av 8 stycken TPU-enheter, för att minimera träningstiden (Google Cloud Platform, 2021b).

3.3 Systemarkitektur

Arkitekturen för IT-artefakten är baserad på en två-stegs-struktur som använder två stycken CNN modeller för att först detektera ansikten och sedan klassificera dem. Denna typ av arkitektur har bland annat använts av Qin och Li (2020) och deras modell uppnådde en accuracy på 0.987, se avsnitt 2.5 Tidigare forskning.

Figur 12. Systemarkitektur för IT-artefakten.

I figur 12 ovan visas en grafisk representation av systemarkitekturen. Systemet tar input från

en extern kamera där varje bild i videoströmmen från kameran går igenom två steg. Först

används en ansiktsdetekteringsmodell för att lokalisera alla ansikten i bilden. Varje ansikte

som lokaliserats skickas vidare till en munskyddsklassificeringsmodell som avgör till vilken

av kategorierna ett ansikte tillhör. Kategorierna är: munskydd används korrekt, munskydd

täcker ej näsa, munskydd placerad på haka och munskydd används ej. Detta presenteras

slutligen på en bildskärm där varje detekterat ansikte markeras med en ram och en etikett för

kategorin. Systemet behandlar bilderna från videoströmmen utan att spara eller skicka vidare

(24)

Ansiktsdetekteringssmodellen är en förtränad modell som laddades ner från Google Corals modellbibliotek (Coral, 2021a). Modellen är baserad på MobileNetV2 och Single Shot Multibox Detector (SSD). Dessutom är den även kvantiserad och anpassad för att köras på Coral Edge TPU. Munskyddsklassificeringsmodellen är en egenutvecklad CNN-modell tränad på ett dataset bestående av cirka 185 000 bilder på ansikten tillhörande en av de fyra kategorierna. Modellen använder transfer learning och är baserad på en MobileNetV3Small modell från ramverket TensorFlow (TensorFlow, 2021). Den slutliga modellen är kvantiserad och anpassad för att köras på Coral Edge TPU.

3.4 Utveckling av munskyddsklassificeringsmodell

I kommande stycken beskrivs tillvägagångssättet för utvecklingen av munskydds- klassificeringsmodellen.

3.4.1 Datainsamling

Den data som använts i studien hämtades från ett offentligt publicerat dataset bestående av drygt 185 000 bilder från kategorierna: munskydd används korrekt, munskydd täcker ej näsa, munskydd placerad på haka och munskydd används ej. Datasetet består av data från tre olika källor; MaskedFace-Net (Cabani m.fl., 2021), CanalSandeco (Sandeco, 2020) och Real-World-Masked-Face-Dataset (RWMFD) (Wang m.fl., 2020). Bilderna i datasetet MaskedFace-Net kommer från början från datasetet Flickr-Faces-HQ (Karras, Laine och Aila, 2020) och munskydd har sedan artificiellt genererats med hjälp av djupinlärning på ansikten i bilderna (Cabani m.fl., 2021). RWMFD innehåller en stor variation av bilder bland annat bilder på folkmassor där ett stort antal människor syns samtidigt (Wang m.fl., 2020). Fortes (2021) inkluderade endast de bilder från RWMFD där en person tydligt syns i bild, vilket lämpar sig väl för denna studie. Orginalkällan för bilderna från CanalSandeco kan ej verifieras men datasetet finns publikt tillgängligt (Sandeco, 2020).

3.4.2 Förbehandling av dataset

I syfte för att öka kvalitén på datasetet användes verktyget Photos Duplicate Cleaner för att hitta eventuella dubbletter ( Photos Duplicate Cleaner, 2021). Totalt hittades 112 dubbletter som togs bort för att minska risken för överanpassning. Det insamlade datasetet innehåller ett brett utbud av bilder i olika filformat och olika upplösningar. Alla bilder i datasetet konverterades till filformatet JPEG med motiveringen att det skulle göra hanteringen av bilderna enklare och mer enhetlig. Därefter justerades storleken på bilderna till upplösningen 224 x 224 pixlar eftersom att de förtränade MobilNetV3-modellerna i TensorFlow endast är kompatibla med bilder med den upplösningen. (Howard m.fl., 2019; MobileNet, 2021).

Slutligen konverterades bilderna till det binära dataformatet TFrecords vilket är det

rekommenderade dataformatet för ramverket TensorFlow. Vi beslutade oss för att skapa 32

stycken TFrecord-filer där varje fil hade en ungefärlig storlek på 112 MB och innehöll cirka

5750 bilder. Motiveringen till antalet TFrecord-filer är att TensorFlow dokumentationen

rekommenderar filstorlekar på ungefär 100 MB för optimal prestanda (TensorFlow, 2021). I

samband med att TFrecord-filerna skapades, blandades bilderna för att i träningsfasen minska

sannolikheten för överanpassning.

(25)

3.4.3 Beskrivning av dataset

Efter förbehandling av datasetet innehöll de 32 TFrecord-filerna totalt 184 572 bilder. Varje bild tillhör en av fyra kategorier. De fyra olika kategorierna är: munskydd används korrekt, munskydd täcker ej näsa, munskydd placerat på haka och munskydd används ej. Fördelningen för de fyra kategorierna visas i figur 12. Ungefär 55 % av datasetet består av bilder på personer utan munskydd och resterande del på personer som på något sätt bär munskydd.

Figur 12. Fördelning av kategorier i datasetet.

Datasetet är obalanserat med särskilt få observationer för kategorin munskydd placerat på

haka i förhållande till de övrig kategorierna. I figur 13 visas ett urval av bilder från vårt

dataset. Vid stickprov urskiljdes att majoriteten av alla munskydd i bilderna är artificiellt

genererade. I kategorin munskydd på haka och munskydd täcker ej näsa är i princip alla

munskydd genererade. Vid stickprovet observerades även att datasetet innehåller en stor

variation av bilder på människor av olika etnicitet, bärande olika typer av kläder, tagna i olika

miljöer och situationer samt från olika vinklar. Detta är positivt eftersom ett varierat dataset

ökar sannolikheten att systemet klarar av att generalisera väl till nya bilder.

(26)

Figur 13. Stickprov från dataset.

(27)

3.4.4 Uppdelning av dataset

För att kunna utvärdera framtagna modellers prestanda på ett tillförlitligt sätt sparades en del av datasetet separat i ett testdataset för att användas för utvärdering av modellerna, ett så kallat hold-out-sample. Testbilderna tillåter oss att utvärdera modellerna på bilder som ej har använts för att träna modellerna. Detta ger oss en bättre uppskattning av modellernas faktiska prestanda. För test sparades 20 % av TFrecord-filerna och 80 % användes för träning.

Eftersom att varje TFrecord-fil innehåller ungefär 5750 bilder innebär det att vårt träningsdataset och testdataset består av 143 195 respektive 40 376 bilder. Uppdelningen av datasetet gjordes slumpmässigt med hjälp av funktionen train-test-split från Python-paketet Scikit-Learn (Scikil-learn.org, 2021).

3.4.5 Data augmentations

För att minska risken för överanpassning och öka variationen i datasetet användes data augmentation på träningsdatan. För varje bild har tio realistiska förändringar skett slumpmässigt. I figur 14 visas åtta stycken bilder där dessa förändringar har skett.

Figur 14. Exempel på bilder med applicerade förbättringar.

Förändringarna som gjordes kan motiveras med en av två olika anledningar: öka variationen av hur ansikten är orienterade och positionerade eller öka variationen av olika bildkvaliteter som exempelvis, mättnad eller ljusstyrka. Följande förändring gjorde kopplat till orientering och positionering: rotering, sheared, in- eller utzoomning, spegelvändning och förflyttning.

Följande ändringar gjordes kopplat till bildkvalitetet: mättnads-, kontrast-, nyans- och ljusförändring.

3.4.6 Val av modellstruktur

Klassificeringsmodellens använder sig av transfer learning och är baserad på en förtränad

MobileNetV3Small-modell från TensorFlow samt ett minimalt klassificeringshuvud. Denna

typ av modellstruktur har bland annat använts av Qin och Li (2020) samt Park m.fl. (2020). I

båda studierna användes olika versioner av MobileNets kombinerade med små

klassificeringshuvuden för att klassificera om ett ansikte bär munskydd. Olika värden på

(28)

djupparametern (alpha) för MobileNet samt olika varianter av klassificeringshuvuden testades. Målet var att minska tiden som krävs för att klassificera en bild. Det uppnåddes genom att minska antalet parametrar i modellen för att således även minska antalet beräkningar som krävs vid inferens.

Olika modellstrukturer utvärderades genom att träna modeller på träningsdata för att sedan utvärdera prestandan baserat på testdata. För att ge oss en robust uppskattning på hur väl en given modellstruktur lämpar sig för uppgiften användes 5-delad korsvalidering där modellerna tränades under 50 epoker. Fem delar valdes då det är ett vanligt val när k-delad korsvalidering används (se avsnitt 2.2.2 K-delad korsvalidering). Modellerna från korsvalideringen utvärderades baserat på utvärderingsmåtten precision, recall, accuracy och F1-score samt genom att jämföra antalet parametrar. Resultaten för korsvalideringen beskrivs i avsnitt 4.1 Korsvalidering av klassificeringsmodell.

Den slutgiltiga modellstrukturen valdes baserat på resultaten från korsvalideringen och visas i figur 15.

Figur 15. Modellstruktur för slutgilitg modell.

Modellstrukturen bygger som nämnt, på en förtränade MobileNetV3Small-modell med alpha=1 och utan sista klassificeringslagret. Efter den förtränade modellen följdes ett klassificeringshuvud bestående av följande lager:

1. Ett global average pooling layer

2. Ett fully connected layer med 128 noder och ReLU som aktiveringsfunktion 3. Ett dropout layer där 20 % av noderna ignorerades

4. Ett fully connected layer med en nod per klass och softmax som aktiverings- funktion.

(29)

3.4.7 Träning av modell

Efter att en modellstruktur valts tränades en slutgiltig modell på hela datasetet, inklusive de bilder som initialt sparades för att nyttja som testdataset. Motiveringen till att använda hela datasetet är att vi genom 5-delad korsvalidering har ett robust mått på modellstrukturens förmåga att läras sig att korrekt klassificera olika typer av munskyddsanvändning. Dessutom bör modellens prestanda öka och sannolikheten för överanpassning minska när mer data används för träning.

Under den slutgiltiga träningen användes 20 % av det totala datasetet för validering och träningen pågick under 400 epoker med cross entropy loss som förlustfunktion. ADAM (se avsnitt 2.1 Maskininlärning & Artificiella Neurala Nätverk) användes som learning algorithm och learning rate sattes med hjälp av ett schema. En graf med schemat för learning rate visas i figur 16. Modellens learning rate var initialt låg och ökade linjärt till epok 200 därefter planade den ut och sedan minskade den exponentiellt.

Figur 16. Graf för learning rate per epok.

Modellen tränades med en batch size på 128 bilder per beräkningsenhet (TPU). Eftersom åtta

beräkningsenheter användes under träning innebar det att modellen såg 1024 bilder innan den

uppdaterade parametrarna i modellen. De slutgiltiga parametrarna som sparades för modellen

var från den epok när validation loss var som lägst. Det uppnåddes med hjälp av en callback

function som kontinuerligt sparade vikterna med lägst förlust. Resultatet från träningen

presenteras i avsnitt 4.2 Träning av klassificeringsmodell .

(30)

3.5 Anpassning för Edge TPU

Google Edge TPUs, likt den som finnes på Google Coral Dev Boards, är endast kompatibla med 8-bitars heltals kvantifierad TensorFlow Lite-modeller som är kompilerade för köras på Edge TPUs. För att konvertera en TensorFlow-modell till en modell som är kompatibel Edge TPUs användes en metod som nyttjar sig av post training quantization. Metoden består av två delar ett konverteringssteg och ett kompileringssteg, ett diagram över processen kan ses i figur 17. Modellen konverteras och kvantifieras till en 8-bitars TensorFlow Lite modell med ett verktyg from TensorFlow-biblioteket som heter TFLiteConverter (Tensorflow, 2021b). För att säkerställa att approximeringen av 32-bitars floats med 8-bitars heltal inte lett till minskad prestanda jämfördes TensorFlow-modellen med den kvantifierade TensorFlow Lite-modellen.

Jämförelsen gjordes baserat på stickprov med 5000 bilder från vårt dataset. Modellernas prestanda beräknades med hjälp av prestandamåttet accuracy.

Den kvantifierade TensorFlow Lite modellen kompilerades sedan till en TensorFlow Lite-fil som är anpassad för att köras på Edge TPUs. Kompileringen gjordes med ett verktyg från Google Coral Ai som heter Edge TPU Compiler (Coral, 2021b). För varje steg i processen minskade filstorleken på modellen vilket bland annat innebär att modellen kräver en mindre mängd tillgängligt arbetsminne för köras.

Figur 17. Process för att anpassa modell till att köras på en Edge TPU.

(31)

3.6 Test av system

För att utvärdera systemet mot de mål som formulerats i avsnitt 1.3 Syfte & kunskapsbidrag valdes att testa hur väl systemet detekterar och klassificerar ansikten i en bildström och hur lång tid det tar för systemet att behandla en bild. Under all utvärdering kördes systemet på en Google Coral Dev Board. Först utvärderades systemet genom att skärmdumpar togs när systemet användes. Scenariot när endast en person befann sig i bild med ansiktet positionerat i en av fyra olika vinklar undersöktes: framifrån, i profil, uppifrån och nerifrån. Därefter testades om systemet kunde detektera och klassificera ansikten när två personer befann sig i bild samtidigt. Det hade varit önskvärt att även utvärdera systemet med fler än två personer i bild men detta var ej möjligt på grund av pågående pandemi, se avsnitt 1.4 Avgränsning.

Under utvärderingen testades två olika typer av munskydd, ett blått och ett svart.

I syfte för att verifiera om systemet klarar av att uppnå de mål som satts för bilder- per-sekund genomfördes ett experiment där systemet fick detektera och klassificera ansikten i en bild 2000 gånger. Den genomsnittliga tiden som togs för att behandla bilden mättes och antal bilder-per-sekund beräknades. Tiden det tog för detektering respektive klassificering mättes för att kunna få en djupare förståelse för hur systemet presterar. Experimentet upprepades med fyra olika bilder: en med ett synligt ansikte, en med två synliga ansikten, en med tre synliga ansikten och slutligen en med nio synliga ansikten. Testbilderna som användes kan ses nedanför i figur 18.

Figur 18. Testbilder för bilder-per-sekund experiment.

(32)

4 Resultat

I detta avsnitt presenteras resultaten från korsvalidering och träning av klassificerings- modellen, anpassning för Edge TPU samt test av systemet.

4.1 Korsvalidering av klassificeringsmodell

Den slutgiltiga modellstrukturen för klassificering visade en god genomsnittliga prestanda när den tränades och sedan testades med 5-delad korsvalidering. För samtliga fyra kategorier uppnåddes precision, recall och F1-scores på >0.996. De fem modellerna som tränades uppnådde en hög genomsnittlig accuracy på >0.999 samt en låg genomsnittlig loss på <0.001.

De genomsnittliga resultaten för de fem modellerna kan ses i tabell 1.

Tabell 1. Resultat från 5-delad korsvalidering. I tabellen visas genomsnittlig precision, recall och F1-score för varje kategori samt genomsnittlig accuracy och loss.

Testdatasetet som användes innehöll 40 376 bilder för att utvärdera klassificeringsmodellen varav kategorin munskydd används korrekt innehöll 7974 bilder, kategorin munskydd täcker inte näsa innehöll 1058 bilder, kategorin munskydd placerat på haka innehöll 9494 bilder och kategorin munskydd används ej innehöll 21850 bilder. Fördelningen mellan de olika kategorierna i testdatasetet motsvarar fördelningen mellan kategorierna för hela datasetet (se avsnitt 3.4.3 Beskrivning av dataset).

4.2 Träning av klassificeringsmodell

I avsnitt 3.4.7 Träning av modell beskrivs tillvägagångssättet för att träna klassificerings-

modellen och i detta stycke presenteras resultaten från träningsprocessen. Träningsprocessen

varade i 400 epoker, för varje epok ökade klassificeringsmodellens accuracy medan loss

minskade, se figur 19A respektive 19B. Det finns inga indikationer på att modellen är

överanpassad eftersom att tränings- och valideringskurvorna verkar följa varandra väl under

alla epoker. I figur 20A/B visas samma data som i figur 19A/B med skillnaden att y-axeln är

inzoomad. Runt epok 50 är validation loss som lägst, se figur 20B. Efter epok 50 fortsätter

träningskurvornas accuracy och loss öka respektive sjunka medans valideringskurvorna är

stationära.

(33)

Figur 19A. Accuracy per epok under träning för klassificeringsmodell.

Figur 19B. Loss per epok under träning för klassificeringsmodell.

(34)

Figur 20A. Accuracy per epok under träning för klassificeringsmodell med inzoomad y-axel.

Figur 20B. Loss per epok under träning för klassificeringsmodell med inzoomad y-axel.

(35)

Som nämnt i avsnitt 3.4.7 Träning av modell använder den slutgiltiga modellen vikterna från epoken där validation loss är som lägst, under träningen var det i vårt fall epok 52. För epok 52 var validation loss och validation accuracy 0.0028 respektive 0.9991. Training loss och training accuracy var 0.0023 respektive 0.9992 .

4.3 Anpassning för Edge TPU

Under anpassningsprocessen, som beskrivs i avsnitt 3.5 Anpassning för Edge TPU, minskade filstorleken för modellerna. Initialt hade de tränade TensorFlow-modellerna filstorlekar på 67.3 respektive 14.4 MB som slutligen minskade till 6.6 respektive 1.8 MB (se tabell 2). När TensorFlow Lite-modellen kvantifierades till 8-bitars heltal minskade filstorleken ytterligare.

Modellerna kompilerades sedan för Edge TPU och då ökade filstorleken en aning. Under kompileringen undersöks vilka operationer i modellen som kan genomföras på Edge TPU.

För båda modellerna stöds alla operationer av Edge TPU. Eftersom att alla operationer stöds och kompileringen var lyckad så kan vi vara säkra på att både detekteringsmodellen och klassificeringsmodellen är kompatibla med Google Dev Board och Edge TPU.

Tabell 2. Filstorlek för varje steg i anpassningsprocessen av detekeringsmodell och klassificeringsmodell.

Som tidigare nämnt i avsnitt 3.5 Anpassning för Edge TPU jämfördes prestandan mellan TensorFlow-modellen och den kvantifierade TensorFlow Lite-modellen för att säkerställa att kvantifieringen ej lett till en märkbar prestandaförsämring. En jämförelse av detekterings- modellen kunde ej genomföras eftersom annoterade bilder krävs för att utvärdera modellen.

För klassificeringsmodellen utvärderades Tensorflow och den kvantifierade TensorFlow Lite-modellen på 5000 bilder där en accuracy på 0.999 respektive 0.992 uppmättes. En viss minskning i accuracy uppmättes men den är ej stor och den är förväntad eftersom att precision förloras när modellen kvantifieras från 32-bitars decimaler till 8-bitars heltal.

4.4 Test av system

Utvärderingen av systemet är som nämnt i avsnitt 3.6 Test av system baserat på de mål som

formulerats för studien. I efterföljande stycken kommer resultat från de olika delar av

testprocessen att presenteras och beskrivas.

(36)

4.4.1 Klassificering av bilder från videoström i realtid

I detta stycke presenteras och analyseras resultatet från utvärderingen av systemets förmåga att korrekt detektera och klassificera ansikten i en videoström. Resultaten för varje kategori presenteras separat. Som tidigare nämnt i avsnitt 3.3 Systemarkitektur presenterar systemet för varje detekterat ansikte en ram och en etikett där ramen och etikettens färg indikerar till vilken kategori ansiktet är klassificerat. Kategorierna och dess respektive färger är följande:

munskydd används korrekt - grön, munskydd täcker ej näsa - turkos, munskydd placerat på haka - orange och munskydd används ej - röd. För varje klassificerat ansikte presenteras även ett mått i procent på den uppskattade sannolikheten att ansiktet tillhör den klassificerade kategorin. Denna sannolikhet kan man tänka på som ett säkerhetshetmått där en hög siffra indikerar att systemet är säker i sin klassificering och en låg siffra indikerar att systemet är osäker i sin klassificering.

Figur 21. Skärmdumpar från test av kategorin munskydd används korrekt.

För kategorin munskydd används korrekt klarade systemet i realtid av att korrekt detektera

och klassificera ansikten i en videoström för alla testade vinklar, se figur 21. Systemet var

säker i sin klassificering och bedömde med >85 % sannolikhet att de detekterade ansiktena

tillhörde den klassificerade kategorin.

(37)

Figur 22. Skärmdumpar från test av kategorin munskydd täcker ej näsa

För kategorin munskydd täcker ej näsa klarade systemet i realtid av att detektera och i de flesta fall klassificera ansikten korrekt i en videoström, se figur 22. Systemet upplevdes mer osäker i sin klassificering och har ofta fel när ansiktet är riktat uppåt alternativt när bilden är tagen nerifrån, vilket visas i de två högra bilderna i figur 22. Säkerhetsmåttet varierade och hade ett värde mellan 60-99 %.

Figur 23. Skärmdumpar från test av kategorin munskydd placerat på haka

För kategorin munskydd placerat på haka klarade systemet av att detektera och i de flesta fall klassificera ansiktet i videoströmmen korrekt, se figur 23. Systemet upplevdes inte som robust för denna kategori och klassificerade ofta fel när bilden ej var tagen rakt framifrån som exempelvis i de tre bilder klassificerade som kategori munskydd täcker ej näsa i figur 23.

Säkerhetsmåttet varierade och hade ett värde mellan 60-99 %.

(38)

Figur 24. Skärmdumpar från test av kategorin munskydd används ej

För kategorin munskydd används ej klarade systemet i realtid av att korrekt detektera och klassificera ansiktet i videoströmmen, se figur 24. Systemet var säker i sin klassificering med ett säkerhetsmått på >76 % för alla testade vinklar.

Figur 25. Skärmdumpar från utvärdering när hand täcker delar av ansikte och munskydd för varje kategori.

För situationer när ansiktet delvis täcks av en hand lyckades systemet detektera och i det flesta

fall klassificera ansiktet i videoströmmen korrekt, se figur 25. Systemet klassificerade dessa

mer utmanande bilder med varierande säkerhet, men uppnådde ett säkerhetsmått på över >92

(39)

Systemet hade svårare att klassificera ansikten där munskyddet täcks väl, ett exempel på en sådan situation visas i figur 25 för kategorin munskydd placerat på haka. Den fel- klassificerade bilden från figur 25 är särskilt svårklassificerad eftersom att handen täcker hela munskyddet och även människor kan ha svårt att klassificera bilden korrekt.

Figur 26. Resultat från utvärdering med flera personer i bild.

Systemet klarade i realtid av att detektera och klassificera två ansikten korrekt i en

videoström, se figur 26. Systemet upplevdes som responsivt och flytande. I systemet

klassificeras varje ansikte för sig så därför bör systemet ge likvärdig klassificeringsprestanda

som när endast ett ansikte befinner sig i bild givet att ansiktet detekterats korrekt. Som

tidigare nämnt i avsnitt 3.4.9 Utvärdering av systemet har systemet inte utvärderats med fler

än två ansikten åt gången

(40)

4.4.2 Bilder per sekund

Vid utvärderingen i realtid upplevdes systemet som responsivt och videoströmmen som flytande. Detta stöds av resultatet från utvärderingen av huruvida systemet uppnår de satta prestandamålen i avseende till bilder-per-sekund (FPS). Resultatet från FPS-utvärderingen kan ses i tabell 3. För varje scenario mättes bilder-per-sekund (FPS) i genomsnitt, tiden det tog att detektera och klassificera alla ansikten i genomsnitt (avg. tid tot.), tiden det tog att att detektera alla ansikten i genomsnitt (avg. tid detek.) och slutligen tiden det tog att att klassificera alla ansikten i genomsnitt (avg. tid klass.).

Tabell 3. Resultat från utvärdering av bilder-per-sekund (FPS) och den totala tiden som det tar att detektera och klassificera ansikten för systemet.

När ett ansikte befann sig i bild lyckades systemet behandla 58.42 bilder-per-sekund, men antalet bilder-per-sekund minskade när antalet ansikten i bild ökade. Till exempel behandlade systemet 31.41 bilder-per-sekund när tre ansikten befann sig i bild. När nio ansikten befann sig i bild minskade bilder-per-sekund till 13.68.

Den genomsnittliga tiden som det tog att detektera och klassificera en bild ökade när antalet

ansikten i bild ökade. Tiden som krävs för att detektera ansikten i en bild ökar endast

marginellt när antalet ansikten i bilden ökar, tillskillnad från klassificeringen där tiden i

princip ökar linjärt när antalet ansikten i bild ökar .

References

Related documents

Bilderna av den tryckta texten har tolkats maskinellt (OCR-tolkats) för att skapa en sökbar text som ligger osynlig bakom bilden.. Den maskinellt tolkade texten kan

Trots stor potential för produktion av förnybar energi i Kronoberg importeras cirka 60 % av den energi som används i länet från andra delar av Sverige eller andra länder.. Målet

Faktorerna som påverkar hur lätt vagnen är att manövrera är vikten, val av hjul och storleken på vagnen. Val av material påverkar vikten i stor utsträckning och då vagnen ska

Syftet med uppdraget var att utforma en socialtjänst som bidrar till social hållbarhet med individen i fokus och som med ett förebyggande perspektiv ger människor lika möjligheter

konventionellt munskydd innehar kan hypotetiskt ett återanvändbart munskydd vara möjligt i.. I avsnittet teoretisk bakgrund ges en överskådlig redogörelse om varför tillverkning

Den kategoriseringsprocess som kommer till uttryck för människor med hög ålder inbegriper således ett ansvar att åldras på ”rätt” eller ”nor- malt” sätt, i handling

Det är således angeläget att undersöka vilket stöd personalen är i behov av, och på vilket sätt stöd, till personal med fokus på palliativ vård till äldre personer vid vård-

Subject D, for example, spends most of the time (54%) reading with both index fingers in parallel, 24% reading with the left index finger only, and 11% with the right