Přemýšleli jste někdy o tom, jak Snapchat přesně aplikuje různé filtry na váš obličej? Provádí váš smartphone kouzla, když se odemyká pomocí funkcí vašeho obličeje? Ne, jen sledujete funkci Face Detection v akci.

Face Detection je technologie umělé inteligence, která dokáže identifikovat lidské tváře na digitálním snímku nebo videu. Zjistěte, jak můžete pomocí legendárního algoritmu Haar Cascade vytvořit program detekce obličeje v reálném čase na méně než 25 řádcích kódu.

Co je Haarova kaskáda?

Haar Cascade je algoritmus detekce objektů představený Paulem Violou a Michaelem Jonesem k detekci tváří na obrázcích nebo videích. Kaskádová funkce je trénována pomocí mnoha pozitivních a negativních obrázků, které lze později použít k identifikaci jakéhokoli objektu nebo tváře v jiných médiích. Tyto trénované soubory jsou k dispozici v OpenCV úložiště GitHub.

Pomocí posuvného okna se okno s pevnou velikostí iteruje přes obraz zleva doprava, shora dolů. V každé fázi se okno zastaví a klasifikuje, zda oblast obsahuje plochu nebo ne.

instagram viewer

OpenCV, nástroj počítačového vidění, pracuje s předem trénovaným modelem Haar Cascade pro klasifikaci funkcí. Každá fáze kontroluje pět prvků: dva prvky hran, dva prvky čáry a jeden prvek se čtyřmi obdélníky.

Při pozorování se oblast očí jeví tmavší než oblast tváří, zatímco oblast nosu vypadá jasnější než oblast očí. Tyto funkce si můžete představit níže uvedeným způsobem.

Pomocí těchto funkcí a výpočtu pixelů algoritmus identifikuje více než 100 000 datových bodů. Poté můžete použít algoritmus Adaboost ke zlepšení přesnosti a odstranění nepodstatných funkcí. V mnoha iteracích tento přístup minimalizuje chybovost a zvyšuje váhu prvku, dokud nedosáhne přijatelné přesnosti.

Technika posuvného okna se však zastaví, pokud konkrétní testovací případ selže a je výpočetně nákladný. Chcete-li to vyřešit, můžete použít koncept kaskády klasifikátorů. Namísto použití všech funkcí v jednom okně je tento přístup seskupuje a aplikuje postupně.

Pokud okno selže v první fázi, proces jej zahodí, jinak pokračuje. To vede k drastickému snížení počtu operací, které je třeba provést, a umožňuje to použití pro aplikace v reálném čase.

Pracovní postup detekce obličeje

Při sestavování programu detekce obličejů postupujte podle tohoto algoritmu:

  1. Načtěte algoritmus Haar Cascade Frontal Face.
  2. Inicializujte fotoaparát.
  3. Přečtěte si snímky z fotoaparátu.
  4. Převeďte barevné obrázky do stupňů šedi.
  5. Získejte souřadnice obličeje.
  6. Nakreslete obdélník a vložte příslušnou zprávu.
  7. Zobrazte výstup.

Co je OpenCV?

OpenCV je open-source knihovna pro počítačové vidění a strojové učení. Má více než 2 500 optimalizovaných algoritmů pro různé aplikace. Patří mezi ně detekce obličeje/objektu, rozpoznávání, klasifikace a mnoho dalších.

Ochrana osobních údajů o vašem obličeji je samostatnou starostí. OpenCV používají ve svých aplikacích stovky významných společností jako Google, IBM a Yahoo. Někteří lidé, kteří chtějí zachovat soukromí svých dat, prokázali existují způsoby, jak se vyhnout rozpoznávání obličeje.

Chcete-li nainstalovat OpenCV v Pythonu, použijte příkaz:

pip Nainstalujte opencv-python

Jak vytvořit program pro detekci obličeje pomocí Pythonu

Při sestavení detektoru obličeje postupujte podle následujících kroků:

