• No results found

Object Detection in Images

N/A
N/A
Protected

Academic year: 2021

Share "Object Detection in Images"

Copied!
39
0
0

Loading.... (view fulltext now)

Full text

(1)

VYSOK ´

E U ˇ

CEN´I TECHNICK ´

E V BRN ˇ

E

BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMA ˇ

CN´ICH TECHNOLOGI´I

´

USTAV PO ˇ

C´ITA ˇ

COV ´

E GRAFIKY A MULTIM ´

EDI´I

FACULTY OF INFORMATION TECHNOLOGY

DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA

DETEKCE OBJEKT ˚

U V OBRAZE

BAKAL ´

A ˇ

RSK ´

A PR ´

ACE

BACHELOR’S THESIS

AUTOR PR ´

ACE

TOM ´

A ˇ

S PT ´

A ˇ

CEK

(2)

VYSOK ´

E U ˇ

CEN´I TECHNICK ´

E V BRN ˇ

E

BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMA ˇ

CN´ICH TECHNOLOGI´I

´

USTAV PO ˇ

C´ITA ˇ

COV ´

E GRAFIKY A MULTIM ´

EDI´I

FACULTY OF INFORMATION TECHNOLOGY

DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA

DETEKCE OBJEKT ˚

U V OBRAZE

OBJECT DETECTION IN IMAGES

BAKAL ´

A ˇ

RSK ´

A PR ´

ACE

BACHELOR’S THESIS

AUTOR PR ´

ACE

TOM ´

A ˇ

S PT ´

A ˇ

CEK

AUTHOR

VEDOUC´I PR ´

ACE

Ing. MIROSLAV ˇ

SVUB

SUPERVISOR

(3)
(4)
(5)

Abstrakt

Tato pr´ace pojedn´av´a o problematice detekce objekt˚u a popisuje teoretick´a v´ychodiska de-tekce zaloˇzen´e na boostingu, algoritmu AdaBoost a Haarov´ych pˇr´ıznac´ıch v roli slab´ych klasifik´ator˚u. D´ale se tato pr´ace zab´yv´a n´avrhem a implementac´ı tr´enovac´ı a detekˇcn´ı apli-kace zaloˇzen´e na knihovn´ach OpenCV a wxWidgets. K z´avˇeru popisuje test tr´enov´an´ı a detekce obliˇcej˚u proveden´y v implementovan´e aplikaci.

Kl´ıˇ

cov´

a slova

Detekce objekt˚u, detekce obliˇcej˚u, zpracov´an´ı obrazu, boosting, AdaBoost, Haarovy pˇr´ıznaky, OpenCV, wxWidgets.

Abstract

This work deals with the problem of object detection in images and describes theoretical backgrounds of detection based on boosting, AdaBoost algorithm and Haar-like features as weak classifiers. Further this work engages in design and implementation of a training and detection application based on OpenCV and wxWidgets libraries. To the end it shows a training and face detection test performed in the implemented application.

Keywords

Object detection, face detection, image processing, boosting, AdaBoost, Haar-like features, OpenCV, wxWidgets.

(6)

Detekce objekt˚

u v obraze

Prohl´

sen´ı

Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana Ing. Miroslava ˇSvuba. Uvedl jsem vˇsechny liter´arn´ı prameny a publikace, ze kter´ych jsem ˇcerpal. . . . .

Tom´aˇs Pt´aˇcek 11. kvˇetna 2008

Podˇ

ekov´

an´ı

T´ımto bych chtˇel podˇekovat vedouc´ımu pr´ace panu Ing. Miroslavu ˇSvubovi za poskytnutou odbornou pomoc a podporu pˇri v´yvoji aplikace a psan´ı t´eto technick´e zpr´avy.

c

Tom´aˇs Pt´aˇcek, 2008.

Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe in-formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u.

(7)

Obsah

1 Uvod´ 3

1.1 Motivace. . . 3

1.2 Obsah pr´ace. . . 3

2 Z´akladn´ı pojmy 4 2.1 Obraz a jeho vlastnosti. . . 4

2.2 Zpracov´an´ı obrazu . . . 4

2.3 Klasifikace . . . 5

2.4 Boosting . . . 5

2.5 Slab´y klasifik´ator . . . 6

2.6 Haarovy pˇr´ıznaky. . . 6

3 Detekce objekt˚u v obraze 7 3.1 V´yznam a pouˇzit´ı. . . 7

3.2 Tˇr´ıda objekt˚u . . . 7

3.3 Principy detekce . . . 8

3.3.1 Detekce podle barvy . . . 8

3.3.2 Detekce podle pohybu . . . 8

3.3.3 Detekce podle hran. . . 8

3.3.4 Detekce podle vzoru . . . 9

4 Detekce obliˇcej˚u a metoda AdaBoost 10 4.1 Princip algoritmu AdaBoost . . . 10

4.2 Kask´ada klasifik´ator˚u . . . 11

4.3 Faleˇsn´e odezvy . . . 11

4.4 Postup detekce . . . 11

5 N´avrh aplikace 13 5.1 Tr´enov´an´ı . . . 13

5.2 Nastaven´ı tr´enov´an´ı . . . 14

5.3 Detekce . . . 14

5.4 Testov´an´ı ´uspˇeˇsnosti . . . 14

5.5 Vizualizace klasifik´atoru . . . 15

6 Implementace aplikace 16 6.1 Pouˇzit´e n´astroje . . . 16

(8)

6.1.3 wxWidgets . . . 16

6.2 Popis vlastn´ı implementace . . . 17

6.2.1 Tr´enovac´ı ˇc´ast . . . 17

6.2.2 Detekˇcn´ı ˇc´ast . . . 18

6.2.3 C´ˇast testov´an´ı ´uspˇeˇsnosti . . . 19

6.2.4 C´ˇast vizualizace klasifik´atoru . . . 19

7 Testov´an´ı 20 7.1 Podm´ınky tr´enov´an´ı . . . 20

7.2 Pr˚ubˇeh tr´enov´an´ı . . . 21

7.3 V´ysledn´e detektory . . . 21

7.4 Uk´azka detekce . . . 22

7.5 Testovac´ı sady . . . 22

7.6 Uspˇ´ eˇsnost detektor˚u . . . 22

7.7 Rychlost v detekci . . . 23

8 Z´avˇer 24

A N´avod k pouˇzit´ı aplikace 28

(9)

Kapitola 1

´

Uvod

1.1

Motivace

Detekce objekt˚u v obraze je v souˇcasnosti aktu´aln´ı a rozv´ıjej´ıc´ı se vˇedn´ı obor. Sv´e uplatnˇen´ı nal´ez´a vˇsude, kde po poˇc´ıtaˇci nebo jin´em v´ypoˇcetn´ım zaˇr´ızen´ı poˇzadujeme schopnost

”vidˇet“ objekty urˇcit´eho druhu. D´ıky rostouc´ımu v´ykonu poˇc´ıtaˇc˚u a cenov´e dostupnosti hardware se tento obor prosazuje v r˚uzn´ych oblastech informaˇcn´ıch technologi´ı, mimo jin´e v biometrii a kybernetice, a zast´av´a nenahraditelnou roli v odliˇsn´ych oblastech v´yzkumu a pr˚umyslu.

1.2

Obsah pr´

ace

C´ılem m´e bakal´aˇrsk´e pr´ace bylo navrhnout a implementovat detektor urˇcit´eho typu a testo-vat jeho vlastnosti. Prvn´ı ˇc´ast t´eto technick´e zpr´avy je zamˇeˇrena na problematiku detekce objekt˚u v obraze a jej´ı teoretick´a v´ychodiska. Druh´a ˇc´ast se zab´yv´a samotnou detekˇcn´ı aplikac´ı. Zde je shrnut´ı toho, o ˇcem pojedn´avaj´ı jednotliv´e kapitoly:

1. kapitola - str´anka, kterou pr´avˇe ˇctete

2. kapitola - vymezen´ı pojm˚u a teorie nutn´a k pochopen´ı dalˇs´ıho textu 3. kapitola - sezn´amen´ı s r˚uzn´ymi pˇr´ıstupy k detekci objekt˚u v obraze 4. kapitola - popis metody zvolen´e pro implementaci aplikace

5. kapitola - popis aplikace z hlediska jej´ıho n´avrhu 6. kapitola - popis d˚uleˇzit´ych ˇc´ast´ı implementace aplikace

7. kapitola - pˇredstaven´ı proveden´eho testov´an´ı a namˇeˇren´ych hodnot 8. kapitola - z´avˇer a n´astin moˇzn´eho budouc´ıho v´yvoje aplikace

(10)

Kapitola 2

akladn´ı pojmy

V t´eto kapitole vymez´ım z´akladn´ı pojmy, na nˇeˇz bude pozdˇeji v textu odkazov´ano. Jde o pojmy t´ykaj´ıc´ı se zpracov´an´ı obrazu, klasifikace a boostingu. Pojmy na sebe navazuj´ı v poˇrad´ı, v jak´em jsou uvedeny.

2.1

Obraz a jeho vlastnosti

V cel´e t´eto pr´aci je obrazem m´ınˇena digit´aln´ı rastrov´a grafika z´ıskan´a fotoapar´atem, video-kamerou nebo jin´ym sn´ımac´ım zaˇr´ızen´ım. V oblasti detekce objekt˚u je pojem obraz zcela bˇeˇznˇe uˇz´ıv´an se stejn´ym v´yznamem a prakticky nikdy nen´ı myˇslen jinak, takˇze nem˚uˇze doj´ıt k nedorozumˇen´ı.

Obraz v naˇsem pojet´ı je grafick´a informace v podobˇe rastrov´e matice o urˇcit´em poˇctu ˇr´adk˚u a sloupc˚u. Nejmenˇs´ı stavebn´ı jednotkou t´eto matice je tzv. pixel. Kaˇzd´y pixel je nositelem barevn´e informace. Obraz lze vn´ımat tak´e jako dvourozmˇern´y diskr´etn´ı sign´al.

Pro t´ema detekce objekt˚u je d˚uleˇzit´e uvˇedomit si, ˇze rastrov´y obraz v sobˇe nenese ˇ

z´adnou informaci o vz´ajemn´em vztahu sv´ych hodnot, pixel˚u. Nen´ı tedy moˇzn´e pˇr´ımou cestou z obrazu z´ıskat napˇr. jednotliv´e objekty na nˇem vyobrazen´e, jejich tvar ani jejich poˇcet.

2.2

Zpracov´

an´ı obrazu

Jde o aplikaci algoritm˚u na obrazov´a data. Vˇetˇsinou tyto algoritmy pracuj´ı s jasovou ˇci barevnou informac´ı, nebo data filtruj´ı. Mnoho aplikac´ı uvaˇzuje vstupn´ı obraz jako dvou-rozmˇern´y sign´al a tak s n´ım pˇri zpracov´an´ı i zach´az´ı. V´ystupem m˚uˇze b´yt nov´y obraz nebo zjiˇstˇen´a informace.

Obraz se ˇcasto zpracov´av´a za ´uˇcelem snadnˇejˇs´ıho z´ısk´an´ı informac´ı z nˇej. To m´a z´asadn´ı v´yznam v detekci objekt˚u, kde algoritmy ze sn´ımk˚u potˇrebuj´ı extrahovat jen urˇcit´e vˇetˇsinou jednoduch´e informace (napˇr. hrany, oblasti, rozd´ıly svˇetlosti) a obt´ıˇznˇe by nakl´adaly s p˚ u-vodn´ım obrazem obsahuj´ıc´ım obrovsk´e mnoˇzstv´ı barevn´ych informac´ı.

V´yhodami zpracov´an´ı digit´aln´ıho obrazu jsou n´ızk´e n´aklady a oproti analogov´emu zpra-cov´an´ı nevznik´a ˇz´adn´y ˇsum.

(11)

2.3

Klasifikace

Statistick´a klasifikace je proces, pˇri kter´em se rozhoduje o pˇr´ısluˇsnosti poloˇzek k urˇcen´ym tˇr´ıd´am na z´akladˇe kvantitativn´ı znalosti jejich charakteristick´ych vlastnost´ı [6]. Tato znalost vznik´a tr´enov´an´ım na tr´enovac´ı mnoˇzinˇe pˇr´ıklad˚u s pˇredem zn´amou pˇr´ısluˇsnost´ı. Jde tedy o formu uˇcen´ı s uˇcitelem (anglicky supervised learning).

Tot´eˇz nyn´ı vysvˇetl´ım form´alnˇe. Mˇejme napˇr´ıklad klasifikaci o dvou tˇr´ıd´ach:

Y = {−1, +1} (2.1)

Takov´a klasifikace se naz´yv´a dvou-tˇr´ıdn´ı nebo bin´arn´ı klasifikace a m˚uˇze znaˇcit napˇr. zda o poloˇzce plat´ı (tˇr´ıda +1) ˇci neplat´ı nˇejak´e tvrzen´ı (tˇr´ıda −1). Prvek t´eto klasifikaˇcn´ı mnoˇziny budeme znaˇcit yi, nab´yvat m˚uˇze hodnot −1 a +1. D´ale mˇejme mnoˇzinu poloˇzek X a jej´ı prvky xi. Tr´enovac´ı mnoˇzina definovan´a n´asleduj´ıc´ı rovnic´ı je pak mnoˇzinou dvojic poloˇzek a jejich pˇr´ısluˇsnost´ı k tˇr´ıd´am.

