- Předpoklady
- Jak rozpoznávání tváří funguje s OpenCV
- Detekce obličeje pomocí kaskádových klasifikátorů v OpenCV
Rozpoznávání tváře je stále populárnější a většina z nás jej již používá, aniž by si to uvědomovala. Ať už je to jednoduchý návrh značky Facebook nebo filtr Snapchat nebo pokročilý bezpečnostní dohled na letišti, Face Recognition v něm již má své kouzlo. Čína začala ve školách využívat Rozpoznávání tváře k monitorování docházky a chování studentů. Maloobchodní prodejny začaly používat Face Recognition ke kategorizaci svých zákazníků a izolaci lidí s historií podvodů. S mnohem více probíhajícími změnami není pochyb o tom, že tato technologie bude v blízké budoucnosti k vidění všude.
V tomto tutoriálu se naučíme, jak můžeme vytvořit vlastní systém rozpoznávání tváře pomocí knihovny OpenCV na Raspberry Pi. Výhodou instalace tohoto systému na přenosný Raspberry Pi je, že jej můžete nainstalovat kdekoli, abyste jej mohli používat jako monitorovací systém. Stejně jako všechny systémy Face Recognition bude i tento tutoriál zahrnovat dva pythonovské skripty, jeden je program Trainer, který bude analyzovat sadu fotografií konkrétní osoby a vytvoří datovou sadu (soubor YML). Druhým programem je program Recognizerkterý detekuje obličej a poté použije tento soubor YML k rozpoznání obličeje a uvedení jména osoby. Oba programy, o kterých zde budeme diskutovat, jsou pro Raspberry Pi (Linux), ale budou fungovat i na počítačích Windows s velmi malými změnami. Již máme řadu výukových programů pro začátečníky, jak začít s OpenCV, můžete si zde prohlédnout všechny výukové programy OpenCV.
Předpoklady
Jak již bylo řečeno, budeme k detekci a rozpoznávání tváří používat knihovnu OpenCV. Než budete pokračovat v tomto tutoriálu, nezapomeňte si nainstalovat knihovnu OpenCV na Pi. Napájejte také své Pi pomocí adaptéru 2A a připojte jej k monitoru monitoru pomocí kabelu HDMI, protože nebudeme moci získat video výstup přes SSH.
Také nebudu vysvětlovat, jak přesně OpenCV funguje, pokud vás zajímá učení zpracování obrazu, podívejte se na tyto základy OpenCV a pokročilé návody ke zpracování obrázků. V tomto výukovém programu Segmentace obrázků se také můžete dozvědět více o konturách, detekci objektů Blob atd.
Jak rozpoznávání tváří funguje s OpenCV
Než začneme, je důležité si uvědomit, že detekce obličeje a rozpoznávání tváře jsou dvě různé věci. Při detekci obličeje je detekován pouze obličej osoby, software nebude mít žádnou představu, kdo je touto osobou. Při rozpoznávání tváře software nejen detekuje obličej, ale také rozpozná osobu. Nyní by mělo být jasné, že před provedením rozpoznávání tváře musíme provést detekci obličeje. Nebylo by možné vysvětlit, jak přesně OpenCV detekuje obličej nebo jakýkoli jiný objekt. Pokud vás tedy zajímá, že můžete postupovat podle tohoto tutoriálu Detekce objektů.
Zdroj videa z webové kamery není nic jiného než dlouhá sekvence statických obrázků, které se postupně aktualizují. A každý z těchto obrázků je jen souborem pixelů různých hodnot, které jsou shromážděny na příslušné pozici. Jak tedy může program detekovat obličej z těchto pixelů a dále rozpoznat osobu v něm? Je za tím spousta algoritmů a pokus o jejich vysvětlení je nad rámec tohoto článku, ale protože používáme knihovnu OpenCV, je velmi jednoduché provádět rozpoznávání tváře, aniž bychom se ponořili hlouběji do konceptů
Detekce obličeje pomocí kaskádových klasifikátorů v OpenCV
Pouze pokud dokážeme detekovat tvář, dokážeme ji rozpoznat nebo si ji zapamatovat. Chcete-li detekovat objekt, jako je obličej, OpenCV používá něco, co se nazývá klasifikátory. Tyto klasifikátory jsou předem trénovaná sada dat (soubor XML), kterou lze použít k detekci konkrétního objektu, v našem případě tváře. Zde se můžete dozvědět více o klasifikátorech detekce obličeje. Kromě detekce tváře mohou klasifikátory detekovat i jiné objekty, jako je nos, oči, poznávací značka vozidla, úsměv atd. Seznam klasifikátorů případů lze stáhnout ze souboru ZIP níže
Klasifikátory pro detekci objektů v Pythonu
Alternativně OpenCV také umožňuje vytvořit si vlastní klasifikátor, který lze použít k detekci jakéhokoli jiného objektu v obraze trénováním vašeho kaskádového klasifikátoru. V tomto tutoriálu použijeme klasifikátor s názvem „haarcascade_frontalface_default.xml“, který detekuje obličej z přední pozice. Uvidíme