Tento příklad kódu je spolu se souborem algoritmu Haar Cascade k dispozici v a úložiště GitHub a můžete jej používat zdarma na základě licence MIT.

  1. Stáhněte si Haar Cascade Frontal Face Výchozí XML a umístěte jej na stejné místo jako váš program Python.
  2. Importujte knihovnu OpenCV.
    # import požadovaných knihoven
    import cv2
  3. Uložte soubor algoritmu Haar Cascade Frontal Face pro snadné odkazování.
    # načtení souboru algoritmu haar case do proměnné alg
    alg = "haarcascade_frontalface_default.xml"
  4. Použijte třídu CascadeClassifier k načtení souboru XML do OpenCV.
    # předání algoritmu OpenCV
    haar_cascade = cv2.CascadeClassifier (alg)
  5. Zachyťte video z fotoaparátu. Předejte 0 k Záznam videa() funkce pro použití primárního fotoaparátu. Pokud jste připojili externí kameru, můžete ji použít po sobě jdoucí čísla 1, 2 atd.
    # zachycení videa z kamery
    cam = cv2.VideoCapture (0)
  6. Nastavte nekonečnou smyčku pro čtení vstupního signálu kamery snímek po snímku. The číst() funkce vrací dva parametry. První hodnota je typu boolean označující, zda je operace úspěšná nebo ne. Druhý parametr obsahuje skutečný rámec, se kterým budete pracovat. Tento rám uložte do img variabilní.
    zatímcoSkutečný:
    _, img = cam.read()
  7. Nastavte výchozí text, který se zobrazí jako Obličej nebyl rozpoznán. Po zjištění aktualizujte hodnotu této proměnné.
     text = "Obličej nebyl rozpoznán"
  8. Vstupy přijaté ze skutečného světa jsou barevné, ve formátu BGR. BGR znamená modrou, zelenou a červenou. To vytváří mnoho zpracování pro aplikace počítačového vidění. Chcete-li to snížit, použijte formát ve stupních šedi.
    # převést každý snímek z BGR na stupně šedi
    šedáImg = cv2.cvtColor (img, cv2.COLOR_BGR2GRAY)
    Předejte formát rámce a konverzního kódu, COLOR_BGR2GRAY, do cvtColor() pro změnu každého snímku videa z barevného na stupně šedi.
  9. Použití detectMultiScale() k detekci tváří. Tato metoda bere jako vstup tři parametry. První je zdrojový obrázek, šedáImg. Druhým parametrem je scaleFactor. To určuje, jak moc musíte zmenšit velikost obrázku v každém měřítku obrázku. Jako faktor měřítka použijte výchozí hodnotu 1,3. Čím vyšší měřítko, tím méně kroků a rychlejší provedení. Existuje však také větší pravděpodobnost chybějících tváří. Třetím parametrem je minNeighbors. To určuje, kolik sousedů by měl mít každý kandidátský obdélník, aby jej zachoval. Čím vyšší hodnota, tím menší je šance na falešnou pozitivitu, ale také to znamená, že vám chybí nejasné stopy obličeje.
    # detekce tváří pomocí Haar Cascade 
    face = haar_cascade.detectMultiScale (grayImg, 1.3, 4)
  10. Když detekujete obličej, získáte čtyři souřadnice. x představuje souřadnici x, y představuje souřadnici y, w představuje šířku a h představuje výšku. Aktualizujte text na Detekován obličej a pomocí těchto souřadnic nakreslete obdélník. Barva obdélníku je zelená (BGR) formát o tloušťce dva pixely.
    # nakreslete obdélník kolem obličeje a aktualizujte text na Face Detected
    pro (x, y, š, h) v obličeji:
    text = "Detekován obličej"
    cv2.obdélník(img, (X, y), (X + w, y + h), (0, 255, 0), 2)
  11. Volitelně vytiskněte text na výstupní konzole. Zobrazte text na obrazovce pomocí zachyceného rámečku jako zdroje, textu získaného ve výše uvedeném textu, písma styl FONT_HERSHEY_SIMPLEX, faktor měřítka písma 1, modrá barva, tloušťka dvou pixelů a typ čáry AA.
    # zobrazit text na obrázku
    tisk(text)
    obrázek = cv2.putText (img, text, (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2, cv2.LINE_AA)
  12. Zobrazte okno s názvem Detekce obličeje a obrázek. Použijte waitkey() způsob zobrazení okna na 10 milisekund a kontrola stisknutí klávesy. Pokud uživatel stiskne tlačítko Esc (ASCII hodnota 27), opusťte smyčku.
    # zobrazte výstupní okno a stiskněte klávesu Escape pro ukončení
    cv2.imshow("Detekce obličeje", obraz)
    klíč = cv2.waitKey (10)

    if key == 27:
    přestávka

  13. Nakonec uvolněte objekt fotoaparátu z programu python a zavřete všechna okna.
    vačka.uvolnění()
    cv2.destroyAllWindows()

Detekce obličeje pomocí Pythonu v akci

Když je obličej zobrazen, měli byste vidět výstup takto:

Když není přítomen žádný obličej, zobrazí se tato zpráva:

Omezení detekce obličeje pomocí algoritmu Haar Cascade

I když je tento algoritmus lehký, má malou velikost modelu a funguje rychle, má několik omezení:

  • Ve videu v reálném čase musí být obličej v zorném poli kamery. Pokud je obličej příliš daleko, příliš blízko nebo příliš nakloněný, algoritmus nedokáže zachytit rysy.
  • Jedná se o algoritmus čelní plochy, takže nemůžete detekovat boční pohledy.
  • Vysoké falešně pozitivní výsledky. Často detekuje oblasti jako obličeje, i když tam žádný obličej není.
  • Potřebuje mít optimální světelné podmínky. Nadměrné nebo slabé osvětlení brání přesnosti algoritmu.

Mnoho aplikací detekce obličeje

Detekce obličeje má v dnešním světě širokou škálu aplikací. Můžete jej použít pro rozpoznávání obličejů v chytrých telefonech, domácnostech, vozidlech a imigračních kontrolních bodech. Detekce obličeje je již běžná v CCTV sledování, filtrech sociálních médií a automatickém sledování obličeje v kinematografii.

Je to jen začátek této úžasné technologie. Díky pokroku bychom mohli být schopni identifikovat pohřešované děti, chytit zločince a předcházet zločinům, jako je krádež identity.