Aplikacja MATLAB w rozpoznawaniu twarzy: kod, opis i składnia

Opublikowany: 2020-06-23

Za każdym razem, gdy odblokowujesz telefon za pomocą twarzy lub przechodzisz przez zaawansowany technologicznie system nadzoru biurowego, w tle działa skomplikowana technologia rozpoznawania twarzy. Czym więc jest rozpoznawanie twarzy i jak można przeprowadzić rozpoznawanie twarzy za pomocą MATLAB ?

Rozpoznawanie twarzy to proces identyfikacji ludzkich twarzy za pomocą technologii. System rozpoznawania twarzy wykorzystuje widzenie komputerowe i techniki uczenia maszynowego do modelowania i klasyfikowania rysów twarzy wyodrębnionych z obrazów i filmów. Algorytmy do identyfikacji twarzy wyodrębniają i mapują rysy twarzy oraz porównują je z bazą danych znanych twarzy, aby znaleźć najlepsze dopasowanie.

Źródło

Spis treści

MATLAB w rozpoznawaniu twarzy

Możliwe jest uzyskanie rozpoznawania twarzy za pomocą kodu MATLAB. Wbudowana klasa i funkcja w MATLAB mogą być używane do wykrywania twarzy, oczu, nosa i ust. Object vision.CascadeObjectDetector System przybornika komputerowego systemu wizyjnego rozpoznaje obiekty w oparciu o algorytm wykrywania twarzy Viola-Jones.

Opis wykrywacza obiektów MATLAB

vision.CascadeObjectDetector wykorzystuje algorytm Viola-Jones do identyfikacji twarzy, oczu, ust, nosa lub górnej części ciała. Niestandardowy klasyfikator można wytrenować za pomocą programu MATLAB Image Labeler i używać wraz z obiektem System. Jak więc na zdjęciu wykrywane są rysy twarzy lub górna część ciała? Oto kroki:

  1. Pierwszym krokiem jest stworzenie obiektu vision.CascadeObjectDetector i ustawienie jego właściwości.
  2. W tym kroku obiekt jest wywoływany z argumentami (tak jakby zachowywał się jak funkcja).

Przeczytaj: 15 ciekawych pomysłów i tematów na projekty MATLAB dla początkujących

Składnia tworzenia detektora obiektów

Składnia użyta do stworzenia detektora obiektów jest następująca:

  • detektor = wizja.CascadeObjectDetector
  • detektor = wizja.CascadeObjectDetector(tryb1)
  • Detektor = wizja.CascadeObjectDetector(Nazwa,Wartość)
  • detektor = wizja.CascadeObjectDetector(XMLFILE)

Opis składni

  • detektor = vision.CascadeObjectDetector: Ta składnia służy do tworzenia detektora wykrywającego obiekty przy użyciu algorytmu Viola-Jones.
  • detektor = vision.CascadeObjectDetector(mode1): Ta składnia służy do tworzenia detektora skonfigurowanego do wykrywania obiektów zdefiniowanych przez wektor wejściowy – mode1.
  • detektor = wizja.CascadeObjectDetector(Nazwa,Wartość): Ta składnia służy do ustawiania właściwości przy użyciu jednej lub więcej niż jednej pary nazwa-wartość, gdzie każda nazwa właściwości jest ujęta w cudzysłów. Na przykład: detektor = wizja.CascadeObjectDetector('ClassificationModel','UpperBody')

Sprawdź: Pomysły na projekty uczenia maszynowego

Nieruchomości

O ile nie określono inaczej, cechy kaskadowego detektora obiektów nie są przestrajalne, co oznacza, że ​​po wywołaniu obiektu nie można zmienić ich wartości. Obiekty zostają zablokowane, gdy są wywoływane, a ich odblokowanie odbywa się za pomocą funkcji „uwolnienia”.

Z drugiej strony, przestrajalna właściwość oznaczałaby, że jej wartość można zmienić w dowolnym momencie. Przyjrzyjmy się więc niektórym funkcjom, zanim zrozumiemy rozpoznawanie twarzy za pomocą kodów MATLAB.

  • ClassificationModel: Zdefiniowana jako wektor znaków, ta właściwość jest odpowiedzialna za kontrolowanie typu obiektu do wykrycia. Domyślna konfiguracja detektora wykrywa twarze.
  • MinSize: Rozmiar najmniejszego rozpoznawalnego obiektu jest oznaczony jako wektor dwuelementowy [wysokość szerokość]. O ile nie określono wartości właściwości, detektor ustawia ją na rozmiar obrazu używany do uczenia modelu klasyfikacji.
  • MaxSize: Rozmiar najmniejszego rozpoznawalnego obiektu jest oznaczony jako dwuelementowy wektor [wysokość szerokość] . O ile nie określono wartości właściwości, detektor ustawia ją na rozmiar (I).
  • ScaleFactor: ma określoną wartość wyższą niż 1.0001. Ta właściwość służy do przyrostowego skalowania rozdzielczości wykrywania między MinSize i MaxSize.
  • MergeThreshold: ma określoną wartość całkowitą równą 4. W przypadku wielu wykryć wokół obiektu docelowego, próg określa ostateczne kryteria wykrywania.
  • UseROI: Określona jako false, ta właściwość może być ustawiona na true w celu wykrywania obiektów w prostokątnym obszarze zainteresowania w obrazie wejściowym.

Składnia korzystania z wykrywacza obiektów

  • bbox = detektor(I)
  • bbox = detektor(I,roi)