{(x1, y1), . . . , (xn, yn)}, x ∈ X, y ∈ Y (2.2) V´ystupem tr´enov´an´ı na t´eto tr´enovac´ı mnoˇzinˇe pak bude tzv. klasifik´ator

h : X → Y, (2.3)

kter´y prom´ıt´a poloˇzku x do pˇr´ısluˇsn´e klasifikaˇcn´ı tˇr´ıdy y. Jin´ymi slovy, klasifik´ator je hle-dan´a funkce, kter´a by pro dan´e vstupn´ı xi pˇredepisovala spr´avn´e v´ystupn´ı yi. Nalezen´ı t´eto funkce, nebo-li nalezen´ı pˇresn´eho klasifik´atoru, je hlavn´ı probl´em.

2.4

Boosting

Boosting je metoda strojov´eho uˇcen´ı s uˇcitelem. Myˇslenkou boostingu je vytvoˇrit velmi pˇresn´y klasifik´ator (naz´yv´an jako siln´y) kombinac´ı relativnˇe jednoduch´ych klasifik´ator˚u (naz´yvan´ych jako slab´e).

Boosting ke sv´e ˇcinnosti vyˇzaduje popsanou tr´enovac´ı mnoˇzinu, tedy s pˇredem zn´amou pˇr´ısluˇsnost´ı jednotliv´ych pˇr´ıklad˚u do tˇr´ıd. Na tuto mnoˇzinu je aplikov´an algoritmus, jehoˇz v´ystupem je natr´enovan´y siln´y klasifik´ator.

Existuje nˇekolik boostingov´ych algoritm˚u. Vˇetˇsina z nich pracuje v iterac´ıch. V kaˇzd´e iteraci je hled´an nov´y slab´y klasifik´ator, kter´y by minimalizoval chybu na tr´enovac´ı mnoˇzinˇe. Kdyˇz je takov´y klasifik´ator nalezen, je mu na z´akladˇe jeho chyby pˇriˇrazena urˇcit´a v´aha. Pak je klasifik´ator pˇrid´an do skupiny budouc´ıho siln´eho klasifik´atoru, obvykle proveden´ım operace line´arn´ı kombinace. Na konci iterace jsou jeˇstˇe spoˇcteny nov´e v´ahy jednotliv´ych prvk˚u tr´enovac´ı mnoˇziny.

V´ahy prvk˚u tr´enovac´ı mnoˇziny maj´ı podstatn´y vliv na to, jak´ym zp˚usobem jsou vyb´ır´any slab´e klasifik´atory. Boostingov´e algoritmy tyto v´ahy utv´aˇr´ı postupnˇe v pr˚ubˇehu cel´eho tr´enov´an´ı a reflektuj´ı v nich ´uspˇeˇsnost klasifikace kaˇzd´eho prvku tr´enovac´ı mnoˇziny. ˇC´ım menˇs´ı je tato ´uspˇeˇsnost, t´ım vˇetˇs´ı z´ısk´av´a prvek v´ahu a naopak. To umoˇzˇnuje algoritmu zamˇeˇrit se v tr´enov´an´ı na prvky dˇr´ıve chybnˇe klasifikovan´e a nal´ezt v nich nov´e urˇcuj´ıc´ı vlastnosti zlepˇsuj´ıc´ı jejich klasifikaci.

(12)

2.5

Slab´

y klasifik´

ator

Pojem slab´y klasifik´ator se uˇz´ıv´a ve spojen´ı s klasifikac´ı a boostingem. Jde o klasifik´ator, kter´y jen velmi vzd´alenˇe odpov´ıd´a spr´avn´e klasifikaci, ale zato je obvykle relativnˇe jedno-duch´y a rychle spoˇcitateln´y.

K detekci objekt˚u se pouˇz´ıvaj´ı r˚uzn´e druhy slab´ych klasifik´ator˚u citliv´ych na urˇcit´e informace extrahovan´e z obrazu (napˇr. svˇetlost, barva). V t´eto pr´aci bude ˇreˇc pouze o tzv. Haarov´ych pˇr´ıznac´ıch, kter´e reaguj´ı na vz´ajemn´y vztah sousedn´ıch pixel˚u.

2.6

Haarovy pˇ

r´ıznaky

Haarovy pˇr´ıznaky (anglicky Haar-like features) jsou velmi rychlou alternativou k dˇr´ıve pouˇz´ıvan´e klasifikaci pracuj´ıc´ı se svˇetlost´ı obrazu. Nev´yhoda tohoto pˇr´ıstupu spoˇc´ıvala v jeho ˇcasov´e sloˇzitosti.

Haarovy pˇr´ıznaky pracuj´ı s obd´eln´ıkov´ymi oblastmi p˚uvodn´ıho obrazu. V nich jsou poˇc´ıt´any sumy pixel˚u a v´ysledek pˇr´ıznaku je d´an jako rozd´ıl tˇechto sum. Na obr´azku

2.1 jsou zn´azornˇeny nˇekter´e Haarovy pˇr´ıznaky. Nejjednoduˇsˇs´ı varianta se skl´ad´a ze dvou osovˇe soumˇern´ych obd´eln´ık˚u stejn´ych velikost´ı. Sloˇzitˇejˇs´ı se pak skl´adaj´ı ze tˇr´ı nebo ˇctyˇr obd´eln´ık˚u, pˇr´ıpadnˇe jsou nav´ıc otoˇceny o 45◦.

Obr´azek 2.1: Uk´azka Haarov´ych pˇr´ıznak˚u vˇcetnˇe nˇekter´ych diagon´aln´ıch variant.

Vysok´a rychlost Haarova pˇr´ıznaku souvis´ı s v´ypoˇctem sum pixel˚u a s pojmem in-tegr´aln´ı obraz, kter´y byl poprv´e zaveden v publikaci autor˚u Viola a Jones [4]. Integr´aln´ı obraz lze definovat jako dvourozmˇernou matici o rozmˇerech p˚uvodn´ıho obrazu. Kaˇzd´y pr-vek t´eto matice obsahuje sumu vˇsech pixel˚u p˚uvodn´ıho obrazu v obd´eln´ıku um´ıstˇen´em nad a vlevo od tohoto prvku. Integr´aln´ı obraz takto umoˇzˇnuje v konstantn´ım ˇcase spoˇc´ıtat sumu pixel˚u kter´ekoliv obd´eln´ıkov´e ˇc´asti obrazu pouh´ym vyhled´an´ım 4 hodnot a jejich seˇcten´ım/odeˇcten´ım. Napˇr´ıklad suma pixel˚u ve zv´yraznˇen´em obd´eln´ıku z obr´azku 2.2 je vypoˇctena n´asledovnˇe:

SU M = S1− S2− S3+ S4 (2.4)

Obr´azek 2.2: V´ypoˇcet sumy pixel˚u vnitˇrn´ıho obd´eln´ıku integr´aln´ım obrazem. Body S1 aˇz S4 pˇredstavuj´ı hodnoty v integr´aln´ım obraze.

(13)

Kapitola 3

Detekce objekt˚

u v obraze

Nyn´ı se zamˇeˇr´ım na popis detekce objekt˚u v obraze, jej´ıch princip˚u a existuj´ıc´ıch metod.

3.1

yznam a pouˇ

zit´ı

Detekce objekt˚u v obraze je poˇc´ıtaˇcov´a technologie vyhled´av´an´ı objekt˚u urˇcit´e tˇr´ıdy v ob-raze. C´ılem je zjistit pozici a velikost kaˇzd´eho nalezen´eho objektu.

Detekce objekt˚u se uˇz´ıv´a hlavnˇe ve spojen´ı s videokamerou nebo jin´ym sn´ımac´ım zaˇ r´ıze-n´ım. Takto vybaven´y poˇc´ıtaˇc je schopen ve sn´ıman´em obraze automaticky lokalizovat dan´y objekt a na jeho v´yskyt nebo vlastnost d´ale reagovat. ˇCasto se pouˇz´ıvaj´ı detektory lidsk´ych obliˇcej˚u v identifikaˇcn´ıch syst´emech, kde detektor slouˇz´ı jako pˇredstupeˇn rozpozn´av´an´ı obliˇcej˚u. D´ale jsou detektory objekt˚u uplatˇnov´any v oblasti automatizace v´yrobn´ıch pro-ces˚u, kde mohou slouˇzit jako zaˇr´ızen´ı kontroly v´ystupn´ı kvality. Jinou aplikac´ı jsou inteli-gentn´ı roboti s videokamerami schopn´ı interakce se sv´ym okol´ım nebo napˇr´ıklad inteligentn´ı videokamery sleduj´ıc´ı pohyb sn´ıman´e osoby. V mnoh´ych tˇechto aplikac´ıch prob´ıh´a detekce v re´aln´em ˇcase, coˇz umoˇzˇnuje st´ale rostouc´ı v´ykon v´ypoˇcetn´ı techniky a jej´ı vysok´a dostup-nost.

Aˇckoliv detekce objekt˚u poskytuje poˇc´ıtaˇci schopnost

”vidˇet“ urˇcit´e objekty, zdaleka nejde o napodoben´ı lidsk´eho vidˇen´ı, kter´e je ve sv´e podstatˇe mnohem sloˇzitˇejˇs´ı a kom-plexnˇejˇs´ı. Hloubˇeji se t´ımto zab´yv´a obor poˇc´ıtaˇcov´e vidˇen´ı, kde detekce objekt˚u figuruje jako jeden z mnoha otevˇren´ych probl´em˚u.

3.2

r´ıda objekt˚

u

ˇ

Z´adn´y univerz´aln´ı postup jak detekovat libovoln´e objekty nen´ı. Proto se soustˇred’ujeme vˇzdy na konkr´etn´ı tˇr´ıdu objekt˚u, kter´e chceme detekovat.

Objektem dan´e tˇr´ıdy m˚uˇze b´yt napˇr. automobil nebo lidsk´y obliˇcej, obecnˇe jak´ykoliv objekt, kter´y lze pˇri sn´ım´an´ı opticky rozliˇsit od okol´ı a kter´y je charakteristick´y sv´ym vzhle-dem. Stejnˇe jako vˇetˇsina automobil˚u je typick´ych sv´ym tvarem, maj´ı i obliˇceje sv´e charak-teristick´e znaky, jeˇz sd´ıl´ı a d´ıky nimˇz je lze z´aroveˇn odliˇsit od objekt˚u, kter´e obliˇceji v˚ubec nejsou. Povaha tˇechto spoleˇcn´ych znak˚u m´a tak´e vliv na v´ybˇer vhodn´eho typu detektoru.

(14)

3.3

Principy detekce

Hlavn´ım probl´emem je, jak objekty v obraze detekovat. Obraz je totiˇz pouhou matic´ı ˇ

c´ıseln´ych hodnot bez jak´ekoliv pˇr´ım´e informace o objektech v nˇem.

K detekci vyuˇz´ıv´ame r˚uzn´ych princip˚u zpracov´an´ı obrazu a znalost´ı o lidsk´em vidˇen´ı objekt˚u.

3.3.1 Detekce podle barvy

Pokud je objekt v´yznaˇcn´y svou barvou a za pˇredpokladu, ˇze m´ame k dispozici barevn´e sn´ımac´ı zaˇr´ızen´ı, lze pouˇz´ıt tuto jednoduchou metodu detekce. Jej´ı princip se zakl´ad´a na zpracov´an´ı obrazu filtrac´ı barevn´e informace s vhodnou toleranc´ı odchylky barvy a svˇetlosti. Jak´akoliv obrazov´a data mimo urˇcen´y rozsah barev a svˇetlosti jsou z obrazu odstranˇena a hledan´y objekt z˚ust´av´a.

Probl´em samozˇrejmˇe nast´av´a v momentˇe, kdy se na sn´ımc´ıch objev´ı jin´y objekt stejn´e barvy. V pˇr´ıpadˇe, ˇze nˇeco takov´eho bˇeˇznˇe nenastane, lze detektor pouˇz´ıt bez pot´ıˇz´ı. V o-statn´ıch pˇr´ıpadech je moˇzn´e tuto metodu spojit s nˇejakou jinou metodou, kter´a dok´aˇze v mnoˇzinˇe zjiˇstˇen´ych objekt˚u eliminovat neˇz´adouc´ı pˇr´ıpady.

Detekce podle barvy objektu m˚uˇze b´yt vyuˇzita napˇr´ıklad v kombinaci s detektory obliˇcej˚u, kde pˇredem zn´ame barvu lidsk´e pokoˇzky. V praxi se ale tato kombinace pˇr´ıliˇs nepouˇz´ıv´a. Jednak proto, ˇze nefunguje se vˇsemi typy pokoˇzky, a tak´e kv˚uli zkreslen´ı barev vlivem r˚uzn´ych svˇeteln´ych podm´ınek.

