Czułość skali konwolucyjnej sieci neuronowej

11

Na przykład załóżmy, że budujemy estymator wieku na podstawie obrazu osoby. Poniżej mamy dwie osoby w garniturach, ale pierwsza jest wyraźnie młodsza niż druga.


(źródło: tinytux.com )

Sugeruje to wiele funkcji, na przykład struktura twarzy. Jednak najbardziej wymowną cechą jest stosunek wielkości głowy do wielkości ciała :


(źródło: wikimedia.org )

Załóżmy więc, że wyszkoliliśmy regresję CNN, aby przewidzieć wiek osoby. W wielu predyktorach wieku, które wypróbowałem, powyższe zdjęcie dziecka wydaje się oszukiwać prognozy, aby myśleć, że jest starszy, z powodu koloru i prawdopodobnie dlatego, że opierają się głównie na twarzy:

Zastanawiam się, jak dobrze architektura waniliowa CNN może wywnioskować stosunek głowy do tułowia?

W porównaniu z regionalnym RCNN, który jest w stanie uzyskać granice na ciele i głowie, czy waniliowa CNN zawsze będzie działać gorzej?

Tuż przed globalnym spłaszczeniem waniliowej CNN (tj. Tuż po wszystkich zwojach) każde wyjście ma odpowiadające mu pole odbiorcze, które powinno mieć poczucie skali. Wiem, że szybszy RCNN wykorzystuje to, tworząc propozycje ramek ograniczających dokładnie na tym etapie, dzięki czemu wszystkie wcześniejsze filtry splotowe automatycznie trenują do wszystkich skal.

Sądzę więc, że waniliowy CNN powinien być w stanie wywnioskować stosunek wielkości głowy do tułowia? Czy to jest poprawne? Jeśli tak, to czy jedyną korzyścią z zastosowania szybszego frameworka RCNN w celu wykorzystania faktu, który mógł być wcześniej przeszkolony w zakresie wykrywania ludzi?

Alex R.
źródło
1
Czy wiesz, gdzie dokładnie zawodzi twój moduł rozpoznawania wieku? Jak myślisz, dlaczego jest to proporcja wielkości głowy? Czy spojrzałeś na wynik środkowych warstw?
Aksakal
@Aksakal Nie sądzę, żeby eksperymentował ze szkoleniem CNN. Z tego, co zrozumiałem, przeprowadzał testy z istniejącymi serwisami internetowymi: „W wielu predyktorach wieku, które próbowałem […]”.
DeltaIV

Odpowiedzi:

8

Po pierwsze, dziękuję za postawienie bardzo interesującego pytania.

Aby odpowiedzieć na to wkrótce, wyszkolony waniliowy konwerter końca 2-końca do przewidywania wieku na podstawie zdjęcia będzie ogólnie skłonny do błędnej klasyfikacji zdjęć, takich jak ten, który opublikowałeś . Po drugie, należy pamiętać, że dokładne oszacowanie wieku osoby jest prawie niemożliwym zadaniem 1 .

Główną różnicą w stosunku do proponowanego podejścia polegającego na użyciu niektórych detektorów obiektów (RCNN, Faster RCNN, YOLO lub SSD) jest to, że używasz różnych informacji do szkolenia modeli. CNN jest przeszkolony tylko w zakresie obrazów i musi samodzielnie znaleźć wszystkie niezbędne funkcje. Najprawdopodobniej znajdzie różne rysy twarzy, ale będzie też polegać na odzieży i być może scenach (dzieci mogą często znajdować się na zdjęciu z niektórymi zabawkami, dorośli będą częściej w środowisku biurowym itp.). Funkcje te nie będą odporne na kontrprzykład.

Z drugiej strony, jeśli trenujesz sieć, aby jawnie wykrywała obiekty jako „tułów” i „głowa”, dostarczasz dodatkowych informacji, że obiekty te są ważne dla zadania, a tym samym upraszczasz problem 2 .

