Czy splotowa sieć neuronowa może przyjmować jako obrazy wejściowe o różnych rozmiarach?


10

Pracuję w sieci splotowej do rozpoznawania obrazów i zastanawiałem się, czy mogę wprowadzić obrazy o różnych rozmiarach (choć nie tak bardzo różnych).

W sprawie tego projektu: https://github.com/harvardnlp/im2markup

Mówią:

and group images of similar sizes to facilitate batching

Więc nawet po wstępnym przetwarzaniu obrazy są nadal różnych rozmiarów, co ma sens, ponieważ nie wycinają części formuły.

Czy są jakieś problemy z używaniem różnych rozmiarów? Jeśli tak, to jak mam podejść do tego problemu (ponieważ formuły nie mieszczą się w tym samym rozmiarze obrazu)?

Wszelkie uwagi będą mile widziane

Odpowiedzi:


2

Czy są jakieś problemy z używaniem różnych rozmiarów? Jeśli tak, to jak mam podejść do tego problemu (ponieważ formuły nie mieszczą się w tym samym rozmiarze obrazu)?

To zależy od architektury sieci neuronowej. Niektóre architektury zakładają, że wszystkie obrazy mają ten sam wymiar, inne (takie jak im2markup) nie przyjmują takiego założenia. Wierzę, że im2markup zezwala na obrazy o różnych szerokościach, ponieważ nie używają RNN, który skanuje dane wyjściowe warstwy splotowej.

wprowadź opis zdjęcia tutaj

grupuj obrazy o podobnych rozmiarach, aby ułatwić grupowanie

Zazwyczaj przyspiesza to, unikając dodawania zbyt dużej ilości wypełnienia.


2

Czy zastanawiałeś się po prostu nad skalowaniem obrazów na etapie przetwarzania wstępnego? Intuicyjnie człowiek stojący przed skalowanym obrazem nadal będzie w stanie rozpoznać te same cechy i obiekty, i nie ma oczywistego powodu, dla którego CNN nie byłby w stanie zrobić tego samego na skalowanym obrazie.

Myślę, że skalowanie obrazów do tego samego rozmiaru może być łatwiejsze niż próba stworzenia sieci splotowej obsługującej obrazy o różnych rozmiarach, które, jak sądzę, byłyby tam na ziemi „oryginalnych badań”. Z pewnością można tworzyć warstwy konwekcyjne w konwerterze obsługujące obrazy o dowolnym rozmiarze, bez konieczności ponownego szkolenia. Jednak wyjściem konwertera będzie zazwyczaj jakiś klasyfikator, a to prawdopodobnie będzie działać gorzej, jeśli wprowadzisz wejścia o różnych rozmiarach, wyobrażam sobie.

Innym podejściem byłoby po prostu wypełnienie obrazów zerami. Wyobraź sobie jednak, że intuicyjnie patrzysz na małe zdjęcie, wypełnione czarnymi ramkami lub możesz je powiększyć, aby uzyskać rozsądny łuk w polu widzenia. Co byś zrobił Co jest łatwiej zobaczyć?


nie skaluje jakości obrazu, wprowadzając błędy i deformując funkcje, jeśli obraz ma już niską rozdzielczość, skalowanie obniży jakość obrazu do punktu, w którym nawet ludzie nie będą w stanie go łatwo rozpoznać, ale obraz nieskalowany będzie rozpoznawalny.
Vikram Bhat

1
czy masz przykład obrazu rozpoznawalnego dla ludzi, chyba że zastosujesz skalowanie, a następnie nie będzie można go rozpoznać?
Hugh Perkins,

Też się zastanawiam. Próbując użyć istniejącego wyuczonego modelu z kamer, myślę, że mógłbym albo przeskalować obraz, aby pasował do interfejsu InceptionV3 (299x299 z 32x32 -> CIFAR10). Myślę, że skalowanie traci jakość. Myślę jednak, że właściwym sposobem byłoby wykluczenie wyjściowego FC i określenie kształtu wejściowego na 32x32. Myślę, że wymagałoby to ponownego przeszkolenia, ponieważ wagi warstwy wejściowej byłyby losowe.
Joey Carson

Skalowanie obniża jakość, ale pomaga w uogólnieniu: istnieje wiele dokumentów, które odnotowały zauważalny wzrost rozpoznawalności po zastosowaniu rozmycia Gaussa przed treningiem. Intuicyjnie masz więcej różnych próbek wejściowych, które przypominają pojedynczy „zamazany” obraz, dzięki czemu klasyfikacja jest bardziej niezawodna.
Matthieu,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.