3.3.2 Detekce podle pohybu

V pˇr´ıpadˇe aplikace s videosekvenc´ı nebo videokamerou a obrazem sn´ıman´ym v re´aln´em ˇ

case lze pouˇz´ıt detekci objekt˚u podle pohybu. Jeden z moˇzn´ych princip˚u t´eto metody je zaloˇzen na porovn´av´an´ı dvou posledn´ıch zachycen´ych sn´ımk˚u a vyhodnocov´an´ı zmˇen hodnot jednotliv´ych pixel˚u [2]. Objekty jsou nalezeny vyhled´an´ım celistv´ych oblast´ı, ve kter´ych doˇslo ke zmˇenˇe dostateˇcnˇe velk´eho mnoˇzstv´ı pixel˚u.

Podobnˇe jako u metody detekce podle barvy zde nast´av´a probl´em, kdyˇz se v obraze m˚uˇze pohybovat v´ıce objekt˚u. ˇReˇsen´ım je opˇet pouˇzit´ı tohoto detektoru v kombinaci s dalˇs´ı detekˇcn´ı metodou.

Ve sn´ıman´em obraze je potˇreba zohlednit i ˇsum, kter´y zde m˚uˇze vzniknout a kter´y by mohl b´yt detektorem mylnˇe vyhodnocen jako pohybuj´ıc´ı se objekt. K ˇreˇsen´ı je moˇzn´e pouˇz´ıt jednoduch´y filtr ˇsumu, kter´y z vyhodnocen´ych zmˇen pixel˚u odstran´ı mal´e osamocen´e oblasti.

3.3.3 Detekce podle hran

Tato metoda je zaloˇzena na zpracov´an´ı obrazov´ych dat pomoc´ı segmentace. V´ystupem seg-mentace jsou nalezen´e v´yznamn´e oblasti v obraze zjiˇstˇen´e pomoc´ı detektoru hran nebo napˇr. zkoum´an´ım oblast´ı s pˇribliˇznˇe stejn´ymi vlastnostmi pixel˚u. Zjiˇstˇen´e oblasti jsou ob-vykle d´ale zkoum´any jin´ym algoritmem. Ten se uplatn´ı v pˇr´ıpadˇe ˇclenit´eho obraz, kde je potˇreba rozhodnout, kter´a oblast obsahuje hledan´y objekt.

Existuje mnoho metod segmentace, detekce hran je jednou z nich. Spoleˇcn´ym c´ılem tˇechto metod je zjednoduˇsit dalˇs´ı zpracov´an´ı obrazu. Kdyˇz je obraz rozdˇelen do nˇekolika celk˚u, je n´asledn´a anal´yza snazˇs´ı. Lze se tak nam´ısto cel´eho obrazu vˇenovat konkr´etn´ım vznikl´ym segment˚um a ty pak tˇreba d´ale klasifikovat.

(15)

3.3.4 Detekce podle vzoru

V oblasti poˇc´ıtaˇcov´eho vidˇen´ı je detekce objekt˚u podle vzoru tou nejv´yˇse postavenou a z´aroveˇn nejsloˇzitˇejˇs´ı metodou. Vyuˇz´ıv´a se zde princip˚u strojov´eho uˇcen´ı na mnoˇzinˇe tr´enovac´ıch dat.

Detektor mus´ı b´yt nejdˇr´ıve na tr´enovac´ıch datech nacviˇcen, v ˇcemˇz se tato metoda liˇs´ı od ostatn´ıch. Obvykle se detektor tr´enuje na sadˇe obrazov´ych dat rozdˇelen´e do dvou tˇr´ıd s pˇredem zn´am´ym v´yznamem: tˇr´ıda sn´ımk˚u dan´eho objektu a tˇr´ıda sn´ımk˚u bez v´yskytu tohoto objektu.

Obecnˇe slouˇz´ı tr´enovac´ı data v procesu tr´enov´an´ı k vyhled´an´ı informac´ı, vˇetˇsinou za-loˇzen´ych na statistick´em pˇr´ıstupu. V oblasti detekce objekt˚u jde o vyhled´av´an´ı informac´ı popisuj´ıc´ıch vzory v tr´enovac´ıch datech. Tyto vzory jsou z obrazu z´ısk´av´any pomoc´ı ma-tematicky spoˇcitateln´ych pˇr´ıznak˚u. Pokud jsou informace o vzorech nalezeny, je na jejich z´akladˇe vytvoˇren v´ysledn´y klasifik´ator pouˇziteln´y k detekci objekt˚u. Bˇeˇznˇe jde o bin´arn´ı klasifik´ator rozliˇsuj´ıc´ı pouze dvˇe tˇr´ıdy: nacviˇcen´y objekt a nˇeco jin´eho neˇz nacviˇcen´y objekt. Mezi nejzn´amˇejˇs´ı pˇr´ıstupy k t´eto metodˇe detekce patˇr´ı v souˇcasn´e dobˇe neuronov´e s´ıtˇe a boosting. Charakteristick´e jsou pˇredevˇs´ım svou robustnost´ı, ˇsirok´ym uplatnˇen´ım a vysokou ´

uspˇeˇsnost´ı. D´ıky tˇemto i dalˇs´ım pˇrednostem si metody detekce objekt˚u podle vzoru z´ıskaly ve svˇete velkou oblibu. Jejich v´yvoj je st´ale pˇredmˇetem v´yzkumu.

Pozn´amka: Zm´ınˇenou metodou boostingu se budu podrobnˇeji zab´yvat v n´asleduj´ıc´ı kapitole na stranˇe 10.

(16)

Kapitola 4

Detekce obliˇ

cej˚

u a metoda

AdaBoost

Pro svou pr´aci jsem jako tˇr´ıdu detekovan´ych objekt˚u zvolil obliˇceje. D˚uvod˚u je nˇekolik. Ze vˇsech tˇr´ıd objekt˚u je detekce obliˇcej˚u pravdˇepodobnˇe nejrozˇs´ıˇrenˇejˇs´ı, coˇz znamen´a tak´e existenci vˇetˇs´ıho mnoˇzstv´ı literatury na toto t´ema. Dalˇs´ım d˚uvodem jsou volnˇe dostupn´e, kvalitn´ı a rozs´ahl´e datab´aze tr´enovac´ıch dat s pˇredzpracovan´ymi sn´ımky obliˇcej˚u. D´ıky exis-tenci tˇechto datab´az´ı odpad´a potˇreba vytv´aˇret vlastn´ı tr´enovac´ı data, coˇz je s ohledem na potˇrebn´e mnoˇzstv´ı a variabilitu vzork˚u ˇcasovˇe n´aroˇcn´y proces. Jin´ym d˚uvodem je samotn´a zaj´ımavost obliˇcej˚u jako tˇr´ıdy objekt˚u dan´a specifick´ymi vlastnostmi, kter´e se u jin´ych tˇr´ıd obt´ıˇznˇe hledaj´ı.

Obr´azek 4.1: Uk´azka tr´enovac´ı mnoˇziny se sn´ımky obliˇcej˚u (zdroj: Yale Face Database)

Jako metodu jsem zvolil detekci podle vzoru zaloˇzenou na algoritmu AdaBoost a na detekˇcn´ım syst´emu Viola & Jones [4]. Tento syst´em m´a nˇekolik kl´ıˇcov´ych vlastnost´ı: klasi-fikaci prov´ad´ı pˇres relativnˇe rychl´e Haarovy pˇr´ıznaky, k jejich v´ybˇeru a tr´enov´an´ı vyuˇz´ıv´a siln´y algoritmus AdaBoost a m´ısto jedin´eho v´ysledn´eho klasifik´atoru vytv´aˇr´ı kask´adu klasi-fik´ator˚u. Tyto vlastnosti zajistily detekˇcn´ımu syst´emu Viola & Jones znatelnˇe vyˇsˇs´ı rychlost detekce a umoˇznily jeho nasazen´ı v real-time aplikac´ıch, coˇz bylo u podobn´ych syst´em˚u dˇr´ıve nemysliteln´e.

4.1

Princip algoritmu AdaBoost

AdaBoost, aneb adaptivn´ı boosting, je algoritmus strojov´eho uˇcen´ı. Jeho vstupem je po-psan´a tr´enovac´ı mnoˇzina a v´ystupem siln´y klasifik´ator sestaven´y ze slab´ych klasifik´ator˚u nalezen´ych v pr˚ubˇehu tr´enov´an´ı. Adaptivnost tohoto algoritmu spoˇc´ıv´a v jeho schopnosti pˇrizp˚usobit tr´enov´an´ı nov´ych klasifik´ator˚u dˇr´ıve chybnˇe klasifikovan´ym pˇr´ıpad˚um.

Mˇejme tr´enovac´ı mnoˇzinu {(x1, y1), . . . , (xn, yn)}, xi ∈ X, yi ∈ Y = {−1, +1}. Nejdˇr´ıve je inicializov´ana distribuˇcn´ı funkce D1(i) v´ahuj´ıc´ı pˇr´ıklady v tr´enovac´ı mnoˇzinˇe. Pak pro iterace t = 1, . . . , T je prov´adˇena n´asleduj´ıc´ı posloupnost operac´ı [3,5]:

(17)

1. Najdi slab´y klasifik´ator ht minimalizuj´ıc´ı chybu s ohledem k distribuˇcn´ı funkci Dt(i) 2. Spoˇc´ıtej chybu tohoto klasifik´atoru tjako pravdˇepodobnost chybn´e klasifikace 3. Podle chyby t urˇci v´ahu αt tohoto klasifik´atoru

4. Spoˇc´ıtej novou distribuˇcn´ı funkci Dt+1 pro pˇr´ıˇst´ı iteraci

Nakonec je vytvoˇrena line´arn´ı kombinace slab´ych klasifik´ator˚u ht(x) a jejich vah αt. Vznikne suma: f (x) = T X t=1 αtht(x) (4.1)

V´ysledn´y klasifik´ator je pak d´an znam´enkem t´eto sumy:

H(x) = sign (f (x)) (4.2)

4.2

Kask´

ada klasifik´

ator˚

u

Algoritmus Viola & Jones je charakteristick´y pouˇzit´ım kask´ady klasifik´ator˚u. Nen´ı zde pouze jeden siln´y klasifik´ator, ale cel´a jejich ˇrada (bˇeˇznˇe 10 aˇz 30).

D˚uvodem k pouˇzit´ı kask´ady klasifik´ator˚u je dosaˇzen´ı vysok´e rychlosti detekce objekt˚u. Obraz je totiˇz v naprost´e vˇetˇsinˇe pˇr´ıpad˚u tvoˇren velk´ym mnoˇzstv´ım pozic, kde se nenach´az´ı ˇ

z´adn´y hledan´y objekt. Detektor obliˇcej˚u m˚uˇze m´ıt aˇz tis´ıce rozhodovac´ıch element˚u. Kdyby vˇsechny tyto elementy musely b´yt spoˇcteny v kaˇzd´e pozici v obraze, zpracov´an´ı cel´eho obrazu by bylo n´aroˇcnˇejˇs´ı.

Kask´ada klasifik´ator˚u umoˇzˇnuje velmi rychle pˇreskoˇcit neˇz´adouc´ı pozice v obraze a soustˇredit se tak na oblasti s potenci´aln´ım v´yskytem hledan´eho objektu. V prvn´ıch st´adi´ıch kask´ady b´yv´a obvykle jen nˇekolik m´alo klasifik´ator˚u a s dalˇs´ımi st´adii jejich poˇcet stoup´a. Prvn´ı st´adia jsou tedy vyhodnocena rychleji, d´ıky ˇcemuˇz lze aktu´aln´ı pozici dˇr´ıve oznaˇcit za neˇz´adouc´ı a pˇreskoˇcit ji bez vyhodnocen´ı zb´yvaj´ıc´ıch st´adi´ı, coˇz je kl´ıˇcov´a vlastnost.

4.3

Faleˇ

sn´

e odezvy

Jedn´ım z d˚uleˇzit´ych c´ıl˚u pˇri tr´enov´an´ı je dosaˇzen´ı co nejniˇzˇs´ıho pod´ılu faleˇsnˇe pozitivn´ıch a tak´e faleˇsnˇe negativn´ıch odezev. Pokud uv´aˇz´ıme, ˇze v cel´em obraze je napˇr´ıklad jeden hledan´y obliˇcej, znamen´a to pro detektor velk´e mnoˇzstv´ı pozic bez obliˇceje, kde by tud´ıˇz nemˇel b´yt ˇz´adn´y obliˇcej faleˇsnˇe detekov´an. Z tohoto pohledu m´a velk´y v´yznam n´ızk´y pod´ıl faleˇsnˇe pozitivn´ıch odezev. Pro re´aln´e pouˇzit´ı detektoru jde o d˚uleˇzit´y parametr, kter´y se v koneˇcn´em d˚usledku m˚uˇze projevit i v jeho vyˇsˇs´ı rychlosti.