Opis składni

  • bbox = detektor(I) zwraca bbox, macierz M -na-4, która definiuje ramki graniczne ' M ' zawierające wykryte obiekty.
  • bbox = detektor(I,roi) służy do wykrywania obiektów w prostokątnym obszarze zainteresowania określonym przez roi.

Argumenty wejściowe

  • I — Obraz wejściowy: jest określany jako prawdziwy kolor lub w skali szarości (RGB).
  • model — Model klasyfikacji: jest określany jako wektor znaków i opisuje typ obiektu, który ma zostać wykryty.
  • XMLFILE — niestandardowy model klasyfikacji: określony jako plik XML, można go utworzyć za pomocą funkcji szkoleniowej OpenCV lub funkcji trainCascadeObjectDetector.
  • roi — Prostokątny obszar zainteresowania: czteroelementowy wektor [ x y szerokość wysokość ] jest używany do określenia tego argumentu wejściowego.

Argumenty wyjściowe

bbox — Wykrycia: Wykrycia są zwracane jako macierz M -na -4 elementów, której każdy wiersz zawiera czteroelementowy wektor [ x y szerokość wysokość ].

Funkcje obiektów wspólne dla wszystkich obiektów systemowych

  • Krok: Do uruchomienia algorytmu obiektów systemowych
  • release: Do zwalniania zasobów systemowych
  • reset: Do resetowania wewnętrznych stanów obiektu systemowego.

Kod MATLAB do rozpoznawania twarzy

W tej sekcji zobaczymy przykład rozpoznawania twarzy za pomocą kodu MATLAB.

Wykrywanie twarzy

Źródło

Źródło

Krok(Detector,I) zwróci wartość Bounding Box zawierającą [x,y,Height,Width] obiektów objętych wykryciem:

Źródło

Wykrywanie nosa

Źródło

Źródło

Opis:

  • Przekazanie argumentu „Nos” oznacza, że ​​przedmiotem zainteresowania jest nos.
  • Domyślną składnią wykrywania nosa jest wizja.CascadeObjectDetector('Nos')
  • Domyślne wartości parametrów przekazywane do vision.CascadeObjectDetector można modyfikować na podstawie obrazu wejściowego.
  • Wartość „MergeThreshold” można zastąpić, aby uniknąć wielokrotnych wykryć wokół obiektu docelowego (jak na powyższym obrazku).

Wykrywanie oczu

Źródło

Źródło

Wykrywanie ust

Źródło

Źródło

Przeczytaj także: Pętla While w MATLAB: Wszystko, co musisz wiedzieć

Zawijanie

Chociaż technologia rozpoznawania twarzy jest korzystna dla weryfikacji tożsamości osobistej, powoduje problemy z prywatnością. Ponieważ technologia wykorzystuje odcisk twarzy osoby, jest często uważana za naruszenie prywatności, bezpieczeństwa i ochrony. Rozpoznawanie twarzy przy użyciu MATLAB może być stosowane w kilku przypadkach, w których bezpieczeństwo jest sprawą najwyższej wagi. Od lotnisk i urzędów po smartfony, rozpoznawanie twarzy stało się integralną częścią wielu systemów i organizacji.

Jeśli chcesz dowiedzieć się więcej o uczeniu maszynowym, sprawdź dyplom PG IIIT-B i upGrad w uczeniu maszynowym i sztucznej inteligencji, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 450 godzin rygorystycznego szkolenia, ponad 30 studiów przypadków i zadań, IIIT- Status absolwenta B, ponad 5 praktycznych, praktycznych projektów zwieńczenia i pomoc w pracy z najlepszymi firmami.

Co to jest rozpoznawanie twarzy?

Rozpoznawanie twarzy może służyć do ochrony przed kradzieżą tożsamości, a także do identyfikacji osób po imieniu. Jednak biorąc pod uwagę, że rozpoznawanie twarzy jest stosunkowo nowe i stale się rozwija, ważne jest, aby zrozumieć podstawy rozpoznawania twarzy, aby móc z niego efektywnie korzystać. Rozpoznawanie twarzy odnosi się do procesu określania, czy obraz twarzy należy do znanej osoby. Problem rozpoznawania twarzy można podzielić na dwa zadania: 1) Face Detection – zlokalizowanie twarzy na obrazie, 2) Face Recognition – identyfikacja osoby, której jest twarzą.

Co to jest Matlab?

Matlab to język programowania do obliczeń numerycznych. Zasadniczo jest to język programowania macierzowego. Jest często używany w obliczeniach naukowych i inżynierskich. W przeciwieństwie do innych języków programowania, MATLAB został zaprojektowany jako język macierzowy, odpowiedni do obliczeń na macierzach. Macierze są używane w wielu różnych równaniach, zwłaszcza w obliczeniach naukowych i inżynierskich. Matlab to język programowania wysokiego poziomu, który zawiera wiele funkcji. Służy do rozwiązywania problemów matematycznych, analizy danych i tworzenia wykresów.

Czym jest Viola Jones w Matlabie?

Algorytm Viola Jones służy do wykrywania twarzy i rozpoznawania mimiki. Algorytm Viola Jones jest oparty na histogramach zorientowanych gradientów (HOG), wprowadzonych po raz pierwszy przez Paula Violę i Michaela Jonesa w 2001 roku. Jest używany w wizji komputerowej, uczeniu maszynowym i przetwarzaniu obrazu. Algorytm Viola Jones zapewnia kompletny system wykrywania obiektów i może być używany do wykrywania pieszych, obiektów lub ludzi. Algorytm Viola Jones składa się z etapu wyodrębniania cech, etapu grupowania i etapu klasyfikacji obiektów.