Choć podejście polegające na wykrywaniu głowy i tułowia, a następnie ocenie stosunku wielkości obwiedni brzmi interesująco, widzę kilka przeszkód:

  1. Uzyskiwanie danych: Nie jestem świadomy dostępności dużego zbioru danych, w którym byłyby obecne zarówno wiek, jak i granice.
  2. Niedoskonały obszar widzenia: na większości obrazów (np. W obu twoich przykładach) ludzie nie są wyświetlani w całości. Musiałbyś sobie poradzić z faktem, że ramki ograniczające tułów nie zawsze byłyby idealne po prostu dlatego, że część osoby nie jest widoczna na zdjęciu, a sieć musiałaby zgadywać, jak dużej części brakuje (a ramki ograniczające prawdę o ziemi prawdopodobnie nie przechwytuje tych informacji). Ponadto wyżej wymienione detektory obiektów nie zawsze poprawnie obsługują przewidywania obiektów częściowych. Może to powodować zbyt duży hałas w modelu.
  3. Różne pozy: stosunek tułowia do głowy byłby bardzo różny dla osób oglądanych z przodu iz boku.
  4. Dorośli: Wydaje się, że stosunek ten dobrze sprawdza się w przewidywaniu wieku od 0 do 21 lat, ale nie widzę, jak pomógłby przewidzieć wiek dorosłych (przypuszczam, że stosunek ten nie zmienia się w wyższym wieku).

Wszystkie te problemy sugerują, że podejście stosunek głowy do tułowia również nie będzie działało idealnie, chociaż może być bardziej odporne na konkretny kontrprzykład.

Myślę, że najlepszym sposobem na wykonanie tego zadania byłoby 1) wykrycie twarzy, 2) przewidywanie wieku tylko na podstawie przycięcia twarzy (usuwa potencjalnie wprowadzające w błąd informacje). Zauważ, że niektóre architektury podobne do R-CNN korzystające z puli ROI mogłyby zostać przeszkolone do wykonywania tego typu koniec-koniec.


1 Nawet przy użyciu bardzo wyrafinowanych metod medycznych (które są prawdopodobnie o wiele bardziej pouczające niż zdjęcie osoby) nie można tego dokładnie zrobić. Zobacz ten wątek Quora, aby uzyskać więcej informacji .

2 Sprawdź artykuł Sprawy wiedzy: Znaczenie wcześniejszych informacji dla optymalizacji, na przykład, w jaki sposób przekazanie częściowej wiedzy na temat zadania może znacznie uprościć naukę.

Jan Kukacka
źródło
8

CNN są zbyt dużą klasą modeli, aby odpowiedzieć na to pytanie. LeNet, AlexNet, ZFNet i VGG16 będą zachowywać się zupełnie inaczej niż GoogLeNet, który został zbudowany specjalnie w celu wykonywania większości tego, co robią R-CNN, z architekturą CNN (możesz znać GoogLeNet o nazwie Inception, chociaż ściśle mówiąc Inception jest po prostu podstawowa jednostka (podsieć), na której zbudowana jest GoogLeNet). Wreszcie ResNets będą zachowywać się inaczej. Wszystkie te architektury nie zostały zbudowane w celu klasyfikacji klas wiekowych, ale 1000 klas ImageNet, które nie zawierają klas wiekowych dla ludzi. Można zastosować uczenie się metodą transferu(jeśli masz wystarczającą liczbę zdjęć szkoleniowych), aby wyszkolić jeden z szeroko dostępnych modeli przeszkolonych powyżej i zobaczyć, jak działają. Zasadniczo jednak szczególnie starsze architektury (powiedzmy do VGG16) mają trudności z nauką „cech globalnych”, które wymagają poznania „głowy” (już złożonej cechy), „tułowia” (innej złożonej cechy) i ich współczynnik (co również wymaga, aby te dwie cechy były w pewnym związku przestrzennym). Tego rodzaju rzeczy powinny być w stanie zrobić Capsule Networks.