N´ızk´eho pod´ılu faleˇsnˇe pozitivn´ıch odezev se dosahuje volbou kvalitn´ı a rozs´ahl´e tr´ enova-c´ı mnoˇziny a dostateˇcnˇe dlouh´ym tr´enov´an´ım. Pro kvalitn´ı detektor by mˇelo b´yt tr´enov´an´ı ukonˇceno aˇz po dosaˇzen´ı pod´ılu faleˇsnˇe pozitivn´ıch odezev alespoˇn 0,000005 [1]. Takov´y detektor v milionu pozic´ıch bez obliˇceje chybnˇe detekuje jen 5 pozic.

(18)

znamen´a to, ˇze toto okno pˇredstavuje hledan´y objekt. V takov´em pˇr´ıpadˇe je pozice a velikost okna zaznamen´ana nebo i vyznaˇcena pˇr´ımo v obraze.

Protoˇze vˇsak nezn´ame velikost hledan´eho objektu a chceme, aby detektor byl k velikosti objektu invariantn´ı, mus´ı b´yt proch´azen´ı obrazu provedeno nˇekolikr´at v r˚uzn´ych mˇeˇr´ıtk´ach. Nemˇen´ı se vˇsak velikost okna, kter´ym obraz proch´az´ıme, ale transformuje se velikost cel´eho obrazu. Obraz je po kaˇzd´em pr˚uchodu podvzorkov´an (viz obr´azek 4.3) s dan´ym pomˇerem nov´e a pˇredchoz´ı velikosti a kdyˇz uˇz je tak mal´y, ˇze jej nelze naˇs´ım oknem proch´azet, detekce skonˇc´ı.

Pomˇer podvzorkov´an´ı m´a vliv na ´uspˇeˇsnost detekce. Pokud je jeho hodnota nastavena pˇr´ıliˇs n´ızko, je obraz zmenˇsov´an po velmi mal´ych kroc´ıch. To sice zvyˇsuje pravdˇepodobnost spr´avn´e detekce vˇsech objekt˚u v obraze, ale detekce je ˇcasovˇe n´aroˇcnˇejˇs´ı, protoˇze je nutn´e pr˚uchod obrazem prov´est v´ıcekr´at. Nastaven´ı pˇr´ıliˇs vysok´e hodnoty zase vede k rychl´e de-tekci, ale detektor ˇcastˇeji nˇejak´y objekt v˚ubec nezaznamen´a, protoˇze jej zkr´atka

”pˇrehl´edne“. Pˇri implementaci detektoru je snaha minimalizovat poˇcet krok˚u nutn´ych k pr˚uchodu obrazem. K urychlen´ı detekce se vyuˇz´ıv´a napˇr. poznatku, ˇze v m´ıstˇe, kde jiˇz byl detekov´an objekt, nebude pˇr´ıtomen dalˇs´ı objekt stejn´eho druhu. Takovou oblast tedy lze bez obav pˇreskoˇcit.

Jin´ym pˇr´ıstupem k urychlen´ı detekce je vyuˇzit´ı poznatku, ˇze pokud detekˇcn´ı okno pr´avˇe obsahuje pˇr´ıliˇs ˇclenitou strukturu (napˇr. vˇetvˇe strom˚u), urˇcitˇe nep˚ujde o hledan´y objekt. Takov´e oblasti v obraze jsou m´ıstem s vysok´ym potenci´alem faleˇsnˇe pozitivn´ıch odezev, kde m˚uˇze b´yt klasifikace pomal´a. Zde popisovan´y pˇr´ıstup spolupracuje s vhodn´ym detektorem hran, kter´y dok´aˇze zm´ınˇen´e oblasti rychle rozpoznat a umoˇzn´ı jim pˇri detekci pˇredej´ıt.

Obr´azek 4.2: Pr˚uchod obrazu pomysln´ym oknem pˇri detekci.

(19)

Kapitola 5

avrh aplikace

V pˇredchoz´ıch kapitol´ach jsem probral teoretick´y z´aklad problematiky detekce objekt˚u v ob-raze. Tak´e jsem uvedl a zd˚uvodnil sv´e rozhodnut´ı vˇenovat se detekci obliˇcej˚u s pouˇzit´ım metody AdaBoost. V t´eto a dalˇs´ıch kapitol´ach se jiˇz budu vˇenovat praktick´e ˇc´asti sv´e pr´ace, formulaci c´ıle, jeho realizaci a testov´an´ı.

C´ılem m´e bakal´aˇrsk´e pr´ace bylo navrhnout a implementovat detektor objekt˚u urˇcit´eho typu a testovat jeho vlastnosti. Jelikoˇz existuj´ı kvalitn´ı a volnˇe dostupn´e implementace r˚uzn´ych detekˇcn´ıch algoritm˚u, bylo jiˇz od zaˇc´atku poˇc´ıt´ano s pouˇzit´ım jedn´e z nich. M´ym ´

ukolem tud´ıˇz bylo soustˇredit se na n´avrh a proveden´ı aplikace, kter´a by nad pouˇzitou knihovnou vytv´aˇrela intuitivn´ı grafick´e rozhran´ı poskytuj´ıc´ı funkce spojen´e s pˇr´ısluˇsnou metodou detekce objekt˚u.

Cel´a aplikace byla v n´avrhu rozdˇelena do nˇekolika samostatn´ych ˇc´ast´ı. Hlavn´ı jsou ˇ

c´asti

”Tr´enov´an´ı“ a ”Detekce“. Mimo tyto byly v aplikaci navrhnuty jeˇstˇe ˇc´asti ” Nasta-ven´ı tr´enov´an´ı“,

”Testov´an´ı ´uspˇeˇsnosti“ a ”Vizualizace klasifik´atoru“. Vyjmenovan´e ˇc´asti zde nyn´ı pop´ıˇsi.

5.1

Tr´

enov´

an´ı

´

Uˇcelem t´eto ˇc´asti je umoˇznit uˇzivateli vytvoˇrit vlastn´ı klasifik´ator. Tr´enov´an´ı vyˇzaduje mnoˇzinu tr´enovac´ıch dat s pˇredem zn´am´ym pˇriˇrazen´ım prvk˚u do tˇr´ıd. Pˇredpokl´ad´a se exis-tence dvou adres´aˇr˚u s obrazov´ymi soubory, jeden s pozitivn´ımi pˇr´ıklady - sn´ımky dan´eho objektu - a druh´y s negativn´ımi pˇr´ıklady - sn´ımky bez v´yskytu dan´eho objektu. Aplikace nab´ıdne uˇzivateli moˇznost volby tˇechto adres´aˇr˚u.

Pomoc´ı pˇr´ısluˇsn´eho tlaˇc´ıtka d´a uˇzivatel pokyn k pˇr´ıpravˇe na tr´enov´an´ı. Aplikace pro-vede kontrolu a naˇcte obrazov´e soubory ze zvolen´ych adres´aˇr˚u. O pˇr´ıpadn´ych probl´emech s naˇc´ıt´an´ım sn´ımk˚u je uˇzivatel informov´an prostˇrednictv´ım v´ypisu. Jakmile tato pˇr´ıprava skonˇc´ı, informuje aplikace uˇzivatele kolik bylo ´uspˇeˇsnˇe naˇcteno sn´ımk˚u.

D´ale aplikace nab´ıdne uˇzivateli volbu c´ıle, kam bude po dokonˇcen´ı tr´enov´an´ı uloˇzen v´ysledn´y klasifik´ator v podobˇe konfiguraˇcn´ıho souboru. Tr´enov´an´ı pak uˇzivatel spust´ı tla-ˇ

c´ıtkem. V pr˚ubˇehu tr´enov´an´ı budou zobrazov´any podrobn´e informace, napˇr. aktu´aln´ı chyba klasifik´atoru.

Jelikoˇz je tr´enov´an´ı dlouhodob´y proces, kter´y m˚uˇze trvat i na v´ykonn´em stroji nˇekolik dn´ı, pˇredpokl´ad´a se, ˇze do c´ılov´eho adres´aˇre budou pr˚ubˇeˇznˇe ukl´ad´any hotov´e ˇc´asti tr´

(20)

eno-Obr´azek 5.1: Blokov´e schema tr´enovac´ı ˇc´asti aplikace.

5.2

Nastaven´ı tr´

enov´

an´ı

Tr´enov´an´ı klasifik´atoru lze ovlivnit nˇekolika parametry, jako poˇcet st´adi´ı, c´ılov´y pod´ıl faleˇsnˇe pozitivn´ıch odezev, rozmˇery vzorku a dalˇs´ımi. Aplikace poskytne uˇzivateli pˇrehled o tˇechto parametrech a umoˇzn´ı mu tyto pˇred tr´enov´an´ım upravit dle potˇreby. Aplikace mus´ı kont-rolovat spr´avnost zadan´ych parametr˚u. V pˇr´ıpadˇe chybn´eho parametru upozorn´ı uˇzivatele a znemoˇzn´ı mu spuˇstˇen´ı tr´enov´an´ı, dokud nebude parametr zad´an spr´avnˇe.

5.3

Detekce

Detekˇcn´ı ˇc´ast aplikace slouˇz´ı k proveden´ı detekce objekt˚u v konkr´etn´ım obraze. Pouˇzije se zde jiˇz hotov´y natr´enovan´y klasifik´ator. Aplikace nab´ıdne uˇzivateli volbu soubor s konfigu-rac´ı klasifik´atoru a volbu vstupn´ıho obrazov´eho souboru. Prostˇrednictv´ım zvolen´eho kla-sifik´atoru jsou n´aslednˇe ve zvolen´em obraze detekov´any vˇsechny v´yskyty objekt˚u t´e tˇr´ıdy, na kter´e byl klasifik´ator nacviˇcen. Obraz je pak uˇzivateli zobrazen s vyznaˇcen´ım vˇsech zjiˇstˇen´ych pozic a jejich velikost´ı. Aplikace pro uˇzivatel˚uv pˇrehled uvede celkov´y poˇcet ob-jekt˚u detekovan´ych v obraze.

C´ılem t´eto ˇc´asti aplikace je umoˇznit uˇzivateli otestovat natr´enovan´y klasifik´ator na konkr´etn´ıch sn´ımc´ıch a ovˇeˇrit tak jeho spr´avn´e chov´an´ı. K testov´an´ı ´uspˇeˇsnosti detekce nad v´ıce sn´ımky je vhodn´e pouˇz´ıt ˇc´ast

”Testov´an´ı ´uspˇeˇsnosti“.

Obr´azek 5.2: Blokov´e schema detekˇcn´ı ˇc´asti aplikace.

5.4

Testov´

an´ı ´

uspˇ

snosti

Tato ˇc´ast slouˇz´ı k zmˇeˇren´ı ´uspˇeˇsnosti dan´eho klasifik´atoru. Mˇeˇren´ı se prov´ad´ı na mnoˇzinˇe testovac´ıch pozitivn´ıch pˇr´ıklad˚u. Pˇredpokl´ad´a se existence adres´aˇre s obrazov´ymi soubory,

(21)

na kter´ych m´a b´yt testov´an´ı provedeno. Uˇzivatel v aplikaci zvol´ı tento adres´aˇr a sou-bor s konfigurac´ı klasifik´atoru, kter´y m´a b´yt testov´an. Kliknut´ım na tlaˇc´ıtko je testov´an´ı spuˇstˇeno a po jeho skonˇcen´ı je uˇzivateli zobrazena informace o namˇeˇren´e ´uspˇeˇsnosti.

Zpracov´an´ı vˇetˇs´ıho mnoˇzstv´ı obrazov´ych dat m˚uˇze trvat delˇs´ı dobu. Proto bude v pr˚ u-bˇehu testov´an´ı zobrazena informace o postupu, aby uˇzivatel mˇel pˇrehled o poˇctu jiˇz zpra-covan´ych sn´ımk˚u a mohl odhadnout dobu zb´yvaj´ıc´ı do konce testov´an´ı.

Obr´azek 5.3: Blokov´e schema testov´an´ı ´uspˇeˇsnosti.

5.5

Vizualizace klasifik´

atoru

Tato funkce aplikace je urˇcena sp´ıˇse k v´yukov´ym nebo demonstraˇcn´ım ´uˇcel˚um. Slouˇz´ı k zn´azornˇen´ı toho, co je v´ysledkem cel´eho procesu tr´enov´an´ı klasifik´atoru. Zobraz´ı totiˇz vnitˇrn´ı stavbu kask´ady klasifik´atoru a zn´azorn´ı rozloˇzen´ı jednotliv´ych pˇr´ıznak˚u, tak jak budou pouˇzity pˇri detekci objekt˚u.

Aplikace si od uˇzivatele vyˇz´ad´a volbu souboru s konfigurac´ı klasifik´atoru. Po jeho naˇcten´ı nab´ıdne seznam jednotliv´ych st´adi´ı kask´ady, v kaˇzd´em st´adiu jednotliv´e klasifik´atory a pro kaˇzd´y z nich pˇr´ısluˇsn´e pˇr´ıznaky. Uˇzivatel m´a moˇznost mezi jednotliv´ymi st´adii, klasifik´atory a pˇr´ıznaky libovolnˇe pˇrep´ınat, pˇriˇcemˇz mu vˇzdy bude zobrazena vizualizace moment´alnˇe zvolen´eho pˇr´ıznaku a dalˇs´ı ´udaje jako lev´a a prav´a hodnota prvku rozhodovac´ıho stromu, prahov´a hodnota a v´ahy jednotliv´ych ˇc´ast´ı pˇr´ıznaku.

