rozpoznawanie twarzy

0

Witam, nie wiedzialem zabardzo jaki wybrac dzial wiec w razie czego prosze o przeniesienie.
do rzeczy - chcialbym napisac aplikacje do rozpoznawania stanow emocjonalnych twarzy.
Pierwszy problem to oczywiscie zlokalizowanie twarzy. Z pewnych ideologicznych powodow zalezy mi - by jak najwiecej elementow programu bylo zorganizowane w sieciach neuronowych.
Jest to jednak zadanie nielatwe - pierwszy problem nasuwajacy sie - to wielkosc i rotacja twarzy. Moj pierwszy pomysl jest taki - aby pierwsza warstwe aplikacji zorganizowac w sieci rekurencyjnej komorkowej. Wyznaczyc atraktory dla prostego ksztaltu kola (owalu) z dwoma punktami w srodku (oczy) i jakas krzywa troszke ponizej oczu (usta). Na potrzeby mojej pracy taki ksztalt bedzie spewnoscia wystarczajacy. Jednak problem jest taki, ze nie wiem jak zorganizowac taka strukture, by rozpoznawala dany ksztalt niezaleznie od wielkosci. Chcialbym wmiare jesli to tylko w jakis sposob mozliwe pominac rozwiazania mechaniczne typu zmniejszania pola przeszukiwania albo powiekszania matrycy.
Czy jest jakas struktura sieci ktora rozpozna mi piksele niezaleznie od ich wielkosci (rotacja nie jest zbyt istotna w tej pracy - zakladam ze twarze beda fotografowane zawsze w standardowej pozycji)
Myslalem o sieci hopfilda - ale ten pomysl jest raczej niedoprzyjecia, z powodu iz na obraz nawet niwielki polaczenie kazdego piksla z kazdym to masakra, zreszta nie wiem czy takie rozwiazanie bylo by skuteczne, bo nadal nie wiem czy taka struktura rozpozna zadany obiekt niezaleznie od wielkosci.
Oczywiscie jest tez mozliwosc stworzenia zwyklej sieci backpropagation i dobor takiego ciagu uczacego, by obiekt byl w kazdej mozliwej pozycji i w kazdej mozliwej wielkosci. jednak takie rozwiazanie uwazam za ostatecznosc. Zalezy mi w zwiazku z moja praca inzynierska by rozwiazanie przeze mnie przyjete bylo jak najbardziej zblizone do naturalnego systemu rozpoznawania czlowieka, a system wzrokowy czlowieka nie musi sie przecieŻ uczyc obiektu w kazdym jego mozliwym polozeniu i rozmarze.
Czy macie moze jakies sugestie, jakiej struktury sieci neuronowej mozna by uzyc, by wyeliminowac roznice wielkosci rozpoznawanego ksztaltu?

0

po pierwsze zdjecie bo tak wnioskuje ze uzywasz xzdjec lepiej zeby by;lo rownie osweitlone z jednolitym tlem do okola co nam daje wyodrebnienie tla , ogolne waznejest w takim przypadku zeby robic xzdjecia tak zeby program mogl je odczytac :)))))

ja mam taki problem z rozpoznawaniem twarzy ze jakbym chcial zeby mi znalazl glowe goscia to w zaleznosci od oswietlenia glowa jest podzielona na 2 lub wiecej kawalkow.

sieci neuronowe? znalazlem kod takiej sieci - wychodzi ze to pic na wode jakis dziwny z potegowaniem

0

no zrobic odpowiednie zdjecie z odpowiednim oswietleniem i odpowiednim tlem a potem zbinaryzowac obraz to nie problem. ale nie ma tak latwo. musze wyodrebinc twarz po ksztalcie - musze uzyc sieci neuronowych.
taka praca.
Moze ma ktos jakies informacje na temat struktur NTN lub PCNN ?

0

http://www.google.pl/search?q=face+recognition+neural+network
Na wstęp drugi link (PDF) będzie chyba dobry. Masz opisane kolejne etapy i budowę sieci.

0

moge ci dac kod w c++ z tymi sie3ciami neurownowymi

0

hej, Komorkowy_dzony - chetnie, poprosze jesli jeszcze to aktualne.

Zbudowalem siec komorkowa. Fajnie dziala dla obrazow sztucznych to znaczy dla regularnuch kwadratow owali trojkatow, slowem, regularnych kształtow podstawowych.
niestety nie potrafie znalezc parametrow aby wyszukiwalo mi przyblizone owale na obrazach rzeczywistych. Bawil sie moze ktos sieciami komorkowymi albo automatami komorkowymi ?
mozna liczyc na czyjas pomoc ? jakies naprowadzenie ?

0

