MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Adaptivní stmívání monitoru u přenosných počítačů s vestavěnou kamerou BALALÁŘSKÁ PRÁCE
Ludvík Hájek
Brno, 2014
PROHLÁŠENÍ Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Ludvík Hájek
PODĚKOVÁNÍ Děkuji vedoucímu mé práce RNDr. Davidu Svobodovi, Ph.D. za ochotu, trpělivost a rady.
SHRNUTÍ Práce obsahuje analýzu nabídky aplikací pro automatické stmívání monitoru na základě detekce obličeje ve vstupu kamery přenosného počítače. Po analýze je proveden návrh a implementace vlastní aplikace zprostřekovávající tuto službu s využitím knihovny OpenCV. Výstupem práce je hotový program a jeho zhodnocení z pohledu spotřeby energie a komfortu uživatele.
KLÍČOVÁ SLOVA detekce obličeje, spořič obrazovky, stmívání monitoru, laptop, OpenCV, Haarovy příznaky,
OBSAH Úvod .................................................................................................................................................8 1
Analýza situace .........................................................................................................................9 1.1
2
1.1.1
PecoBOO...................................................................................................................10
1.1.2
GreenCam.................................................................................................................10
1.1.3
Ostatní ......................................................................................................................10
1.2
Technologie detekce obličeje v obrazu ............................................................................11
1.3
Vlastní návrh ...................................................................................................................12
Implementace navrhnutého řešení .........................................................................................14 2.1
3
Popis stávajících aplikací na trhu ......................................................................................9
Použité technologie .........................................................................................................14
2.1.1
OpenCV....................................................................................................................14
2.1.2
Windows API ...........................................................................................................14
2.2
Řešené problémy .............................................................................................................15
2.3
Komentář kódu................................................................................................................15
Testování aplikace...................................................................................................................18 3.1
Očekávaný výstup ...........................................................................................................18
3.2
Měření spotřeby...............................................................................................................18
3.2.1
Použité metody měření ............................................................................................19
3.2.2
Hlavní měření na konkrétním stroji.........................................................................20
3.3
Výsledek měření ..............................................................................................................21
Závěr...............................................................................................................................................23 Literatura ........................................................................................................................................24 Přílohy ............................................................................................................................................27 Obrázky ......................................................................................................................................27 Obsah elektronické přílohy ........................................................................................................27
6
7
ÚVOD Jedním z nejvýznamnějších parametrů přenosných počítačů je výdrž baterie – tato je přímo závislá na elektrické spotřebě jednotlivých komponent stroje. U běžného přenosného počítače má vedle procesoru největší spotřebu energie monitor (1), tudíž vhodným omezením jeho spotřeby je možné docílit delší výdrže celého počítače. Triviálním řešením, jak ušetřit energii tedy je vypnutí monitoru. Jistá varianta tohoto přístupu je běžnou součástí operačních systémů v podobě spořiče obrazovky. Spořiče byly původně vytvořeny, aby u CRT monitorů zabránily tzv. „efektu vypálení“ – pokud se obraz na obrazovce nějakou dobu neměnil, došlo k jeho trvalému vypálení do zobrazovací plochy monitoru. U přenosných počítačů nebyly CRT monitory nikdy využity a spořič obrazovky sloužil a slouží především k zabavení či informování uživatele. Určitým nedostatkem spořičů je fixní délka jejich odezvy na činnost uživatele. Reakce počítače na chování uživatele lze zrychlit například sledováním výstupu webkamery, která už se stala standardním vybavením přenosného počítače. Cílem této studie je navrhnout, vytvořit a otestovat službu, která na základě výstupu z webkamery vypíná a zapíná monitor počítače. Hlavní důraz je kladen na spotřebu elektrické energie, potažmo výdrž baterie u přenosných počítačů. Vedlejším faktorem je pohodlí uživatele. Výstup práce bude funkční služba a její hodnocení z hlediska šetření energie. První část práce popisuje nástroje, které jsou k dispozici v době zveřejnění práce, stav technologií detekce v obrazu a také navrhuje vlastní řešení, které je následně prací aplikováno. Druhá část je zaměřena na
samotnou
implementaci
navrhnutého řešení. Komentuje použité technologie, soustředí se na zdrojový kód programu a shrnuje problémy, které se vyskytly při tvorbě aplikace a jejich řešení. Ve třetí části se pracuje s již hotovým programem a je změřena jeho výkonnost s ohledem na hlavní zaměření práce – spotřebu elektrické energie. Výsledky měření porovnává s očekáváním a cílem práce.
8
1 ANALÝZA
SITUACE
Pro mobilitu přenosného počítače je velice významným omezením výdrž jeho baterie. Výrobci jednotlivých komponent si toto omezení uvědomují a snaží se vyvíjet co nejméně energeticky náročné technologie. K tomuto hardwaru často také dodávají ovladače a software, který dále pracuje s jeho výkonem a spotřebou.
Při běžném provozu laptopu má největší podíl na spotřebě
elektrické energie monitor, při nevyšším jasu se na celkovém odběru podílí přibližně 20 procenty. (1) Spotřebu monitoru lze velice jednoduše zmenšit úplným vypnutím nebo alespoň snížením jasu. K dispozici je mnoho nástrojů, které vypínání, respektive jas řeší na základě pobídky od uživatele nebo v pevně daných časových úsecích. Dále existují řešení, které proces co nejvíce automatizují – požadují po uživateli pouze prvotní nastavení.
1.1 POPIS STÁVAJÍCÍCH APLIKACÍ NA TRHU V rámci operačního systému Microsoft Windows (dále jen Windows) je k dispozici Správa napájení, která umožňuje nastavit automatické zapínání a vypínaní monitoru v závislosti na čase nečinnosti uživatele a také nabízí jednoduché nastavení jasu obrazovky. Výrobci laptopů a jejich jednotlivých součástek poskytují samostatné programy a funkce pro podrobnější nastavení jednotlivých komponent jejich počítačů: Společnost Intel poskytuje utilitu Intel TuboBoost Technology 2.0 (2), která dokáže nárazově zvýšit výkon kompatibilního Intel procesoru a ten proto nemusí neustále běžet na plný výkon. Výrobce přenosných počítačů Toshiba ke svým zařízením nabízí program Toshiba Eco Utility (3), který umožňuje zapnout ekologický plán napájení poskytnutý výrobcem a měří spotřebu počítače při jeho použití. Dále také existují výrobci, kteří se specializují na omezení spotřeby různých elektronických zařízení. Hlavním cílem těchto společností je většinou ochrana přírody, šetření neobnovitelných zdrojů a s tím související úspora financí spotřebitele. Firmy tohoto charakteru mají vlastní produktové řady úsporných zařízení. Patří mezi ně například společnost Very PC (4), která vyrábí počítačové sestavy a servery s důrazem na co nejmenší spotřebu energie při požadovaném 9
výkonu. Mimo to se soustředí také na minimalizaci rozměrů dodávaných sestav. Dalším zástupcem v této kategorii je japonská firma EIZO (5). Tato společnost produkuje kvalitní a
ekologické monitory. Do svých výrobků přidává
nadstandardní zařízení (například teplotní čidla) pro zvýšení jejich ekologičnosti a větší pohodlí uživatelů. Z hlediska ekologie se nevěnuje pouze spotřebě, ale i materiálům, ze kterých své monitory vyrábí. V rámci této iniciativy má společnost interní kvalifikační systém EIZO Eco Products (6), který udává, jaké ekologické normy jejich výrobky splňují. Rychlým a jednoduchým řešením pro běžného uživatele jsou programy, které se zabývají problematikou vypínání monitoru a jsou volně k dispozici na Internetu. Konkrétně existují dvě aplikace, které umožňují automatickou kontrolu přítomnosti uživatele u počítače – PecoBOO (7) a GreenCam (8). Mimo tyto dva produkty jsou k dispozici řešení, která vyžadují programovací znalosti ze strany uživatele (viz podkapitola 1.1.3).
1.1.1 PECOBOO PecoBOO je komerční aplikace vyvíjená firmou Very PC pro Windows. Program detekuje obličej ve vstupu webkamery počítače a na základě této detekce vypíná a zapíná obrazovku. Mimo to aplikace nabízí i základní uživatelské rozhraní pro nastavení časové prodlevy mezi jednotlivými detekcemi či opoždění startu snímání. Aplikace je k dispozici buď samostatně ke stažení, nebo v rámci setu s kamerou. PecoBOO není momentálně k dispozici, výrobce ukončil jeho prodej. Program zmiňuji, protože sloužil jako inspirace při tvorbě mého řešení.
1.1.2 GREENCAM GreenCam je freeware program od brazilské společnosti Ecobenefícios. Stejně jako PecoBOO je GreenCam k dispozici pro Windows. GreenCam po spuštění běží jako proces na pozadí a na základě nepřetržitého signálu z webkamery detekuje přítomnost uživatele, podle čehož poté vypíná a zapíná obrazovku. Program je k dispozici pouze v portugalštině, s minimální dokumentací.
1.1.3 OSTATNÍ Dále je k dispozici různý software pro práci s webkamerou, s jehož pomocí lze vytvořit řešení, které bude vykonávat detekci obličeje. Je to například Yawcam (9) 10
pro Windows nebo Motion (10) pro operační systém Linux. Oba programy nabízí množství základních funkcí pro zpracování vstupu webkamery, ale pro využití těchto funkcí dále k detekci obličeje je třeba připojení knihoven pro zpracování obrazu, například SimpleCV (11). K použití knihovny je potřebná znalost jazyka Python a toto řešení tudíž není k dispozici pro běžného uživatele počítače.
1.2 TECHNOLOGIE DETEKCE OBLIČEJE V OBRAZU Detekce obličeje v obraze je počítačová technologie sloužící k nalezení lidského obličeje v digitálním obraze, určení jeho přesného umístění a případně velikosti. Samostatně lze detekci obličeje využít spíše k jednodušším úkolům, síly nabývá až ve spojení s technologií rozpoznání obličeje: jde o proces nalezení detekovaného obličeje v uložené databázi obličejů. Spolu pak mají velký význam a vliv na mnoho oblastí lidského konání počínaje cílenou reklamou, přes bezpečnostní složky a sledovací prostředky až k robotice, strojovému učení a s ním úzce souvisejícím vývoji umělé inteligence.
OBR. 1 ( 3 0 ) DETEK C E OBLIČ EJ E PŘED
OBR. 2 ( 3 0 ) DETEKCE OBLIČ EJ E - PO
Ačkoliv první pokusy o detekci obličeje se datují už do počátku sedmdesátých let (12), ještě v roce 2000 nebyl pokrok nijak uspokojivý. (13) Existovalo sice několik přístupů (14) (15) (16), například detekce pomocí charakteristických rysů (12), ale všechny byly pomalé a nevyužitelné pro detekci v reálném čase. Průlom učinila v roce 2001 práce, kterou vypracovali Paul Viola a Michael Jones. (17) K detekci použili Haarových příznaků, založených na Haarově vlnce (17) (18), jejíž hlavní předností je právě rychlost. 11
Při detekci pomocí Haarových příznaků algoritmus postupně posunuje po celém snímku pevně daný rámec a při každém posunutí rozdělí rámec na sousedící obdélníkové oblasti – Haarovy příznaky. (Obr. 1)
OBR. 3 ( 3 1 ) ZÁK LADNÍ HAAROVY PŘÍZNAK Y
Pro každou oblast sečte celkový jas všech pixelů a poté odečte výsledek z tmavší oblasti od výsledku ve světlejší oblasti jasů. Podle tohoto rozdílu jsou jednotlivé části snímku kategorizovány – algoritmus porovná rozdíl s naučeným prahem určujícím, jestli daný rozdíl odpovídá objektu nebo ne. Takovýto přístup je značně nepřesný a proto musí mít každý objekt přiřazeno velké množství Haar-like příznaků, které jsou seřazeny do klasifikační kaskády, jejímž aplikováním se teprve získá jistota detekce. Při velkém množství příznaků dochází ke zpomalení celého výpočtu. Proto Viola a Jones pro svůj algoritmus použili AdaBoost (19), algoritmus strojového učení, který jim umožnil rozpoznat významné příznaky a snížit tak jejich počet v kaskádě na minimum, při maximálním zachování přesnosti.
1.3 VLASTNÍ NÁVRH Cílem práce je vytvořit spořič obrazovky, který bude kontrolovat přítomnost uživatele u počítače pomocí detekce obličeje ve vstupu z webkamery. Pokud spořič detekuje obličej uživatele, zapne obrazovku. Naopak pokud ve vstupu obličej nedetekuje, obrazovku vypne. Jestli se obrazovka nachází v požadovaném stavu, pak jej spořič nemění. Spořič obrazovky se spustí po nejkratší možné době nečinnosti (typicky jedna minuta) a bude u něj možné nastavit interval detekce, počet snímků, na kterých se detekce provádí a prodleva mezi jednotlivými snímky.
12
Při tvorbě návrhu jsem vycházel z programů nalezených při rešerši. Jejich nedostatkem mi přišlo neustálé obsazení webkamery, a tedy nutnost ručně je vypnout nebo pozastavit při potřebě využití webkamery. Rozhodl jsem se tedy, že mé řešení bude kameru využívat pouze krátce ve stanovených intervalech. Také jsem nechtěl implementovat samostatný program, mým cílem bylo vytvořit řešení jako součást systému, aby se uživatel nemusel učit používat novou funkci. Nakonec jsem tedy vybíral mezi systémovou službou a spořičem obrazovky. Systémová služba je program spuštěný při startu systému, který běží na pozadí a typicky nekomunikuje s uživatelem, ale je potřeba pro správný běh systému nebo uživatelských aplikací. Spořič obrazovky je samostatný program, který je spuštěn po uživatelem definované době nepoužívání stroje a je okamžitě vypnut, pokud dojde k použití počítače. Uživatel má ke spořiči snadný přístup, může měnit jeho typ či jeho nastavení. Rozhodl jsem se použít k řešení spořič obrazovky. Drobnou nevýhodou spořiče oproti systémové službě byl opožděný start detekce, ale vzhledem k úspoře zdrojů mi tento nedostatek připadal vyvážen zbytečnou detekcí prováděnou službou během aktivní činnosti uživatele. Spořič mi navíc přišel pro uživatele snadněji pochopitelný a ovladatelný, a také se mi zdálo ideální, že mohu využít jeho původní spořící funkci, i když už nebude šetřit monitor, ale energii.
13
2 IMPLEMENTACE
NAVRHNUTÉHO ŘEŠENÍ
2.1 POUŽITÉ TECHNOLOGIE Uživatelské rozhraní programu obsluhuje standardní Windows API (Application Programming Interface, rozhraní pro programování aplikací) (20), zatímco ke zpracování obrazu a detekci byla zvolena knihovna OpenCV (21). Spořič je napsán v jazyce C++.
2.1.1 OPENCV OpenCV je otevřená, volně šiřitelná a multiplatformní knihovna pro práci s obrazem.
Hlavním
zaměřením
knihovny
je
implementace
algoritmů
počítačového vidění v reálném čase. OpenCV je napsána v C++, ale obsahuje i rozhraní pro další programovací jazyky – C, Python, Java, Matlab. Knihovna poskytuje přes 2500 algoritmů pro práci s obrazem a strojové učení – například rozpoznání obličeje, detekce pohybu nebo tvorba 3D modelu z obrazu. OpenCV je
celosvětově
rozšířená
knihovna
využívaná
i nejvýznamnějšími
technologickými firmami jako například Google, Microsoft nebo Intel. (22) OpenCV umožňuje využívat velmi složité a úzce zaměřené funkce založené na nejnovějších poznatcích z oblasti zpracování obrazu. (V mnoha případech napsané těmi, kteří tyto poznatky učinili.) Přesto jsou tyto funkce optimalizované a lehce uchopitelné i pro programátora nezaměřeného na zpracování obrazu – zdrojový kód využívající této knihovny je zpětně snadno čitelný a i při samotné tvorbě jsou funkce z knihovní nabídky lehce uchopitelné. Dokumentace je napsaná srozumitelně a až na výjimky pokrývá vše podstatné. Aktuální verze OpenCV je 2.4.9, verze používaná při tvorbě této práce je 2.4.8.
2.1.2 WINDOWS API Windows API je programovací rozhraní vyvinuté firmou Microsoft pro jejich operační systém Microsoft Windows. Programy běžící ve Windows komunikují navzájem mezi sebou a s jádrem systému právě pomocí Windows API. Rozhraní se dělí do několika kategorií, jako například přístup k datům a jejich ukládání, grafika a multimédia, systémové služby nebo uživatelské rozhraní. Uživatelské rozhraní byla nejvíce užívaná kategorie při psaní aplikace pro tuto práci.
14
Pro vývojáře je dostupný Windows SDK (Software Development Kit, sada pro vývoj software) (23), který poskytuje nástroje a dokumentaci pro tvorbu programů založených na Windows API. Aktuální verze Windows SDK je 8.1, v této práci je použita verze 8.0A.
2.2 ŘEŠENÉ PROBLÉMY Většina problémů vzniklá při psaní aplikace byla způsobena volbou využít pro řešení šablonu spořiče obrazovky. Programovací rozhraní pro aplikace Windows vytvořilo několik zásadních překážek při psaní kódu. Významným problémem bylo rozdílné chování funkcí v různých verzích systému a nepřítomnost informací o těchto rozdílech v oficiální dokumentaci. Kritické
při
tvorbě
aplikace
bylo
zjištění,
že
systémová
zpráva
SC_MONITORPOWER využívaná pro vypnutí obrazovky násilně ukončuje jakýkoliv běžící spořič obrazovky a programy jím spuštěné. Takto se chová ve Windows 7 a vyšších, přičemž změna není oficiálně zdokumentována. Vzniklou situaci jsem vyřešil vytvořením druhého procesu, do kterého jsem přesunul většinu funkcí spořiče, tak aby mohl zastoupit spořič po jeho násilném vypnutí. Nejzásadnější změna oproti návrhu nastala při zjištění, že operace snímání trvá při více snímcích příliš dlouho. Uživatel při ní nemohl přerušit běh spořiče a musel čekat na dokončení snímání, což mohlo být v závislosti na nastavení i několik vteřin. Problém byl vyřešen přesunutím snímání do samostatného procesu, který si spořič periodicky spouští. V rámci plynulosti aplikace byla později do tohoto samostatného procesu přesunuta veškerá výpočetní logika programu a šablona spořiče dále slouží pouze ke spuštění detekce a zobrazení jejího výsledku.
2.3 KOMENTÁŘ KÓDU Z důvodů uvedených v předchozí kapitole, je kód rozdělen do tří samostatných procesů. CamSaver obsluhuje uživatelské rozhraní spořiče, backupscreensaver obstarává aktivní běh spořiče a capture zajišťuje nejdůležitější detekci. V capture je řešena hlavní funkčnost kódu pomocí OpenCV. Windows API je použito k načtení nastavení spořiče z registrů a OpenCV inicializuje kameru. 15
Následuje půl vteřinové pozastavení, potřebné k prvotnímu automatickému zaostření a expozici kamery, potom je spuštěn cyklus pro detekci. V každé iteraci cyklu je uložen nový snímek z kamery a je v něm OpenCV metodou detectMultiScale postupně provedena detekce obličeje zepředu a z profilu. Pokud není detekován obličej, cyklus pokračuje, dokud nedosáhne maximálního nastaveného počtu snímků; jestliže dojde k detekci, cyklus je okamžitě ukončen. Pokud je spořič spuštěn v aktivním módu, capture na základě výsledku detekce požívá systémovou zprávu SC_MONITORPOWER k uvedení monitoru do požadovaného stavu. (Jestliže byl obličej nalezen, dojde k zapnutí obrazovky; pokud nebyl nalezen, je obrazovka vypnuta.) V případě, že je spořič pouze v ukázkovém módu, je trvale uložen poslední snímek, na základě kterého byla provedena detekce, výsledek detekce je uložen do registrů a program spořiče je pomocí Windows API vyrozuměn o aktualizaci dat. 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18
FOR Počet_snímků snímek = vytvořSnímek () obličej_nalezen = najdiObličej (snímek, čelní_pohled) IF (obličej_nalezen) BREAK ELSE obličej_nalezen = najdiObličej (snímek, profil) IF (obličej_nalezen) BREAK END IF END IF END FOR IF (obličej_nalezen) zapniObrazovku () ELSE vypniObrazovku () END IF OBR. 4 PSEU DO K ÓD DETEK C E O BLIČ EJ E
CamSaver je postaven na šabloně spořiče obrazovky z Windows SDK a k veškeré obsluze používá Windows API. V případě, že je spořič spuštěn v ukázkovém módu, přečte nastavení z registrů, v načtených intervalech spouští proces capture 16
jako svého potomka a jím získaná data – obraz a detekci – interpretuje uživateli v ukázkovém okně. Ke zpracování obrazových dat použita knihovna OpenCV. Jestliže je spořič spuštěn v aktivním módu, CamSaver pouze jednorázově spustí nezávislý proces backupscreensaver, kterým je nahrazen. CamSaver kromě běhu spořiče také obsluhuje uživatelské rozhraní: dialog pro nastavení vlastností. Backupscreensaver je proces nahrazující CamSaver při aktivním běhu spořiče. (viz 2.2) Po načtení informací z registru spouští v daných intervalech proces capture, sleduje tok systémových zpráv a pokud dojde k použití počítače uživatelem, ukončí spořič.
17
3 TESTOVÁNÍ
APLIKACE
3.1 OČEKÁVANÝ VÝSTUP Spotřeba přenosných počítačů se u jednotlivých strojů značně liší a pohybuje se od 20 do 60 wattů za běžného provozu v závislosti na výkonu a energetické optimalizaci. Jak už bylo zmíněno v první kapitole, spotřeba monitoru má výrazný vliv na spotřebu celého stroje, pohybuje se okolo 20 procent. V porovnání s monitorem lze spotřebu webkamery považovat za velmi malou. V tomto kontextu může být největší nárazové zmenšení spotřeby energie až 30 %. Nicméně neustálým spouštěním kamery, detekcí obličeje a s tím spojenou režií dochází k většímu zatížení procesoru, než při pouhém vypnutí monitoru. Vytížený procesor je navíc tak é výrazným spotřebitelem energie, nelze tedy ani nárazově očekávat tak velké zlepšení spotřeby. Z dlouhodobého hlediska navíc monitor nebude vypnut neustále, ale pouze během krátké nepřítomnosti uživatele. Při delší nepřítomnosti lze očekávat uspání nebo vypnutí celého stroje. Z tohoto pohledu už musíme náš počáteční velmi optimistický odhad výrazně přehodnotit – lze zřejmě uvažovat o zlepšení spotřeby v jednotkách procent.
3.2 MĚŘENÍ SPOTŘEBY Pro Windows existuje pouze jeden softwarový produkt zaměřený primárně na měření spotřebu energie. „Research preview“ verze programu Joulemeter (24) je k dispozici ke stažení na stránkách Microsoft Research centra. (25) Program umí měřit pouze spotřebu přenosného počítače odpojeného z elektrické sítě na základě
změny
několikaminutová
kapacity kalibrace
baterie. pro
Jako
změření
první
musí
spotřeby
být
energie
provedena jednotlivých
komponent, a potom lze měřit a zaznamenávat spotřebu energie celého počítače i jednotlivých částí. Vývoj programu je už od roku 2011 pozastaven. Volně ke stažení je množství malých nástrojů, které monitorují stav baterie laptopu a jako vedlejší informace dokáží dávat základní údaje o momentální spotřebě energie, většinou na základě odběru z baterie. Některé z nich nabízejí i možnost logování těchto údajů. Patří mezi ně BatteryCare (26) respektive BatteryInfoView (27). 18
Další možností je přímé měření odběru energie v zásuvce pomocí měřiče spotřeby elektrické energie. Tento jednoduchý hardwarový měřič se zapojí do zásuvky a až do něj se zapojí měřené zařízení, spotřeba je měřena podle elektrického proudu protékajícího přímo do zařízení. Podobn é měřiče u nás nabízí například německá firma Conrad pod značkou Voltcraft. (28)
3.2.1 POUŽITÉ METODY MĚŘENÍ První volbou pro přesné měření byl Joulemeter. Bohužel, Joulemeter na testovacím stroji kalibraci přerušil s chybovou hláškou, a proto jsem od jeho použití upustil.
Výše zmíněné malé nástroje při zkoušení vykazovaly
nezanedbatelné zpoždění a problematické by bylo i získávání údajů při vypnutém monitoru. Proto jsem se rozhodl k hlavnímu testovacímu měření použít hardwarový měřič energie, konkrétně zařízení Voltcraft Energy Check 3000. (29) (Obr. 2)
OBR. 5 ( 2 9 ) VOLTC RAFT ENERGY C HE C K 3 0 0 0
Voltcraft Energy Check nabízí možnost dlouhodobého měření, v rámci kterého je ukládána celková doba měření, celková, nejnižší a nejvyšší spotřeba energie. Měřič ale neumožňuje ukládat aktuální spotřebu v časových intervalech. Proto jsem rozhodl předem spočítat průměrnou spotřebu testovacích laptopů v různých režimech (malý výkon se zapnutou kamerou, vysoký výkon s vypnutou obrazovkou, atd.). Průměrnou spotřebu jsem spočítal z údajů získaných během několika samostatných měření v předem daných podmínkách. Do aplikace jsem umístil logovací funkci, která ukládá jednotlivé stavy spořiče – 19
čas jeho spuštění a ukončení, a také čas vypnutí a zapnutí obrazovky. Na základě průměrné spotřeby stroje a uložených časových údajů spořiče provedu analýzu spotřeby energie vytvořeného programu a zhodnotím jeho energetickou náročnost. Výsledek samozřejmě porovnám s očekáváními.
3.2.2 HLAVNÍ MĚŘENÍ NA KONKRÉTNÍM STROJI Pro hlavní měření byl použit laptop Asus A6R, rok výroby 2006, s operačním systémem Windows XP Home. Nejdříve jsem změřil spotřebu počítače při nezatíženém běhu, při plném zatížení oboje s vypnutým i zapnutým monitorem a následně při běhu se zapnutým spořičem. Podle měření je spotřeba při nezatíženém běhu se zapnutou obrazovkou 26,6 W (kamera zvýšila spotřebu na 27,9 W), s vypnutou obrazovkou 18,4 W; při maximálním zatížení se zapnutou obrazovkou 40,2 W a s vypnutou 36,37 W. Spotřeba obrazovky v neztíženém stavu je tedy 8,2 W, její podíl na spotřebě je
OBR. 6 MĚŘENÍ SPOTŘEBY ASUS A6 R
20
31 %. Při plném zatížení bere kamera 7,8 W, což reprezentuje 19 % celkové spotřeby. (Obr. 6) Nastavení spořiče při ukládání údajů o jeho využití bylo defaultní, čili detekce ve třech snímcích s půl vteřinovým rozestupem každých pět sekund. Záznamy ukazují, že pokud dojde ke spuštění spořiče a detekci uživatele, pak dochází k občasnému krátkodobému vypnutí monitoru. Spořič je také často spuštěn jen na krátký časový úsek, většinou do 15 vteřin. Pokud spořiče běží po delší dobu a dojde k dlouhodobému vypnutí obrazovky, pak je spořič ukončen dříve, než dojde k obnovení obrazovky. Při běžném užívání počítače nedochází ke spuštění spořiče nijak často, průměrně méně jak jedenkrát do hodiny. Mimo to jsem při občasné kontrole výkonu zjistil, že spořič při detekci využívá 100 % procesoru. Z hlediska pohodlí uživatele splňuje spořič základní požadavky. Pokud dojde k jeho spuštění, zatímco je uživatel zaměřen na monitor, spořič uživatele detekuje a nedochází k vypnutí obrazovky. V okamžiku, kdy uživatel odejde, dochází nejpozději během dalšího cyklu detekce k vypnutí monitoru a taktéž, pokud se uživatel znovu objeví, je během dalšího cyklu detekován a monitor je znovu zapnut. Při špatném načasování může prodleva mezi dosednutím a zapnutím monitoru až 8 sekund.
Se zhoršenými světelnými podmínkami dochází ke
kolísání výkonosti, kdy detektor začíná mít problém s nalezením obličeje ve většinou příliš tmavém obraze.
3.3 VÝSLEDEK MĚŘENÍ Protože spořič po spuštění využívá maximální výkon procesoru, jeho energetická úspora nulová. Měření vypovídá dokonce o tom, že pokud je počítač nevyužívaný, je zapnutá obrazovka a není na něm zapnutý spořič, spotřebovává o 5,7 W méně, než kdyby na něm spořič běžel a obrazovka jím byla vypnutá. Tento výsledek by mohl být vyvrácen instalací spořiče a jeho měřením na rychlejším stroji, kde by nedošlo k využití celého výkonu procesoru. Další výsledky poukazují na správnou funkčnost spořiče, který vypne obrazovku na dobu krátké nepřítomnosti uživatele a po jeho detekci ji opět zapne. Toto by u rychlého stroje mělo vést k úsporám energie.
21
Také lze v záznamu vidět trend manuálního vypnutí monitoru, a to jak v případě krátkodobého běhu, tak v případě příchodu ke stroji po delší době nečinnosti. Tento ruční zásah je dán dlouhodobými zvyklostmi uživatele, které velmi pravděpodobně nepůjde u nového uživatele rychle změnit – uživatel tedy nevyužije plného potenciálu spořiče. Prodleva spořiče mezi detekcemi je otázkou konkrétního nastavení, zvýšením frekvence spouštění detekce lze dosáhnout velmi krátkých prodlev beze ztráty přesnosti detekce, ale za cenu většího využití procesoru a tedy nárůstu spotřeby. Pro zlepšení detekce ve zhoršených světelných podmínkách nelze učinit mnoho. Spořič tedy nelze úspěšně používat v tmavém prostředí, například pokud je prostor osvětlován pouze jasem monitoru.
22
ZÁVĚR V implementační části práce byl vytvořen spořič obrazovky, který dokáže detekovat přítomnost uživatele u počítače a podle toho vypnout či zapnout obrazovku. Spořič je funkční v operačním systému Windows a je přenositelný mezi jednotlivými verzemi tohoto sytému. Z pohledu
spotřeby
energie
nebylo
v měřených
podmínkách
dosaženo
očekávaných výsledků. Využití spořiče pro úsporu energie a šetření baterie starších přenosných počítačů je proto nevodné. Přesto by důkladnější testování na novějších stojích mohlo prokázat celkový minimální vliv spořiče na spotřebu energie, popřípadě i jeho energetickou efektivitu. Pozitivního výsledku bylo dosaženo v oblasti uživatelského pohodlí. Spořič za běžných podmínek s minimální chybovostí detekuje přítomnost uživatele a umožňuje mu bezdotykovou interakci s počítačem. Při čtení textu, či sledování videí je spořič funkční a uživatel není rozptylován nutností udržovat počítač aktivní. Pokračování v práci v prvé řadě spočívá ve změření spotřeby u moderních laptopů. Vzhledem k nyní dosaženým výsledkům, lze předpokládat mírně negativní až neutrální výsledky. Další práce se proto musí soustředit na dosažení menšího zatížení zdrojů při detekci. Po překonání stávajících problémů lze uvažovat o přenosu myšlenky na další platformy.
23
LITERATURA 1. Mahesri, Aqeel a Vardhan, Vibhore. Power Consumption Breakdown on a Modern Laptop. [autor knihy] Babak Falsafi a T.N. Vijaykumar. Power-Aware Computer Systems. New York : Springer, 2005. 2. Intel® Turbo Boost Technology 2.0. Intel in Europe. [Online] Intel Corporation. [Citace: 18. 05 2014.] http://www.intel.com/content/www/us/en/architecture-and-technology/turboboost/turbo-boost-technology.html. 3. Toshiba Eco Utility Feature. Toshiba. [Online] Toshiba America Information Systems, Inc. [Citace: 18. 05 2014.] http://www.toshiba.com/us/eco-utility. 4. Very PC. [Online] VeryPC Ltd. [Citace: 18. 05 2014.] https://www.very-pc.co.uk/. 5. EIZO GLOBAL. [Online] EIZO Corporation. [Citace: 18. 05 2014.] http://www.eizo.cz/. 6. Eizo Nanao Corporation. EIZO Introduces “EIZO Eco Products 2009” Internal Environmental Label. [Online] 04. 09 2008. [Citace: 18. 05 2014.] http://www.eizo.com/na/press/releases/pdf/EEP2009_pr.pdf. 7. PecoBOO Is Keeping An Eye On Your Energy Use. Press Release Services - PRWeb. [Online] Vocus PRW Holdings, LLC, 10. Červen 2009. [Citace: 18. Květen 2014.] http://www.prweb.com/releases/power-management/Green-IT-VeryPC/prweb2626224.htm. 8. Greencam - Ecobenefícios. [Online] Ecobenefícios. [Citace: 18. Květen 2014.] https://www.ecobeneficios.com.br/greencam. 9. Yawcam - Yet Another Webcam Software. [Online] [Citace: 18. Květen 2014.] http://www.yawcam.com/. 10. WebHome < Motion < Foswiki. Foswiki. [Online] 14. Únor 2014. [Citace: 18. Květen 2014.] http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome. 11. SimpleCV. [Online] Sight Machine, Inc. [Citace: 18. Květen 2014.] http://simplecv.org/. 12. Sakai, T., Nagao, M. a Kanade, T. Computer analysis and classification of photographs of human faces. Proc. First USA—Japan Computer Conference. 1972, stránky 2.7.1 - 2.7.8. 13. Hjelmås, Erik a Low, Boon Kee. Face Detection: A Survey. Computer Vision and Image Understanding. 2001, Sv. 3, 83.
24
14. Brunelli, R. a Poggio, T. Face recognition: Feature versus templates. IEEE Trans. Pattern Anal. Mach. 1993, 15, stránky 1042–1052. 15. Holst, G. Face detection by facets: Combined bottom-up and top-down search using compound templates. Proceedings of the 2000 International Conference on Image Processing. 2000, stránky 235-238. 16. Lin, C. H. a Wu, J. L. Automatic facial feature extraction by genetic algorithms. IEEE Trans. Image. 1999, 8, stránky 834–845. 17. Viola, Paul a Jones, Michael. Robust Real-Time Face Detection. International Journal of Computer Vision. 2004, Sv. 2, 57. 18. Papageorgiou, C.P. Oren, M. a Poggio, T. A general framework for object detection. Sixth International Conference on Computer Vision. 1998. 19. Freund, Yoav a Schapire, Robert E. A Short Introduction to Boosting. Journal of Japanese Society for Artificial Intelligence. 1999, Sv. 5, 14. 20. Richter, Jeffrey a Nasarre, Christophe. Windows via C/C++. Redmond : Microsoft Press, 2008. 978-073-5624-245. 21. Lelis Baggio, Daniel. Mastering OpenCV with practical computer vision projects. Birmingham : Packt Publishing, 2012. 978-1849517829. 22. ABOUT | OpenCV. OpenCV. [Online] [Citace: 18. Květen 2014.] http://opencv.org/about.html. 23. Windows SDK. [Online] http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx. 24. Joulemeter: Computational Energy Measurement and Optimization. Microsoft Research. [Online] Microsoft. [Citace: 18. Květen 2014.] http://research.microsoft.com/enus/projects/joulemeter/. 25. Microsoft Research - Turning ideas into reality. [Online] Microsoft. [Citace: 18. Květen 2014.] http://research.microsoft.com/en-us/. 26. BatteryCare. [Online] [Citace: 18. Květen 2014.] http://batterycare.net/en/index.html. 27. BatteryInfoView - View battery information on laptops / netbooks. Nirsoft. [Online] [Citace: 18. Květen 2014.] http://www.nirsoft.net/utils/battery_information_view.html. 28. Conrad.com - Your Online Shop for Electronics, Computing, Multimedia, Model Making and Technology. Conrad.com. [Online] [Citace: 18. Květen 2014.] http://www.conrad.com/ce/. 25
29. VOLTCRAFT Energy Check 3000 LCD 0.001 - 9999 kWh 2376 hrs. Conrad.com. [Online] [Citace: 18. Květen 2014.] http://www.conrad.com/ce/en/product/125330/VOLTCRAFT-EnergyCheck-3000-LCD-0001-9999-kWh-2376-hrs. 30. Dalal, Jayneil. Building Image Processing Embedded Systems using Python. Open Source For You - The Complete Magazine on Open Source. [Online] 28. Únor 2012. [Citace: 18. Květen 2014.] http://www.opensourceforu.com/2012/02/building-image-processing-embedded-systems-usingpython-part-2/. 31. Face Detection (Face Recognition Techniques) Part 1. what-when-how — In Depth Tutorials and Information. [Online] [Citace: 18. Květen 2014.] http://what-when-how.com/face-recognition/facedetection-face-recognition-techniques-part-1/.
26
PŘÍLOHY OBRÁZKY
Obr. 1 Detekce obličeje – před
Obr. 2 Detekce obličeje - po
Obr. 3 Základní Haarovy příznaky
Obr. 4 Pseudo kód detekce obličeje
Obr. 5 Voltcraft Energy Check 3000
Obr. 6 Měření spotřeby ASUS A6R
ELEKTRONICKÉ PŘÍLOHY
Source.rar: Projekt Codeblocks – zdrojové kódy spořiče
Binary.rar: Funkční spořič
Asus A6R mereni.pdf: dokumentace měření Asus A6R
Bp-text.pdf: text této práce
Obr.rar: použité obrázky
27