(22)

Kapitola 6

Implementace aplikace

Navrˇzenou aplikaci jsem implementoval v programovac´ım jazyce C++ s pouˇzit´ım knihovny OpenCV pro detekci objekt˚u v obraze a s pouˇzit´ım GUI knihovny wxWidgets pro realizaci uˇzivatelsk´eho rozhran´ı. Pro implementaci ˇc´asti

”Tr´enov´an´ı“ jsem pouˇzil zdrojov´y k´od pro-gramu haartraining, kter´y je dod´av´an s knihovnou OpenCV. Vˇsechny ˇc´asti, jichˇz nejsem autorem, byly pouˇzity v souladu s licenˇcn´ımi ujedn´an´ımi tˇechto ˇc´ast´ı.

Popsan´e ˇreˇsen´ı jsem zvolil kv˚uli m´e znalosti jazyka C++ a kv˚uli pˇredeˇsl´e kladn´e zku-ˇsenosti s knihovnou wxWidgets. Knihovnu OpenCV jsem zvolil na z´akladˇe doporuˇcen´ı ve-douc´ıho t´eto pr´ace.

V´yhodami zvolen´eho ˇreˇsen´ı jsou pˇrenositelnost k´odu mezi r˚uzn´ymi operaˇcn´ımi syst´emy a snadn´a pouˇzitelnost, pˇr´ıpadnˇe i moˇznost dalˇs´ıho rozˇs´ıˇren´ı. Aplikaci lze provozovat na majoritn´ıch operaˇcn´ıch syst´emech Linux, Windows a zˇrejmˇe i Mac OS X. Funkˇcnost byla ovˇeˇrena pouze pod operaˇcn´ım syst´emem Linux, ve kter´em byla aplikace vyv´ıjena, a ˇc´asteˇcnˇe pod syst´emem Windows.

6.1

Pouˇ

zit´

e n´

astroje

6.1.1 OpenCV

OpenCV (Open Source Computer Vision) je rozs´ahl´a volnˇe pouˇziteln´a knihovna zamˇeˇren´a na aplikace v oboru poˇc´ıtaˇcov´eho vidˇen´ı. Kromˇe mnoha jin´ych ´uˇcel˚u, ke kter´ym se pouˇz´ıv´a, ji lze vyuˇz´ıt k detekci objekt˚u v obraze. Pouˇzita byla knihovna OpenCV verze 1.0.0. Aktu´aln´ı verzi lze z´ıskat na URLhttp://opencvlibrary.sourceforge.net/.

6.1.2 Haartraining

Knihovna OpenCV je dod´av´ana se zdrojov´ym k´odem programu haartraining. Tento pro-gram slouˇz´ı k natr´enov´an´ı klasifik´atoru pomoc´ı nˇekter´e z variant algoritmu AdaBoost. Knihovna OpenCV samotn´a nedisponuje funkcemi pro tr´enov´an´ı klasifik´atoru. Aby vlastn´ı aplikace mohla uˇzivateli nab´ıdnout tuto funkcionalitu, vyuˇz´ıv´a pr´avˇe programu haartraining a jeho definovan´eho rozhran´ı.

6.1.3 wxWidgets

Knihovna wxWidgets je volnˇe pouˇziteln´y multiplatformn´ı n´astroj pro tvorbu grafick´eho uˇzivatelsk´eho rozhran´ı (GUI - Graphical user interface). Poskytuje jednotn´e aplikaˇcn´ı

(23)

roz-hran´ı (API - Application programming interface) a umoˇzˇnuje tak vytv´aˇret aplikace pro r˚uzn´e operaˇcn´ı syst´emy, aniˇz by bylo potˇreba pro kaˇzd´y syst´em ps´at odliˇsn´y zdrojov´y k´od. Pˇri v´yvoji aplikace byla pouˇzita knihovna wxWidgets (konkr´etnˇe wxGTK) verze 2.8.7. Aplikace je vˇsak pˇreloˇziteln´a i s niˇzˇs´ımi verzemi knihovny.

Knihovnu wxWidgets lze z´ıskat na URL http://www.wxwidgets.org/.

6.2

Popis vlastn´ı implementace

V t´eto podkapitole proberu jednotliv´e ˇc´asti aplikace a zp˚usob jejich implementace. Pouˇzit´e funkce a jin´e symboly jsou v textu vyznaˇceny zvl´aˇstn´ım zp˚usobem. V jejich n´azvech se lze orientovat podle poˇc´ateˇcn´ıch p´ısmen. V´ıce viz n´asleduj´ıc´ı tabulka.

prefix v´yznam

cv funkce knihovny OpenCV icv funkce programu haartraining

wx funkce nebo tˇr´ıda knihovny wxWidgets

jin´e vlastn´ı funkce nebo standardn´ı funkce C/C++

Tabulka 6.1: V´yznamy poˇc´ateˇcn´ıch p´ısmen (prefix˚u) v n´azvech symbol˚u.

6.2.1 Tr´enovac´ı ˇc´ast

Tato ˇc´ast vyuˇz´ıv´a rozhran´ı programu haartraining k vytvoˇren´ı konfiguraˇcn´ıch soubor˚u tr´enovac´ı mnoˇziny a ke spuˇstˇen´ı tr´enov´an´ı, jehoˇz v´ystupem je konfiguraˇcn´ı soubor kla-sifik´atoru. Program haartraining vyˇzaduje k tr´enov´an´ı data tr´enovac´ı mnoˇziny, ale ne-umoˇzˇnuje pouˇz´ıt pˇr´ımo adres´aˇre s obrazov´ymi soubory. Je potˇreba vytvoˇrit dva pomocn´e soubory - VEC soubor pro pozitivn´ı pˇr´ıklady a BG soubor pro negativn´ı pˇr´ıklady.

VEC soubor obsahuje pˇredzpracovan´e vzorky pozitivn´ıch pˇr´ıklad˚u. Dˇel´ı se na hlaviˇcku s ´udaji o sv´em obsahu a tˇelo, kter´e obsahuje vzorky pozitivn´ıch pˇr´ıklad˚u, napˇr. sn´ımky obliˇcej˚u. Tyto vzorky jsou vytvoˇreny z p˚uvodn´ıch sn´ımk˚u jejich pˇreveden´ım do ˇsed´e ˇsk´aly a zmenˇsen´ım na poˇzadovan´e rozmˇery. Rozmˇery vzork˚u postaˇcuj´ı velmi mal´e, napˇr´ıklad jen 20×20 pixel˚u (lze nastavit). D´ıky tomu je VEC soubor i pˇri velk´em mnoˇzstv´ı sn´ımk˚u relativnˇe mal´y. Pro z´apis vzork˚u vyuˇz´ıv´am dvou funkc´ı z rozhran´ı programu haartraining - funkce icvWriteVecHeader zap´ıˇse hlaviˇcku a icvWriteVecSample zap´ıˇse konkr´etn´ı vzorek. Cel´y postup vytvoˇren´ı VEC souboru, od z´ısk´an´ı seznamu soubor˚u, pˇres jejich pˇrevod a zmˇenu velikosti, aˇz po z´apis, obstar´av´a vlastn´ı funkce MakeVecFile. Jako argumenty tato funkce pˇrij´ım´a cestu k adres´aˇri s pozitivn´ımi pˇr´ıklady, cestu k v´ysledn´emu VEC souboru a poˇzadovan´e rozmˇery vzork˚u.

BG soubor obsahuje v´yˇcet soubor˚u adres´aˇre s negativn´ımi pˇr´ıklady. Oproti bin´arn´ımu VEC souboru je v textov´em form´atu. K vytvoˇren´ı BG souboru slouˇz´ı vlastn´ı funkce Make-BgFile. Ta ze zadan´eho adres´aˇre z´ısk´a seznam soubor˚u, ovˇeˇr´ı, zda jde o obrazov´e soubory, a do v´ystupn´ıho souboru zaznamen´a jejich cesty. Argumenty t´eto funkce jsou pouze cesta k adres´aˇri s negativn´ımi pˇr´ıklady a cesta k v´ystupn´ımu BG souboru.

(24)

e-cesty k pˇripraven´ym VEC a BG soubor˚um. D´ale funkce pˇrij´ım´a velk´e mnoˇzstv´ı jin´ych argu-ment˚u ovlivˇnuj´ıc´ıch pr˚ubˇeh tr´enov´an´ı. Tˇemito parametry jsou zejm´ena poˇcet pozitivn´ıch a negativn´ıch pˇr´ıklad˚u, poˇcet st´adi´ı tr´enov´an´ı, rozmˇery vzork˚u ve VEC souboru, c´ılov´y pomˇer faleˇsnˇe pozitivn´ıch odezev, varianta algoritmu AdaBoost, sada Haarov´ych pˇr´ıznak˚u a dalˇs´ı. Vˇsechny parametry je moˇzn´e nastavit v grafick´em rozhran´ı aplikace v ˇc´asti

”Nastaven´ı tr´enov´an´ı“. Funkci jsou pak tyto parametry pˇred´any pˇri jej´ım zavol´an´ı.

Funkce cvCreateTreeCascadeClassifier spouˇst´ı proces tr´enov´an´ı. Bˇehem nˇej jsou funkc´ı printf pr˚ubˇeˇznˇe tisknuty informace na standardn´ı v´ystup. Aby mohly b´yt tyto informace m´ısto standardn´ıho v´ystupu zobrazeny v oknˇe vlastn´ı aplikace, musel jsem m´ırnˇe zas´ahnout do zdrojov´ych k´od˚u programu haartraining. Do dvou soubor˚u jsem pˇridal definici makra C++ prekompil´atoru, kter´e pˇri kompilaci pˇrep´ıˇse vol´an´ı standardn´ı funkce printf na vol´an´ı m´e vlastn´ı pˇripraven´e funkce MyPrintf. Tato funkce se star´a o pˇred´av´an´ı veˇsker´eho v´ystupu do pˇr´ısluˇsn´e komponenty wxTextCtrl.

Prost´e zavol´an´ı tak n´aroˇcn´e funkce jako cvCreateTreeCascadeClassifier nen´ı v grafick´e aplikaci vhodn´e. Doˇslo by k pˇreruˇsen´ı zpracov´av´an´ı veˇsker´ych ud´alost´ı rozhran´ı a aplikace by dlouhou dobu nereagovala na uˇzivatelsk´e vstupy ani by nedoch´azelo k pˇrekreslov´an´ı jej´ıho okna. Tento probl´em jsem se rozhodl vyˇreˇsit vyhrazen´ım nov´eho vl´akna v bˇeˇz´ıc´ı aplikaci pouze pro potˇreby tr´enovac´ı funkce. Vl´akno je definov´ano jako vlastn´ı tˇr´ıda odvozen´a z tˇr´ıdy wxThread. Vytvoˇreno a spuˇstˇeno je pˇri kaˇzd´em tr´enov´an´ı. Kdyˇz tr´enov´an´ı skonˇc´ı, vl´akno samo zanikne a uvoln´ı vyuˇzit´e prostˇredky. Pozastaven´ı ani pˇreruˇsen´ı bˇeˇz´ıc´ıho vl´akna jsem vˇsak neimplementoval, aˇckoliv by to bylo velmi uˇziteˇcn´e. Implementace tˇechto funkc´ı by totiˇz vyˇzadovala vˇetˇs´ı z´asah do zdrojov´ych k´od˚u programu haartraining nebo ´uplnˇe jin´y pˇr´ıstup.

6.2.2 Detekˇcn´ı ˇc´ast

Detekˇcn´ı ˇc´ast aplikace vykon´av´a detekci objekt˚u v dan´em obraze. K ˇcinnosti je potˇreba natr´enovan´y klasifik´ator. Soubor s konfigurac´ı klasifik´atoru je nejdˇr´ıve naˇcten funkc´ı Lo-adClassifier, kter´a jen zapouzdˇruje funkci cvLoad. D´ale mus´ı b´yt naˇcten samotn´y obraz, coˇz je provedeno funkc´ı cvLoadImage. Detekce objekt˚u je pak vyvol´ana vlastn´ı funkc´ı De-tectObjects, kter´a pˇri ´uspˇechu vr´at´ı souˇradnice vˇsech nalezen´ych objekt˚u. Do obrazu tyto souˇradnice vyznaˇc´ı v podobˇe obd´eln´ık˚u funkce DrawRectangles. V´ysledn´y obraz je nakonec zobrazen uˇzivateli v oknˇe odvozen´em od tˇr´ıdy wxScrolledWindow.