nikt sie nie zna na sieciach komorkowych ? :(
mam juz dosc myslenia, przejrzalem juz tysiace mozliwosci i zadne nie chca wykrywac owalu :D
zastanawiam sie czy nie sprobowac podlaczyc to wszystko pod algorytm genetyczny, ale co z tego wyjdzie to ja juz nie wiem :D

0

nieedytuje jako iz duzo czasu minelo.

wiem juz jak to nalezy zrobic. Otoz trzeba skorzystac z tzw nieliniowych sieci neuronowych komorkowych, w ktorych wagi nie sa ustalone z gory, tylko waga szablonu A jest zmienna, jesli obiekt jest taki jak nam odpowiada to daje sie 1, a jesli nie to -1, dzieki czemu przez sprzezenia zwrotne obiekt wlasciwy sam sie wypelni, a jesli niepasuje do przyjetego zalozenia sam sie zerozuje. moze sie komus to przyda ;)

a teraz moje pytanie zwiazane z powyzszym.
jakie sa metody na okreslenie komputerowe ksztaltu ?
ja mam dwa pomysly ale obydwa mi nie pasuja zbytnio:
raz to wspolzynniki ksztaltu, ale sa zlozone obliczeniowo i zbyt niedokladne jak na system percpepcji.
drugi pomysl jest lepszy - aproksymacja krzywymi beziera.
no z pewnych powodow wolalbym ich uniknac. poza tym to bylo by bardzo, oj bardzo skomplikowane, kazda linie w obrazie aproksymowac i porownywac to troche ciezka sprawa. choc jak nie bedzie wyjscia to skorzystam z tej metody.

no ale moze sa jeszcze jakies inne metody reprezentowania ksztaltu ?
nie chodzi o skomplikowane linie.
z obrazu, z ktorego wyodrebnilem wszystkie kontury chce wyodrebnic jeszcze tylko te najistotniejsze dla mojego zadania. Sa to
proste - we wszystkich kierunkach, mianowicie pionowe, ukosne, poziome - ale to juz udalo mi sie zrobic, nie jest to trudne, jak ktos bedzie chcial szablon do sieci komorkowej do wykrywania takich prostych to podrzuce. teraz chodzi mi glownie o reprezentacje polokregow i polowali.
jak sprawdzic czy dana linia w obrazie jest polokregiem lub polowalem, nie korzystajac z krzywych beziera i nie korzystajac ze wspolczynnikow ksztaltu, a jednoczesnie uniezaleznic ja od jej rozmiaru, a wiec w pewnym sensie zakladajac reprezentacje wektorowa ?
bardzo przydalby mi sie jakis pomysl, kierunek, w ktorym moge szukac, dlatego prosze o pomoc.

Pozdrawiam serdecznie :)

0

hej robaczki, widze ze moj temat cieszy sie ogromnym zainteresowaniem :-D
nie wiem czy oplaca sie dalej pytac, bo tu chyba nikt nie ma nic wspolnego z matematyka lub algorytmika, no ale napisze jeszcze, wsumie pytac zawsze warto ;)

aha, najpierw co do poprzedniego postu, otoz wymyslilem sobie swoja wlasna metode jak zaproksymowac linie podana na wejscie do sieci komorkowej.
otoz - polega ona na tym ze w kazdej komorce rozpatruje jednoczesnie 2 wymiary funkcji ( jesli chce aproksymowac wiel. stopnia 2 ) i kazda komorke aproksymuje tylko z uwagi na jej sasiedztwo, przyjalem dla ulatwienia 3x3. wyjscie komorki robie liniowe, a nastepnie usredniam wartosc kazdej z nich tak dlugo az wszystkie beda mialy taka sama wartosc - to bedzie szukany wspolczynnik w moim wielomianie.
tak bajdełej - to nie mam pojecia czy to ma jakis sens :D
no ale chce sprobowac.

w zwiazku z powyzszym - moje kolejne pytanie jest takie:

jak algorytmicznie zaproksymowac funkcje w ktorej wartosci dane sa w tablicy 3x3 ?
probelm ze zwyklymi metodami polega na tym iz np takich wartosci

0   1   0
0   1   0
1   0   0

nie zaproksymuje gdyz funkcja nie moze zawierac dwóch takich samych X.
oczywiscie ja wiem ze to chodzi o wartosci przyblizone - 1,0000 i 1,0001 no ale hehe, no wlasnie, ja wiem, komputer nie :D
reczne ustawienie mija sie z celem, bo jesli mialbym to robic, to dla kazdego przypadku moglbym od razu stawic wynik, tylko ze w tablicy 3x3 mozliwych kombinacji zapalonych badz zgaszonych pikseli bedzie raczej zbyt wiele, by wpisywac je recznie.
a co dopiero jak bym chcial rozszerzyc macierz sasiedztwa ?
hehe

czy kto wie cos o metodzie aproksymacji obrazow w postaci bitmapy ?
wsumie nie ludze sie, ale jak ktos wie to prosze o pomoc ;)

pozdrowki :)

0

Odkopuję, bo sam się zająłem tematem ostatnio. Jeśli możesz skorzystać z gotowych rozwiązań, polecam darmową bibliotekę OpenCV.

@Endrju, czemu nie i co w zamian?

1 użytkowników online, w tym zalogowanych: 0, gości: 1