Narodziły się Convnets, aby robić dokładnie odwrotnie: być wrażliwym na lokalne cechy i stosunkowo niewrażliwym na ich względną pozycję / skalę. Dobry Convnet powinien rozpoznać „białego kota”, bez względu na to, czy jest to zdjęcie z bliska czy z amerykańskiego ujęcia. Połączenie warstw splotowych (które są wrażliwe na cechy lokalne) z warstwami pulującymi (które usuwają część wrażliwości na zmiany skali lub translację obrazu) daje architekturę, która w swojej najbardziej podstawowej formie nie jest doskonała do nauki rodzaju przestrzeni relacje między obiektami, których szukasz. Był gdzieś przykład (ale nie mogę go już znaleźć), w którym po podzieleniu obrazu kota na różne prostokątne nie nakładające się płytki i ułożeniu ich w losowej kolejności, CNN nadal identyfikowałby obraz jakocat . Oznacza to, że CNN są bardziej wrażliwe na cechy lokalne (tekstury lub coś w tym rodzaju) niż na relacje przestrzenne między obiektami wysokiego poziomu. Zobacz także artykuł na temat sieci Capsule, aby uzyskać trochę dyskusji na ten temat. Hinton pokazał również przykład tego w filmie o limitach sieci .

Zgaduję, że jedna z najnowszych architektur byłaby w pełni zdolna (biorąc pod uwagę wystarczającą ilość danych) do odróżnienia mężczyzn od dzieci, ale nie z powodu „progu” w stosunku metrycznym między funkcjami wysokiego poziomu, takimi jak „głowa” i „tułów” . Nauczyłby się pewnej statystycznej prawidłowości, być może zupełnie niezauważalnej dla ludzi, która oddziela obrazy dorosłych od obrazów dzieci w zestawie treningowym.

DeltaIV
źródło
Doceniam twoją odpowiedź, ale nie mogę się zgodzić. Architektury RCNN mają zasadniczo tę samą strukturę filtrów, co sieciowe obiekty, na przykład VGG i Resnet. A ponieważ RCNN może wykrywać skalę i pozycję względną, wynika z tego, że VGG i Resnet powinny również być w stanie wykryć skalę. Jednak architektury RCNN opierają się na propozycjach ramek, z których tworzą tysiące na obraz, po czym każda propozycja ramek jest oceniana. Wydaje się więc, że jeśli uwzględnię przynajmniej niektóre z tych propozycji pudełek, waniliowy CNN powinien lepiej wykrywać skalę. Po prostu nie jestem pewien, czy jest to konieczne.
Alex R.
RCNN nie są CNN. Nie tylko brakuje wybiórczego wyszukiwania ramek ograniczających, ale brakuje także liniowego SVM i etapów regresora ramki ograniczającej. Istnieje również duża różnica między zdolnością do wykrywania skali AlexNet (czyli CNN używanej w oryginalnym papierze RCNN) lub VGG, a zdolnością GoogLeNet lub ResNet: GoogLeNet został opracowany właśnie do robienia tego, co robi RCNN. Myślę, że zarówno GoogLeNet, jak i ResNet byłyby w stanie sklasyfikować wiek, ale nie ma sposobu, aby dowiedzieć się, czy zrobiliby to za pomocą funkcji, która jest dla nas sensowna (stosunek głowy do tułowia) lub znalezienia jakiegoś statystycznego 1 /
DeltaIV
2 / prawidłowości, których człowiek nigdy nie zauważyłby. Sugeruję, abyś eksperymentował i spróbował, ale niestety zbudowanie bazy danych zdjęć byłoby samo w sobie projektem badawczym (chyba że pracujesz w firmie modowej).
DeltaIV
1
Przepraszam za zamieszanie. Wiem, że istnieje 20 różnych architektur RCNN, z których każda twierdzi, że pozostałe są przestarzałe.
Alex R.
1
blog.piekniewski.info/2016/12/29/can-a-deep-net-see-a-cat Również inny problem, ale wciąż związany z dopasowywaniem tekstur, a od bardziej szanowanych badaczy, arxiv.org/pdf/ 1703.06857
DeltaIV
0

Wszystko zależy od tego, jak tworzony jest zestaw danych. Z mojego doświadczenia wynika, że ​​sieci neuronowe szukają najprostszych wyjaśnień. A wnioskowanie o wieku na podstawie tego zestawu jest w rzeczywistości prostsze niż stosowanie stosunku głowy do ciała. Jeśli możesz rozszerzyć zestaw danych, mając to na uwadze, Twój CNN powinien działać zgodnie z oczekiwaniami.

Lugi
źródło