V t´eto ˇc´asti aplikace je z´asadn´ı funkce DetectObjects. V p˚uvodn´ım n´avrhu aplikace se poˇc´ıtalo s vlastn´ı implementac´ı detekce objekt˚u postupn´ym pr˚uchodem obrazu, ale zvo-len´a knihovna OpenCV disponuje jednoduˇse pouˇzitelnou funkc´ı cvHaarDetectObjects, kter´a tento ´ukon jiˇz implementuje. Funkce DetectObjects tedy jen vytv´aˇr´ı podm´ınky pro pouˇzit´ı knihovn´ı funkce (pˇriprav´ı poˇzadovan´e promˇenn´e, struktury, alokuje a uvoln´ı pamˇet’), vol´a tuto funkci s pˇrednastaven´ymi parametry a v´ystup, tedy seznam souˇradnic, pˇred´av´a do snadno zpracovateln´eho C++ typu vector.

Pˇrednastaven´ymi parametry funkce cvHaarDetectObjects jsou pomˇer podvzorkov´an´ı ob-razu, minim´aln´ı poˇcet soused˚u detekovan´ych oblast´ı pro vyˇrazen´ı nˇekolikan´asobn´e detekce stejn´eho objektu v r˚uzn´ych mˇeˇr´ıtk´ach a zapnut´ı ˇci vypnut´ı detektoru hran, kter´y pˇredch´az´ı oblastem v obraze s pˇr´ıliˇs ˇclenitou strukturou.

Vlastn´ı funkce DetectObjects ve sv´em tˇele vstupn´ı obraz pˇrevzorkuje na poloviˇcn´ı veli-kost. Dle OpenCV manu´alu [7] je d´ıky tomu moˇzn´e zv´yˇsit rychlost detekce.

Jako argumenty funkce DetectObjects pˇrij´ım´a ukazatel na naˇcten´y klasifik´ator, ukazatel na vstupn´ı obraz a ukazatel na vector pro zaznamen´an´ı z´ıskan´ych souˇradnic.

(25)

6.2.3 C´ˇast testov´an´ı ´uspˇeˇsnosti

Testov´an´ı ´uspˇeˇsnosti klasifik´atoru je zaloˇzeno na proveden´ı detekce nad mnoˇzinou pozi-tivn´ıch testovac´ıch pˇr´ıklad˚u. Mˇeˇr´ı se poˇcet sn´ımk˚u, v nichˇz byl detekov´an pr´avˇe jeden ob-jekt (obliˇcej). ´Uspˇeˇsnost klasifik´atoru je pak d´ana pomˇerem celkov´eho poˇctu sn´ımk˚u k poˇctu spr´avnˇe detekovan´ych sn´ımk˚u.

Implementace t´eto ˇc´asti aplikace je podobn´a ˇc´asti

”Detekce“. Nejdˇr´ıve je naˇcten dan´y klasifik´ator, opˇet pomoc´ı funkce LoadClassifier. D´ale je z´ısk´an seznam vˇsech soubor˚u v ad-res´aˇri s testovac´ımi sn´ımky a na kaˇzd´em z nich se provede detekce funkc´ı DetectObjects, kter´a vrac´ı poˇcet detekovan´ych objekt˚u. Z´aroveˇn je mˇeˇrena statistika ´uspˇeˇsnosti detekce, jak byla vysvˇetlena v tomto textu v´yˇse.

6.2.4 C´ˇast vizualizace klasifik´atoru

V t´eto ˇc´asti aplikace je ´ukolem zn´azornit vnitˇrn´ı strukturu souboru s konfigurac´ı natr´ e-novan´eho klasifik´atoru. Tento soubor je programem haartraining ukl´ad´an v obecn´em XML form´atu. K z´ısk´an´ı struktury klasifik´atoru je potˇreba tento soubor pˇreˇc´ıst a obsah vhodn´ym zp˚usobem interpretovat. Nemus´ıme k tomu vˇsak pouˇz´ıt dalˇs´ı knihovnu pro zpracov´an´ı XML soubor˚u. Knihovna OpenCV m´a vestavˇen potˇrebn´y interpret, coˇz vlastnˇe vypl´yv´a i z toho, ˇ

ze um´ı klasifik´ator z XML souboru naˇc´ıst a zpracovat sama. Tuto funkcionalitu skr´yv´a v´ıce´uˇcelov´a funkce cvLoad, kter´a dan´y XML soubor naˇcte do pˇredem definovan´ych da-tov´ych struktur. Odtud je jiˇz moˇzn´e z´ıskat popis klasifik´atoru pˇr´ımoˇcaˇre. Jednotliv´e datov´e struktury jsou zdokumentov´any v manu´alu OpenCV [7] a z´ıskan´ı jejich ´udaj˚u je jen ot´azkou pˇr´ıstupu k z´aznam˚um a pol´ım.

Kask´adov´y klasifik´ator se v OpenCV skl´ad´a ze st´adi´ı, st´adium z jednotliv´ych klasi-fik´ator˚u a klasifik´ator z Haarov´ych pˇr´ıznak˚u. Jednotliv´a st´adia jsou z´ısk´ana ze struktury Cv-HaarClassifierCascade, jednotliv´e klasifik´atory pˇr´ısluˇsn´e kask´ady nab´ızi struktura CvHaar-StageClassifier, Haarovy pˇr´ıznaky klasifik´atoru jsou k nalezen´ı ve struktuˇre CvHaarClas-sifier a konkr´etn´ı ˇc´asti jednoho pˇr´ıznaku obsahuje struktura CvHaarFeature. Informacemi z tˇechto struktur jsou naplnˇeny ovladateln´e prvky wxList, z kter´ych si uˇzivatel m˚uˇze vyb´ırat poloˇzky.

Vizualizace Haarov´ych pˇr´ıznak˚u spoˇc´ıv´a v naˇcten´ı ´udaj˚u konkr´etn´ıho pˇr´ıznaku a jejich pˇreveden´ı do grafick´e formy. O kaˇzd´em pˇr´ıznaku jsou v pˇr´ısluˇsn´ych struktur´ach zazna-men´any souˇradnice, velikosti a v´ahy jeho d´ılˇc´ıch obd´eln´ık˚u. Obd´eln´ıky m˚uˇzou b´yt dva nebo tˇri. D´ale jsou k pˇr´ıznak˚um vedeny informace o jejich pootoˇcen´ı o 45◦, tedy zda jsou dia-gon´aln´ı ˇci nikoliv. Vˇsechny tyto informace kromˇe v´ahy (ta nen´ı pro vizualizaci potˇrebn´a) jsou vyuˇzity vlastn´ı funkc´ı DrawFeature k zakreslen´ı obd´eln´ık˚u do rastrov´eho obrazu. Kres-len´ı je umoˇznˇeno prov´est v libovoln´em mˇeˇr´ıtku. Funkce DrawFeature vrac´ı obraz dan´ych rozmˇer˚u jako objekt tˇr´ıdy wxBitmap. Obraz je v aplikaci d´ale zobrazen v oknˇe odvozen´em od tˇr´ıdy wxScrolledWindow.

(26)

Kapitola 7

Testov´

an´ı

Na implementovan´e aplikaci nyn´ı pˇredstav´ım proveden´e testov´an´ı. Jedn´a se o srovn´an´ı dvou detektor˚u: jednoho s pouˇzit´ım kask´ady klasifik´ator˚u a druh´eho bez t´eto kask´ady. C´ılem bylo ovˇeˇrit, zda kask´ada v praxi opravdu pˇrin´aˇs´ı znatelnˇe vyˇsˇs´ı rychlost detekce, a pˇr´ıpadnˇe zmˇeˇrit, jak je toto zrychlen´ı velik´e.

7.1

Podm´ınky tr´

enov´

an´ı

Tr´enovac´ı mnoˇzina zvolen´a k tr´enov´an´ı obsahovala asi 2400 pozitivn´ıch pˇr´ıklad˚u obliˇcej˚u o rozmˇerech 19 x 19 pixel˚u a zhruba 23500 negativn´ıch pˇr´ıklad˚u o stejn´ych rozmˇerech. Tento t´emˇeˇr desetin´asobn´y poˇcet negativn´ıch pˇr´ıklad˚u jsem zvolil z toho d˚uvodu, ˇze v dobˇe tes-tov´an´ı jsem nemˇel k dispozici jinou datab´azi sn´ımk˚u s vˇetˇs´ım rozliˇsen´ım. Jinak by postaˇcilo napˇr´ıklad asi 4000 aˇz 5000 negativn´ıch pˇr´ıklad˚u s rozliˇsen´ım 384 x 288 pixel˚u.

Pˇred samotn´ym tr´enov´an´ım bylo nutn´e nastavit parametry obou detektor˚u a krit´erium ukonˇcen´ı tr´enov´an´ı. Pˇri volbˇe parametr˚u jsem vych´azel z pˇrednastaven´ych hodnot pro-gramu haartraining. Pro oba detektory jsem zvolil jako boostingov´y algoritmus obecnˇe doporuˇcovan´y Gentle AdaBoost, mnoˇzinu Haarov´ych pˇr´ıznak˚u jsem nastavil na svisl´e a vodorovn´e (diagon´aln´ı pˇr´ıznaky se projevily jako podstatnˇe n´aroˇcnˇejˇs´ı na v´ykon poˇc´ıtaˇce), rozmˇery detekˇcn´ıho okna jsem nastavil na 19 x 19 pixel˚u (cel´a tr´enovac´ı mnoˇzina je v tomto rozliˇsen´ı), povolil jsem optimalizaci pro symetrick´e objekty (obliˇceje lze povaˇzovat za syme-trick´e) a zbyl´e parametry jsem ponechal ve v´ychoz´ım nastaven´ı.

Krit´eria pro ukonˇcen´ı tr´enov´an´ı byla nastavena s c´ılem dosaˇzen´ı pˇribliˇznˇe stejn´e ´uspˇeˇ s-nosti detekce obou detektor˚u. Prvn´ı detektor jsem tedy nastavil tak, aby pomˇer faleˇsnˇe pozitivn´ıch odezev v kaˇzd´em st´adiu byl menˇs´ı jak 0,5 a poˇcet st´adi´ı jsem zvolil 10. To by mˇelo ve v´ysledku d´at detektor s pomˇerem faleˇsnˇe pozitivn´ıch odezev minim´alnˇe 0,510, tedy 0,000976562. Nejde o ˇz´adnou vysokou pˇresnost, pro testov´an´ı vˇsak postaˇcuje. Druh´y detektor byl nastaven pro vytvoˇren´ı jedin´eho st´adia s t´ım, ˇze by tr´enov´an´ı mˇelo v tomto st´adiu dos´ahnout stejn´eho pomˇeru faleˇsnˇe pozitivn´ıch odezev jako cel´a kask´ada prvn´ıho detektoru.

Tr´enov´an´ı jsem provozoval na poˇc´ıtaˇci s procesorem Intel Celeron M 1,3 GHz a operaˇcn´ı pamˇet´ı 512 MB. Pro tr´enov´an´ı detektoru nejde o pˇr´ıliˇs vhodnou konfiguraci. K dispozici jsem sice mˇel v´ykonnˇejˇs´ı stroj, ale na nˇem se mi nepodaˇrilo tr´enovac´ı aplikaci vˇcas zprovoznit.

(27)

7.2

Pr˚

ubˇ

eh tr´

enov´

an´ı

Tr´enov´an´ı prvn´ıho detektoru s kask´adami bylo v pozdˇejˇs´ıch st´adi´ıch problematick´e. Jak se dalo oˇcek´avat, pot´ykal jsem se pˇredevˇs´ım s nedostateˇcn´ym v´ykonem poˇc´ıtaˇce a nedostat-kem operaˇcn´ı pamˇeti. Vlivem toho byl postup v tr´enov´an´ı pomal´y. Pˇredevˇs´ım ve f´az´ıch mezi st´adii, kde tr´enovac´ı algoritmus zpracov´aval sn´ımky, doch´azelo k ne´unosnˇe dlouh´ym prodlev´am. Po pˇreruˇsen´ı a opˇetovn´em spuˇstˇen´ı tr´enov´an´ı od m´ısta pˇreruˇsen´ı vˇsak k ˇz´adn´e prodlevˇe jiˇz nedoˇslo. Pˇr´ıˇcinu se mi nepodaˇrilo objasnit. Nicm´enˇe i pˇresto jsem tr´enov´an´ı dokonˇcil. Jen pro zaj´ımavost uv´ad´ım, ˇze doba zpracov´an´ı negativn´ıch pˇr´ıklad˚u se s kaˇzd´ym nov´ym st´adiem zdvojn´asobovala a v des´at´em st´adiu dosahovala t´emˇeˇr 4 hodin. Pro dalˇs´ı dvˇe st´adia by jen toto zpracov´an´ı trvalo t´emˇeˇr cel´y den. A v tomto ˇcase jeˇstˇe nen´ı zapoˇcteno samotn´e tr´enov´an´ı.

Abych tr´enov´an´ı urychlil, experimentoval jsem s niˇzˇs´ım poˇctem negativn´ıch pˇr´ıklad˚u (st´ale na stejn´e mnoˇzinˇe sn´ımk˚u 19 x 19 pixel˚u), ale v tomto pˇr´ıpadˇe tr´enov´an´ı pravidelnˇe selh´avalo, protoˇze algoritmus po nˇejak´e dobˇe jiˇz nenal´ezal dobr´e slab´e klasifik´atory, kter´e by d´ale minimalizovaly chybu detektoru.

