Pracuję nad małym projektem z udziałem twarzy użytkowników Twittera za pośrednictwem ich zdjęć profilowych.
Problem, z którym się spotkałem, to fakt, że po odfiltrowaniu wszystkich zdjęć oprócz tych, które są wyraźnymi zdjęciami portretowymi, niewielki, ale znaczny odsetek użytkowników Twittera używa zdjęcia Justina Biebera jako swojego profilu.
Aby je odfiltrować, w jaki sposób mogę programowo stwierdzić, czy zdjęcie pochodzi od Justina Biebera?
[justin-bieber]
tagu.Odpowiedzi:
Lepszym pomysłem może być usunięcie wszystkich obrazów, które pojawiają się w kanale więcej niż jednego użytkownika - rozpoznawanie nie jest konieczne.
źródło
Mam wrażenie, że rozwiązaniem może być http://www.tineye.com/commercial_api . Wystarczy rzucić zdjęcie profilowe Twittera na Tineye, aby zobaczyć, czy zwraca obrazy (i powiązane adresy URL), które można jednoznacznie zidentyfikować (lub automatycznie ocenić przy użyciu prostej logiki liczenia słów) jako powiązane z (lub z) niewielkim workiem * *.
Simples!
źródło
Ponieważ możesz filtrować tylko do tych, które są wyraźnymi zdjęciami portretowymi, zakładam, że masz jakąś metodę generowania funkcji, aby przekształcić surowe obrazy w funkcje przydatne do celów uczenia maszynowego. Jeśli to prawda, możesz spróbować wyćwiczyć algorytm klasyfikacji (jest ich wiele: sieci neuronowe itp.), Dostarczając algorytmowi kilka znanych zdjęć Biebera, a także grupę znanych nie-Bieberów. Po wytrenowaniu modelu można go przewidzieć, czy nowy obraz jest Bieber, czy nie.
Ten rodzaj nadzorowanej techniki uczenia się wymaga posiadania danych, w których znasz poprawną odpowiedź (Bieber lub nie), ale prawdopodobnie można je znaleźć w wyszukiwaniu obrazów Google. Wymaga to również posiadania odpowiednich funkcji, a ja nie wiem wystarczająco dużo o przetwarzaniu obrazu lub algorytmie, aby wiedzieć, czy jest to poważna wada.
źródło
Możesz użyć metody takiej jak eigenfaces, http://en.wikipedia.org/wiki/Eigenface . Poniżej znajduje się krótki opis procedury oraz linki do różnych implementacji.
http://www.pages.drexel.edu/~sis26/Eigenface%20Tutorial.htm
Odtąd często stosuje się to w podejściu do klasyfikacji, trenuje model, a następnie przewiduje przypadki. Możesz to zrobić, trenując na gronie znanych celebrytów. Jeśli przewidujesz twarz z twittera jako osobę w wyszkolonym modelu celebrytów, usuń ją. Podobne do tego http://blog.cordiner.net/2010/12/02/eigenfaces-face-recognition-matlab/
To cierpi z powodu ciągłych poprawek. Wkrótce pojawi się nowy Justin Bieber, który nie będzie w twoim wyszkolonym modelu, więc nie możesz go przewidzieć. Jest też przypadek taki jak Whitney Houston, być może nigdy nie pomyślałeś o dodaniu jej wcześniej, ale przez kilka tygodni może być zwykłym obrazem z szacunku i podziwu. Jednak nie będziesz mieć wad zdjęć dziecięcych, jak wspomniano powyżej. Aby przezwyciężyć te problemy, można zastosować bardziej hierarchiczne podejście klastrowe. Usuwając kilka pierwszych zestawów klastrów, które są bardzo blisko siebie, jeśli osiągną pewien poziom wsparcia, twój pierwszy klaster ma 15 przedmiotów przed zbudowaniem drugiego. Teraz nie musisz się martwić, czyje to w modelu treningowym, ale wpadniesz w problem ze zdjęciami niemowląt.
źródło
http://face.com/ ma bezpłatny interfejs API rozpoznawania twarzy
źródło
Jeśli chcesz to zrobić sam, polecam skorzystanie z darmowego i otwartego oprogramowania Intel OpenCV (CV for computer vision).
http://opencv.willowgarage.com/
http://oreilly.com/catalog/9780596516130
źródło
Musisz włączyć algorytm wykrywający, do której osoby odnosi się to zdjęcie. Możesz zbudować model na podstawie różnych zdjęć portretowych słynnej osobowości i użyć klasyfikatorów, aby upewnić się, że to zdjęcie odnosi się do jednego z twoich zdjęć z bazy danych. Musisz użyć określonego klasyfikatora opartego na różnych parametrach podobnych do twarzy, takich jak odległość między oczami lub inne parametry, aby zwiększyć dokładność swojego modelu. Istnieje również analiza skóry. Najważniejsze jest zbudowanie dobrego klasyfikatora. Ta metoda może być podatna na ataki.
Ale jest też bardzo dobry projekt pracujący nad rozpoznawaniem twarzy http://opencv-code.com/Opencv_Face_Detection
źródło
Możesz spróbować mieszania wrażliwego na lokalizację .
źródło