Rozpoznawanie twarzy na iPhonie

Jak mogę zrobić rozpoznawanie twarzy na iPhonie. Czy ktoś mógłby podać mi referencje/artykuły, aby wskazać mi właściwy kierunek? Zrobiłem badania i zdałem sobie sprawę, że muszę najpierw zrobić wykrywanie twarzy, aby wyodrębnić obraz, a następnie zrobić rozpoznawanie twarzy, porównując go z innymi obrazami w bazie danych.

Zdałem sobie sprawę, że mam zrobić wykrywanie twarzy za pomocą OpenCV lub za pomocą iOS 5.0 i wyżej do wykrywania twarzy. Nie mam pewności co do rozpoznawania twarzy. (Planuję zapisanie obrazów w zdalnej bazie danych, a następnie wykonanie porównania ze zdalną bazą danych).

Author: Josh Caswell, 2012-04-23

5 answers

Wykrywanie twarzy

Użyłbym Haarcascades dostępnych w otwartym CV do szybkiego i dokładnego wykrywania twarzy.

Http://opencv.willowgarage.com/wiki/FaceDetection

Rozpoznawanie twarzy

Użyłbym metody takiej jak Principal Component Analysis (PCA) vel eigenfaces.

Http://www.cognotics.com/opencv/servo_2007_series/part_5/index.html

Ten link pokazuje tutorial Jak to działa z OpenCV-myślę, że to jest napisane dla C, ale jestem pewien, że można uzyskać podstawowe jist z niego.

Możesz również spojrzeć na wdrożenie go samodzielnie, jeśli czujesz się odważny (nie jest tak źle)...

Http://www.face-rec.org/algorithms/PCA/jcn.pdf

Http://blog.zabarauskas.com/eigenfaces-tutorial/

Baza Danych

Faktycznie zrobiłem coś podobnego do ciebie, choć na PC Nie iPhone, ale jego wciąż ta sama koncepcja. Wszystkie moje zdjęcia zapisałem w baza danych jako typy danych Blob następnie załadował je do mojego programu, gdy to konieczne.

Edit

Baza danych jest szczególnie trudną częścią systemu, ponieważ to tutaj znajduje się największe wąskie gardło. W mojej aplikacji, chciałbym przejść przez następujące kroki...

  1. Otwórz aplikację i pobierz obrazy treningowe z bazy danych
  2. Wygeneruj zestaw treningowy na podstawie tych obrazów
  3. Po ukończeniu 1 i 2 System jest bardzo szybki, ponieważ po prostu wykonuje rozpoznanie w stosunku do zestawu treningowego.

Na szczęście dla mnie, mój serwer baz danych znajdował się w sieci LAN, więc prędkość nie była problemem, jednak widzę, dlaczego masz problem ze względu na fakt, że na urządzeniu mobilnym masz ograniczone połączenie danych (prędkość/przepustowość). Możesz skompresować obrazy, jednak może to prowadzić do gorszego wskaźnika rozpoznawania, ze względu na obniżenie jakości obrazu, a także będziesz musiał dekodować na urządzeniu. Jest też kwestia tego, jak zdemaskować zdalna baza danych do aplikacji, jednak uważam, że jest to możliwe przy użyciu PHP i JSON(i innych technologii, patrz poniżej).

Pobieranie danych ze zdalnej bazy danych

Może mógłbyś zrobić wstępną synchronizację z bazą danych, aby obrazy były buforowane w telefonie? Tak czy inaczej myślę, że prawdopodobnie będziesz musiał mieć obrazy w telefonie w pewnym momencie niezależnie od tego.

Wymyślanie najlepszego sposobu przechowywania danych/obrazów rozpoznawania w bazie danych było jednym z największych wyzwań, przed którymi stanąłem, więc byłbym zainteresowany, jeśli znajdziesz dobrą metodę.

 14
Author: TomP89,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:32

Jak zauważyłeś, pierwszy krok (wykrywanie twarzy) jest łatwy z iOS 5 I CoreImage.framework. Szybki przykład:

CIImage *image = [CIImage imageWithCGImage:image_ref];
NSDictionary *options = [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy];
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:options];
NSArray *features = [detector featuresInImage:image];

for (CIFaceFeature *feature in features)
{
  CGRect face_bounds = [feature bounds];
  CGPoint mouth_position = [feature mouthPosition];
  // do something with these values
}

W odniesieniu do drugiej części twojego pytania (tj. rozpoznawania twarzy ), pozostawiam to komuś bardziej wykwalifikowanemu niż ja, aby odpowiedział. :)

 12
Author: Sedate Alien,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-23 02:40:43

Prawdopodobnie chcesz spojrzeć na projekt midian autorstwa Pedro Centieiro, który wykonuje Rozpoznawanie twarzy na iOS 5 za pomocą OpenCV. Jest na GitHubie pod adresem:

Używa części mojego libfacerec, więc obsługuje histogramy Eigenfaces, Fisherfaces i lokalne binarne Wzorce do rozpoznawania twarzy.

 9
Author: bytefish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-28 13:08:48

Rozpoznawanie twarzy może być zaimplementowane jako algorytm uczenia maszynowego. Ta książka ma rozdział, który opisuje to zadanie i jak je realizować. Warto przeczytać!

Używa rozkład pojedynczej wartości (SVD), a dokładniej tensor SVD Metoda .

 2
Author: João Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-22 21:11:46

Mamy następujące API rozpoznawania twarzy :-

1. OpenCV

2. Kairos

3. CraftarAR

4. AAFaceDetection

5. MoodMe

I moim zdaniem {[1] } jest dobry, jeśli chcesz używać w aplikacji offline, a jeśli chcesz używać online, to Kairos jest najlepszy. Podczas gdy OpenCV jest również znaną i niezawodną opcją.

A najlepszą zaletą OPENCV jest to, że jest open source.

Przeszukaj je w google, aby uzyskać więcej szczegółów, a także spójrz na przykłady github, aby zobaczyć, jak działają te api.

 1
Author: Shubham Mishra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-03 11:40:08