Tr´enov´an´ı druh´eho detektoru bez kask´ady bylo podstatnˇe rychlejˇs´ı a bezprobl´emov´e. Doˇslo zde jen k jednomu zpracov´an´ı negativn´ıch pˇr´ıklad˚u (pokud nepoˇc´ıt´am z´avˇereˇcn´e mˇeˇren´ı pˇresnosti detektoru), takˇze probl´emy spojen´e s tr´enov´an´ım prvn´ıho detektoru se nestihly projevit. Bˇehem tr´enov´an´ı byly st´ale nal´ez´any nov´e slab´e klasifik´atory a chyba ´

uspˇeˇsnˇe klesala aˇz pod stanovenou mez.

Pokud zanedb´am zm´ınˇen´e pot´ıˇze s prvn´ım detektorem, trvalo jeho natr´enov´an´ı odhadem asi 16 hodin. Druh´y detektor se podaˇrilo na stejn´em stroji natr´enovat bez pˇreruˇsov´an´ı za necel´e 4 hodiny.

7.3

ysledn´

e detektory

V´ysledky tr´enov´an´ı jsou pops´any v tabulce 7.1. Sloupec HR (hit rate) v tabulce oznaˇcuje pomˇer kladn´ych odezev pro pozitivn´ı pˇr´ıklady tr´enovac´ı mnoˇziny (ide´alnˇe 1,0) a sloupec FA (false alarm rate) oznaˇcuje pomˇer faleˇsnˇe pozitivn´ıch odezev pro negativn´ı pˇr´ıklady tr´enovac´ı mnoˇziny (ide´alnˇe 0,0).

detektor st´adi´ı pˇr´ıznak˚u HR FA ˇcas tr´enov´an´ı 1. s kask´adou 10 89 0,958419 0,000127269 16h? 2. bez kask´ady 1 43 0,995060 0,000593915 4h

Tabulka 7.1: V´ysledn´e parametry tr´enovan´ych detektor˚u.

V tabulce stoj´ı za povˇsimnut´ı rozd´ıl v pomˇeru kladn´ych odezev (HR), na nˇejˇz m´a vliv pouˇzit´ı kask´ady klasifik´ator˚u. Pˇred tr´enov´an´ım byl nastaven tento pomˇer na minim´aln´ı poˇzadovanou hodnotu 0,995. Detektoru bez kask´ady se tento poˇzadavek podaˇrilo dodrˇzet, protoˇze po celou dobu tr´enov´an´ı pracoval s kompletn´ı tr´enovac´ı mnoˇzinou a algoritmus mohl vyb´ırat nov´e pˇr´ıznaky s ohledem na dodrˇzen´ı t´eto hodnoty. Detektor s kask´adou ovˇsem tento pomˇer nedodrˇzel. Je to d´ano t´ım, ˇze pˇri vytv´aˇren´ı nov´ych st´adi´ı kask´ady doch´az´ı k redukci tr´enovac´ı mnoˇziny. Jakmile dˇr´ıvˇejˇs´ı st´adia nˇejak´y pˇr´ıklad klasifikuj´ı z´apornˇe, je

(28)

kumuluje a v pozdˇejˇs´ıch st´adi´ıch ji nelze ovlivnit ani t´ım nejlepˇs´ım v´ybˇerem pˇr´ıznak˚u. Odliˇsn´e hodnoty dosaˇzen´ych pomˇer˚u faleˇsnˇe pozitivn´ıch odezev (FA) jsou d´any jen t´ım, jak´e se podaˇrilo nal´ezt posledn´ı pˇr´ıznaky pˇred dosaˇzen´ım krit´eria pro ukonˇcen´ı tr´enov´an´ı.

D´ale tabulka 7.1 ukazuje poˇcty st´adi´ı, kter´e odpov´ıdaj´ı nastaven´ym parametr˚um, a celkov´e mnoˇzstv´ı pˇr´ıznak˚u v detektorech. Prozkoum´an´ı pˇr´ıznak˚u ve vizualizaˇcn´ı ˇc´asti im-plementovan´e aplikace uk´azalo, ˇze pˇr´ıznaky v prvn´ım st´adiu detektoru s kask´adou pˇresnˇe odpov´ıdaj´ı prvn´ım pˇr´ıznak˚u detektoru bez kask´ady. Ze zaˇc´atku totiˇz prob´ıhalo tr´enov´an´ı obou detektor˚u na stejn´e kompletn´ı tr´enovac´ı mnoˇzinˇe. Dalˇs´ı pˇr´ıznaky se jiˇz vz´ajemnˇe liˇs´ı, protoˇze detektor s kask´adou byl od druh´eho st´adia tr´enov´an na redukovan´e mnoˇzinˇe.

7.4

Uk´

azka detekce

Na n´asleduj´ıc´ım sn´ımku je uk´azka v´ystupu detekce obliˇcej˚u na skupinov´e fotografii. Vlevo je v´ystup detektoru s kask´adou a vpravo v´ystup detektoru bez kask´ady. Na sn´ımku vpravo je vidˇet vˇetˇs´ı mnoˇzstv´ı faleˇsnˇe pozitivn´ıch odezev (d´ano t´emˇeˇr 5× vyˇsˇs´ım pomˇerem faleˇsnˇe pozitivn´ıch odezev tohoto detektoru).

Obr´azek 7.1: Uk´azka v´ystupu detektor˚u (zdroj p˚uvodn´ıho sn´ımku: Bao Face Database)

7.5

Testovac´ı sady

K otestov´an´ı detektor˚u jsem pouˇzil tˇri r˚uzn´e sady pozitivn´ıch pˇr´ıklad˚u. Pro vˇsechny sady plat´ı, ˇze na kaˇzd´em sn´ımku je pr´avˇe jeden obliˇcej.

• Sada A - 149 barevn´ych sn´ımk˚u, t´emˇeˇr ˇz´adn´e pozad´ı, pr˚umˇernˇe cca 170×170 pixel˚u • Sada B - 1521 ˇsedot´onov´ych sn´ımk˚u, 384×286 pixel˚u

• Sada C - 450 barevn´ych sn´ımk˚u, mnoho pozad´ı, 896×592 pixel˚u

7.6

Uspˇ

´

snost detektor˚

u

Zde pro zaj´ımavost uv´ad´ım orientaˇcn´ı ´uspˇeˇsnosti detektor˚u zmˇeˇren´e v implementovan´e aplikaci na zm´ınˇen´ych testovac´ıch sad´ach (viz tabulka 7.2). Za ´uspˇeˇsnˇe detekovan´y sn´ımek byl povaˇzov´an takov´y, v nˇemˇz byl nalezen pr´avˇe jeden objekt. Nejde o nijak pˇresn´y zp˚usob

(29)

mˇeˇren´ı, protoˇze detektor m˚uˇze ve sn´ımku detekovat i nˇeco, co ve skuteˇcnosti nen´ı obliˇcej, ale vˇeˇr´ım, ˇze namˇeˇren´e v´ysledky se bl´ıˇz´ı pravdˇe alespoˇn ve vz´ajemn´ych vztaz´ıch.

´

Uspˇeˇsnost jsem mˇeˇril jednou s podvzorkov´an´ı vˇsech sn´ımk˚u na poloviˇcn´ı rozmˇery a podruh´e bez tohoto podvzorkov´an´ı s p˚uvodn´ımi rozmˇery sn´ımk˚u.

V´ysledky v tabulce ukazuj´ı, ˇze oba detektory jsou na tom s ´uspˇeˇsnost´ı vˇetˇsinou podobnˇe. Za n´ızkou ´uspˇeˇsnost u sady C m˚uˇze pˇr´ıtomnost vˇetˇs´ıch oblast´ı s pozad´ım ve sn´ımc´ıch, kde se projevuj´ı faleˇsnˇe pozitivn´ı odezvy detektor˚u. D´ale je ve v´ysledc´ıch vidˇet, ˇze podvzorkov´an´ı sn´ımk˚u na poloviˇcn´ı rozmˇery pom´ah´a lepˇs´ı detekci. Zˇrejmˇe je to zp˚usobeno ztr´atou ˇc´asti informac´ı z podvzorkovan´eho obrazu.

testovac´ı sada s podvzorkov´an´ım bez podvzorkov´an´ı s kask´adou bez kask´ady s kask´adou bez kask´ady

Sada A 42 % 48 % 52 % 43 %

Sada B 56 % 47 % 33 % 12 %

Sada C 30 % 12 % 1 % 0 %

Tabulka 7.2: V´ysledn´e ´uspˇeˇsnosti detektor˚u zmˇeˇren´e na testovac´ıch sad´ach s a bez podvzor-kov´an´ı sn´ımk˚u na poloviˇcn´ı rozmˇery.

7.7

Rychlost v detekci

Na z´avˇer pˇredstav´ım v´ysledky mˇeˇren´ı rychlosti detekce (tabulka 7.3). Tyto v´ysledky pro-k´azaly, ˇze v praxi dosahuje detektor s kask´adou skuteˇcnˇe vyˇsˇs´ı rychlosti detekce. Pr˚umˇernˇe detektor s kask´adou detekoval 1, 35× rychleji, neˇz detektor bez kask´ady.

V tabulce byly namˇeˇren´e doby detekce pˇrepoˇc´ıt´any na poˇcet sn´ımk˚u za vteˇrinu a kv˚uli r˚uzn´ym velikostem sn´ımk˚u testovac´ıch sad tak´e na poˇcet megapixel˚u za vteˇrinu (Mpx/s).

testovac´ı sada rozmˇery sn´ımku s kask´adou bez kask´ady sn´ımk˚u/s Mpx/s sn´ımk˚u/s Mpx/s

Sada A cca 170×170 px 53,2 1,5 48,1 1,4

Sada B 384×286 px 25,1 2,8 18,8 2,1

Sada C 896×592 px 5,2 2,8 3,2 1,7

(30)

Kapitola 8

avˇ

er

Navrhovan´a aplikace byla ´uspˇeˇsnˇe implementov´ana a vˇsechny jej´ı ˇc´asti odzkouˇseny. Apli-kace je plnˇe funkˇcn´ı, vˇse co bylo navrˇzeno, se podaˇrilo vˇcas implementovat a v r´amci t´eto v´yvojov´e etapy nez˚ustala ˇz´adn´a ˇc´ast nedokonˇcen´a.

V aplikaci by samozˇrejmˇe ˇslo navrhnout a implementovat celou ˇradu dalˇs´ıch rozˇs´ıˇren´ı. V budouc´ı pr´aci bych se tak mohl pokusit napˇr´ıklad o vytvoˇren´ı n´astroje pro pˇr´ıpravu tr´enovac´ıch dat. Jednalo by se o souˇc´ast aplikace umoˇzˇnuj´ıc´ı vytvoˇrit z dostupn´ych sn´ımk˚u sadu v´yˇrez˚u konkr´etn´ıho objektu. Vˇetˇsinou se totiˇz nepodaˇr´ı k tr´enov´an´ı z´ıskat nebo vy-tvoˇrit sn´ımky, kter´e by obsahovaly pouze dan´y objekt bez ruˇsiv´eho pozad´ı. Dalˇs´ım rozˇs´ıˇren´ım by mohla b´yt hloubˇeji propracovan´a ˇc´ast

”Testov´an´ı ´uspˇeˇsnosti“. Tato ˇc´ast by dispono-vala nastaviteln´ymi parametry, napˇr. kolik v´yskyt˚u objektu se pˇredpokl´ad´a na testovac´ıch sn´ımc´ıch. Tak´e by pˇriˇsel vhod detailn´ı popis v´ysledk˚u testov´an´ı, napˇr. toho, v kter´ych konkr´etn´ıch sn´ımc´ıch testovac´ı sady detektor selhal. Dalˇs´ı rozˇs´ıˇren´ı by se mohlo t´ykat detekˇcn´ı ˇc´asti aplikace a jej´ıho vybaven´ı ovl´adac´ım prvkem pro rychl´e pˇrep´ın´an´ı mezi sn´ımky v aktu´aln´ım adres´aˇri. Nˇekdy je potˇreba kontrolovat ´uspˇeˇsnost detektoru manu´alnˇe prohl´ıˇzen´ım jeho v´ystup˚u na v´ıce sn´ımc´ıch. Souˇcasn´a jedin´a cesta volby vstupn´ıho sn´ımku pˇres dialog v´ybˇeru souboru je pro tyto ´uˇcely pˇr´ıliˇs pomal´a. Posledn´ı rozˇs´ıˇren´ı, kter´e zm´ın´ım, spad´a do jin´e kategorie. Jednalo by se o modifikaci detekˇcn´ıho algoritmu umoˇzˇnuj´ıc´ı dete-kovat obliˇceje ˇci jin´e objekty v poloh´ach, s jak´ymi p˚uvodn´ı detektor nepoˇc´ıt´a. Napˇr´ıklad detekce obliˇcej˚u naklonˇen´ych o r˚uzn´e ´uhly m˚uˇze b´yt zaj´ımav´ym n´amˇetem k ˇreˇsen´ı.

(31)

Literatura

[1] Florian A. How-to build a cascade of boosted classifiers based on Haar-like features [online], 2003-09-02. Dostupn´e na URL

http://robotik.inflomatik.info/other/opencv/OpenCV ObjectDetection HowTo.pdf (duben 2008).

[2] Hjelm˚as E., Lerøy C. B., Johansen H. Detection and Localization of Human Faces in the ICI System: A First Attempt [online]. Report #6, pages 2–3. Gjøvik College, 1998. Dostupn´e na URL http://www.ansatt.hig.no/erikh/papers/hig98 6.pdf (kvˇeten 2008). [3] Hradiˇs M. AdaBoost v poˇc´ıtaˇcov´em vidˇen´ı. Diplomov´a pr´ace, ´Ustav poˇc´ıtaˇcov´e grafiky

a multim´edi´ı FIT VUT v Brnˇe, 2007. Vedouc´ı diplom. pr´ace Ing. Igor Pot´uˇcek, Ph.D. [4] Viola P., Jones M. Rapid object detection using a boosted cascade of simple features. In IEEE Computer Society Conference on Computer Vision and Pattern Recognition, pages 511–518, 2001. ISSN 1063-6919, ISBN 0-7695-1272-0.

[5] Adaboost. Wikipedia: The Free Encyclopedia [online]. Dostupn´e na URL http://en.wikipedia.org/wiki/AdaBoost (kvˇeten 2008).

[6] Statistical classification. Wikipedia: The Free Encyclopedia [online]. Dostupn´e na URL http://en.wikipedia.org/Statistical classification (kvˇeten 2008).

[7] OpenCV Reference Manual [online]. Dostupn´e na URL http://opencvlibrary.sourceforge.net (kvˇeten 2008).

(32)

Seznam zkratek

AdaBoost Adaptive boosting

API Application programming interface BG Background file

FA False alarm rate

GTK GIMP Toolkit

GUI Graphical user interface

HR Hit rate

OpenCV Open Source Computer Vision URL Uniform resource locator VEC Vector file

(33)

Seznam pˇ

r´ıloh

A N´avod k pouˇzit´ı aplikace B Sn´ımky aplikace

(34)

r´ıloha A

Kompilace a spuˇ

stˇ

en´ı

Aplikaci je moˇzn´e zprovoznit na syst´emech Windows, Linux a ´udajnˇe i Mac OS X (nebylo vyzkouˇseno). Tyto syst´emy jsou podporov´any knihovnami OpenCV a wxWidgets souˇcasnˇe. S aplikac´ı je dod´av´an Makefile, ale pouze pro operaˇcn´ı syst´emy Linux. Pro ostatn´ı syst´emy bude nutn´e Makefile nejdˇr´ıve vyrobit, napˇr´ıklad s pomoc´ı n´astroje Bakefile.

Vyˇzadov´any jsou nainstalovan´e knihovny OpenCV verze 1.0.0 a wxWidgets nejl´epe verze 2.8.7. Pro zkompilov´an´ı pod syst´emem Linux je potˇreba GNU kompil´ator GCC nejl´epe verze 3.x a vyˇsˇs´ı. Kompilaci lze spustit pˇr´ıkazem make.

Aplikaci lze po zkompilov´an´ı v Linuxu spustit pˇr´ıkazem ./adaboost. Detekci je moˇzn´e vyzkouˇset na jiˇz existuj´ıc´ıch klasifik´atorech, kter´e jsou dod´av´any s knihovnou OpenCV a nach´azej´ı se v jej´ım adres´aˇri v podadres´aˇri

”data“. Jinak lze v aplikaci vytvoˇrit vlastn´ı klasifik´ator pomoc´ı tr´enov´an´ı.

Tr´

enovac´ı data

Pro tr´enov´an´ı jsou potˇreba dvˇe sady sn´ımk˚u - sada s pozitivn´ımi pˇr´ıklady a sada s ne-gativn´ımi pˇr´ıklady. Pozitivn´ı pˇr´ıklady by mˇely b´yt sn´ımky s v´yˇrezy zvolen´eho objektu, kter´e chceme detektor nauˇcit detekovat. Negativn´ı pˇr´ıklady m˚uˇzou b´yt libovoln´e sn´ımky bez v´yskytu zvolen´eho objektu.

Napˇr´ıklad pro natr´enov´an´ı detektoru hruˇsek bude sada pozitivn´ıch pˇr´ıklad˚u tvoˇrena sn´ımky hruˇsek ze stejn´eho ´uhlu pohledu a pˇri stejn´e poloze hruˇsek (hruˇska napˇr. nesm´ı b´yt nasn´ım´ana jednou naleˇzato a jednou nastojato). Negativn´ı pˇr´ıklady budou libovoln´e sn´ımky, v kter´ych nejsou vyobrazeny podobn´e nebo pro jistotu ˇz´adn´e hruˇsky.

Dobr´e pozitivn´ı pˇr´ıklady obsahuj´ı jen dan´y objekt a co nejm´enˇe pozad´ı. Um´ıstˇen´ı ob-jektu na sn´ımc´ıch by mˇelo b´yt nemˇenn´e a jeho v´yznamn´e znaky by mˇely b´yt vˇzdy na pˇribliˇznˇe stejn´ych m´ıstech v obraze v r´amci cel´e sady sn´ımk˚u. Sn´ımky nemusej´ı b´yt pˇr´ıliˇs rozmˇern´e. Pˇred tr´enov´an´ım se totiˇz pˇrev´adˇej´ı do ˇsedot´onov´ych vzork˚u o mal´e velikosti kolem 24×24 pixel˚u (z´aleˇz´ı na nastaven´ı a konkr´etn´ım pˇr´ıpadu). Negativn´ı pˇr´ıklady mo-hou m´ıt rozmˇery napˇr. 384×288 pixel˚u i v´ıce. Vˇsechny sn´ımky jsou aplikac´ı podporov´any v n´asleduj´ıc´ıch obrazov´ych form´atech:

• Windows bitmap (*.bmp, *.dib) • JPEG (*.jpeg, *.jpg, *.jpe)

• Portable Network Graphics (*.png)

• Portable image format (*.pbm, *.pgm, *.ppm) • Sun rasters (*.sr, *.ras)

• TIFF (*.tiff, *.tif) • OpenEXR HDR (*.exr) • JPEG 2000 (*.jp2)

(35)

Sn´ımky je potˇreba rozdˇelit do dvou adres´aˇr˚u - jeden s pozitivn´ımi a druh´y s negativn´ımi pˇr´ıklady.

Nastaven´ı tr´

enov´

an´ı

Jeˇstˇe pˇred tr´enov´an´ım lze v aplikaci pod z´aloˇzkou Tr.Nastaven´ı vybrat parametry tr´enov´an´ı. Pˇr´ıpadnˇe lze ponechat pˇrednastaven´e hodnoty. Zde vysvˇetl´ım nˇekter´e parametry. Poloˇzky Pozitivn´ıch pˇr´ıklad˚u a Negativn´ıch pˇr´ıklad˚u urˇcuj´ı, kolik m´a b´yt pouˇzito pˇr´ıklad˚u z pˇr´ısluˇsn´ych adres´aˇr˚u s tr´enovac´ımi daty. Pokud je nˇekter´a poloˇzka nastavena na nulu, pouˇzij´ı se vˇsechny pˇr´ıklady. Poˇcet st´adi´ı urˇcuje maxim´aln´ı poˇcet st´adi´ı, jak´y m˚uˇze b´yt v kask´adˇe klasifik´ator˚u vytvoˇren. Vyuˇzit´ı pamˇeti v MB urˇcuje maxim´aln´ı mnoˇzstv´ı operaˇcn´ı pamˇeti vyuˇziteln´e k pˇredzpracov´an´ı tr´enovac´ıch dat. Tuto hodnotu je potˇreba volit pˇrimˇeˇrenˇe podle aktu´aln´ıho mnoˇzstv´ı voln´e pamˇeti v syst´emu. Vhodn´ym na-staven´ım lze dos´ahnout vyˇsˇs´ı rychlosti tr´enov´an´ı. Nastaven´ı pˇr´ıliˇs vysok´e hodnoty (napˇr. cel´a kapacita RAM) vˇsak m˚uˇze tr´enov´an´ı naopak zpomalit. Minim´aln´ı pod´ıl pozitivn´ıch odezev urˇcuje minim´aln´ı pod´ıl pozitivn´ıch pˇr´ıklad˚u, jak´y mus´ı b´yt v tr´enov´an´ı pozitivnˇe klasifikov´an. Maxim´aln´ı pod´ıl faleˇsnˇe pozitivn´ıch odezev pak urˇcuje maxim´aln´ı pod´ıl pˇr´ıpad˚u faleˇsnˇe pozitivn´ı klasifikace v mnoˇzinˇe negativn´ıch pˇr´ıklad˚u. Mnoˇzina Haar fea-tur nastavuje sadu Haarov´ych pˇr´ıznak˚u pouˇzit´ych jako slab´e klasifik´atory. Symetrick´e objekty lze nastavit na ANO, pokud budou tr´enov´any symetrick´e objekty jako tˇreba hruˇsky, obliˇceje, dopravn´ı znaˇcky, aj. ˇS´ıˇrka a V´yˇska okna v pixelech urˇcuj´ı rozmˇery detekˇcn´ıho okna a t´ım i velikost vzork˚u, na jakou budou pˇred tr´enov´an´ım pˇrevedeny pozi-tivn´ı pˇr´ıklady. Parametrem Typ boostingu lze nastavit konkr´etn´ı variantu boostingov´eho algoritmu pouˇzit´eho k tr´enov´an´ı.

Spuˇ

stˇ

en´ı tr´

enov´

an´ı

V z´aloˇzce Tr´enov´an´ı je nutno zvolit adres´aˇr s pozitivn´ımi pˇr´ıklady, adres´aˇr s nega-tivn´ımi pˇr´ıklady a d´ale adres´aˇr, kam bude uloˇzen v´ystupn´ı XML soubor s natr´enovan´ym klasifik´atorem. Pot´e kliknut´ım na tlaˇc´ıtko Konfiguruj se prohledaj´ı zvolen´e adres´aˇre a z nalezen´ych sn´ımk˚u se vytvoˇr´ı pomocn´e konfiguraˇcn´ı soubory. Nakonec je moˇzn´e tlaˇc´ıtkem Start spustit samotn´e tr´enov´an´ı. V´ystupy tr´enov´an´ı se budou postupnˇe objevovat v oknˇe pod z´aloˇzkou Tr.V´ystup.

Aplikace neumoˇzˇnuje zastavit bˇeˇz´ıc´ı tr´enov´an´ı. Pˇreruˇsit jej lze jen tlaˇc´ıtkem pro zavˇren´ı aplikace v z´ahlav´ı jej´ıho okna nebo n´asiln´ym ukonˇcen´ım.

Nav´

az´

an´ı tr´

enov´

an´ı

V aplikaci lze n´av´azat na pˇredchoz´ı tr´enov´an´ı, kter´e bylo pˇreruˇseno uˇzivatelem nebo p´adem aplikace. Pokraˇcovat lze i v tr´enov´an´ı, kter´e jiˇz ´uspˇeˇsnˇe skonˇcilo. Postup je podobn´y jako pˇri spuˇstˇen´ı nov´eho tr´enov´an´ı. Opˇet je nejdˇr´ıve nutno nastavit parametry tr´enov´an´ı pod z´aloˇzkou Tr.Nastaven´ı. Parametry se m˚uˇzou liˇsit od tˇech pˇredchoz´ıch. Pod z´aloˇzkou Tr´enov´an´ı je d´ale potˇreba znovu zvolit adres´aˇre s pozitivn´ımi a negativn´ımi pˇr´ıklady. V´ystupn´ı adres´aˇr se mus´ı nastavit stejn´y jako v pˇredchoz´ım tr´enov´an´ı. Pak lze pokraˇcovat

References

Related documents

To facilitate course and program submissions universities, colleges, and career-technical institutions we will be using program accreditations or state board approvals as proof

or information about their expertise, which is repeated mainly with Negation feedback. Social: we mean context information related to a user’s role at work, and

The first part you define is the control arm. You begin by building its hardpoints. You can later modify these hardpoints to determine their effects on your vehicle. Next, you

In Section 2.3, we then cover topics related to our work on the field of data-driven software development: methods for collecting user related data, its analysis, and

Once your stocks or indexes have been picked based upon their relative strength, then the use of the other technical tools like support and re- sistance, moving averages, volume,

21st Century Learning 22 Mobile Learning 26 Seamless Learning 26 Collaboration 27 Learner Autonomy 28 Presence 29 Critical Literacies 31 Transactional Distance 32

事前テストと事後テストはそれぞれリーディング Part5 から Part7 に分かれており、TOEIC テストの出題形式と同じ形式で Part 5 短文穴埋め問題 13 問、Part 6 長文穴埋め問題 3

Working in conjunction with the Stroke Association this service provides a community approach in rehabilitation supporting those with an acquired brain injury and/or