Strona główna▸Artykuły▸

Jak Convolution Pozwala Sieciom Neuronowym Na Widzieć

Dokładne omówienie działania filtru przesuwającego w sercu convolucyjnych sieci neuronowych, oraz jak stosowanie prostych detektorów krawędzi prowadzi do rozpoznawania całości obiektów.

mysimulator teamZaktualizowano — czerwiec 2026≈ 5 min czytania▶ Otwórz symulację

Obraz jest tylko siatką liczb

Komputerowi obraz fotograficzny to nic innego jak siatka liczb. Obraz czarno-biały jest dwuwymiarowym tablicą, w której każda komórka (każde piksel) przechowuje pojedynczą wartość intensywności, zazwyczaj od 0 (ciemno) do 255 (jasno). Obraz kolorowy dodaje trzecią dimensję: trzy warstwy siatek, każda dla intencji czerwonej, zielonej i niebieskiej, więc mała obrazek o rozmiarach 224 na 224 piksele jest rzeczywiście tablicą 224 × 224 × 3, czyli około 150,000 pojedynczych liczb. Jakiś system wizji komputerowej, nawet najbardziej zaawansowany, musi w końcu wydobyć z niej znaczenie z jedynie tej siatki liczb, bez żadnej wbudowanej pojęcia krawędzi, kształtów ani obiektów.

Zanim nastąpiła era uczenia się głębokiego, wizja komputerowa opierała się na operacjach zaprojektowanych ręcznie — filtrach zaprojektowanych przez badaczy do wykrywania konkretnych wzorów, takich jak krawędzie lub kąty, np. operator Sobela czy Canny. Te metody działały, choć w granicach swojej efektywności, i wymagały od człowieka pod😉edyszyć wcześniej, które wzory miały znaczenie. Sieci neuronowe konwolucyjne zastępują to przypuszczenie: zamiast osoby zaprojektować filtry, sieć uczy je bezpośrednio na przykładach etykietowanych, odkrywając takie wzory wizualne, jak okazują się być przydatne dla danego zadania.

Operacja convolucyjna, krok po kroku

Warstwa convolucyjna działa, przesuwanie małej siatki z naukowymi liczbami, nazywanej filtrem lub jąderem — najczęściej 3×3 lub 5×5 — po obrazie, jeden położenie na poręcz. Na każdym położeniu wartości filtra są mnożone elementowo przez wartości pikseli bezpośrednio pod nim, a wszystkie iloczyny są sumowane do jednej liczby. Ta jedna liczba staje się jeden piksel wyjściowy, nazywany mapą cech. Przesuń filtr po każdym położeniu w obrazie i otrzymujesz całą mapę cech: nową, zazwyczaj mniejszą siatkę, gdzie każda wartość podsumowuje, jak silnie był obecny wzór filtra na tym miejscu w oryginalnym obrazie.

Konkretnie, jeśli 3×3 filtr został wyszkolony do wykrywania krawędzi pionowych, zawiera on duże dodatnie liczby po jednej kolumnie i duże ujemne liczby po drugiej; gdzie obraz ma rzeczywistą krawędź pionową (przecięcie jasności szybkiej od góry do dołu), mnożenie elementowe i suma produkuje dużą wartość wyjściową, a gdzie obraz jest płaski lub ma krawędź poziomą zamiast tego, wyjście pozostaje blisko zera. Jedna warstwa convolucyjna w typowym przypadku nauczona jest setki różnych filtrów jednocześnie — niektóre do detekcji krawędzi poziomych, niektóre do krawędzi przekątnych, niektóre do przejść koloru lub małych tekstur — i stosuje wszystkie ich mapy cech razem jako wyjście warstwy.

Trzy ustawienia kontrolują dokładnie, jak się przesuwa. Stride to ile pikseli filtra przeskoczy między położeniami; stride 1 sprawia, że sprawdza każde możliwe położenie i tworzy duży, szczegółowy mapę cech, podczas gdy stride 2 pominie co drugie położenie, zmniejszając rozmiar wyjściowy o połowę i około czwartać obliczeń. Padding decyduje, co się dzieje przy brzegach obrazu: z

% valid

Dlaczego przesuwanie małej filtracji w każdym miejscu jest tak mocne

Operacja konwolucyjna posiada dwie cechy, które sprawiają, że jest znacznie bardziej efektywna niż warstwa pełnościennej dla danych obrazowych, a obie wynikają bezpośrednio z faktu, że ten sam mały filtr jest powtarzalny na każdym położeniu. Pierwsza to dzielenie się parametrami: 3×3 filtr ma tylko 9 wag (pomijając termin przesunięcia), niezależnie od wielkości wejściowego obrazu, ponieważ ta sama para 9 liczb jest powtarzana na każdym położeniu przesuwnym zamiast każdego położenia otrzymywać indywidualną zestaw wątków. Warstwa pełnościeniowa przetwarzająca obraz 224×224 potrzebowałaby dziesiątek milionów wag tylko dla jednej warstwy; konwolucyjna warstwa z kilkoma filtrami 3×3 potrzebuje tylko kilku setek.

Druga cecha to niezależność od przesunięć. Ponieważ filtr jest stosowany identycznie w każdym miejscu obrazu, wzór, który filtr nauczył wykrywać — np. krzywa krawędź stanowiąca część skrzydła pszczoły — zostanie wykryty tam, gdzie tylko pojawi się w ramce, czy to w lewym górnym rogu lub dokładnie w centrum. Warstwa pełnościeniowa musiałaby na prawdę ponownie nauczyć się, co wygląda krawędź skrzydła dla każdego możliwego położenia, co jest zarówno nieefektywne, jak i recepta na słabe generalizowanie do obrazów, w których przedmiot przesunął się o nieznaczny sposób.

Warstwy maksymalizacyjne, zazwyczaj wstawiane między warstwami konwolucyjnymi, uzupełniają to poprzez świadomie zmniejszanie map cech — najczęściej za pomocą maksymalizacji, która przesuwa mały okno (zwyczajnie 2×2) po mapie cech i zachowuje tylko największą wartość w każdym oknie, odrzucając resztę. To zmniejsza ilość obliczeń potrzebnych do wykonania dalej, sprawia, że sieć jest bardziej odporna na małe przesunięcia lub deformacje dokładnie tam, gdzie pojawia się cecha, i zdecydowanie powiększa efektywny obszar odbioru: obszar oryginalnego obrazu, który w końcu wpływa na każdą wartość głęboko w sieci.

Od krawędzi do oczu do twarzy: hierarchia cech

Jedna warstwa convolucyjna może wykrywać tylko bardzo lokalne, proste wzory, ponieważ jej filtr jest mały i widzi tylko małe fragmenty obrazu. Przekaz rzeczywisty CNN pojawia się z powodzeniem z wielokrotnej stosowania warstw convolucyjnych na siebie. Wyjście pierwszej warstwy — mapy cech pokazujące, gdzie występują krawędzie i proste przejścia kolorowe — staje się wejściem dla drugiej warstwy convolucyjnej. Ponieważ filtry drugiej warstwy operują na mapach cech pierwszej warstwy zamiast bezpośrednio na pikselach, a ze względu na skalowanie (pooling), które rozszerza efektywną obszar widzenia, druga warstwa może łączyć kilka bliskich krawędzi w bardziej skomplikowany wzór, taki jak kąt, krzywa lub mały odcinek tekstury.

To zasada działa na poziomie głębokości. Do trzeciej lub czwartej warstwy filtry często reagują na rozpoznawalne części — coś w rodzaju „okrągłego kształtu z ciemnym środkiem”, które przypomina oczko, lub wzór krzywej. W najgłębszych warstwach dużych sieci filtry mogą reagować na całe części obiektów lub cały kategoryzowany typ: koło, skrzydło, twarz. To dlatego architektury CNN są opisane jako uczenie się hierarchicznych cech automatycznie: nikt nie mówi sieci, co to jest oczko; jest ono odkryte jedynie dlatego, że „wykrywanie wzorów podobnych do oczka” okazuje się być przydatnym krokiem intermedijnym na drodze do poprawnej klasyfikacji zdjęć zwierząt lub twarzy, dając wystarczająco etykietowanych przykładów treningowych i wystarczającej liczby warstw, aby budować hierarchię stopniowo.

Ta warstwa po warstwie konstrukcja korzysta dokładnie z interaktywnego, krok po kroku wizualizacji: obserwacja pojedynczego filtru 3×3 przesuwającego się przez mały siatkę pikseli i tworzącego jedną wartość wyjściową na raz sprawia, że operacja mechaniczna jest konkretna, a obserwacja wielu takich map cech stłaczonych i przekazanych do kolejnej warstwy sprawia, że pojęcie hierarchii cech jest dotkliwe w sposób, który nie może to zrobić statyczny diagram.

Od filtrów do sławnych architektur

Moderne architektury CNN są w esencji innymi strategiami organizacji warstw convoluacyjnych i połomujących. AlexNet, który wygrał konkurs ImageNet w 2012 roku i pomógł zacząć nową erę uczenia głębokiego w optymalizacji obrazowej, stosował pięć warstw convoluacyjnych z dużymi filtrami na początku. VGG pokazało, że stosowanie wielu małych filtrów 3×3 (zamiast mniej większych) można osiągnąć większe efektywne pola widzenia z mniejszymi parametrami i lepszym wynikiem, ale przy kosztach głębi. ResNet rozwiązało problem, który pojawił się, gdy sieci stały się bardzo głębokie — gradienty znikające podczas propagacji wstecz przez setki warstw — dodając połączenia pomiędzy skokiem, które pozwalają na dodanie wyjścia warstwy bezpośrednio do jej wejścia, co pozwala na trenowanie sieci o ponad sto warstwach. Nowoczesne architektury, w tym EfficientNet i transformerzy wizyjne (które zastępują convoluację mechanizmem uwagi samoodnośnej przystosowanym do modeli językowych), nadal ulepszają trade-off między dokładnością, rozmiarem modelu a prędkością wnioskowania, ale operacja convoluacyjna oparta na przesuwaniu filtrów pozostaje fundamentem, który uczynił głęboką optymalizację obrazową praktyczną w pierwszej kolejności.

Często zadawane pytania

Dlaczego używać małych filtrów, takich jak 3x3, zamiast jednego dużego filtrowania całe obrazu naraz?

Filtrowanie całości obrazu wymagałoby enormnej liczby parametrów, wykrywałoby tylko stały wzór globalny i nie mogłoby wykorzystać lokalnych powtarzalnych cech. To przeciwnie do celu dzielenia się parametrami i niewrażliwości na przesunięcia. Stosując kilka małych filtrów (na przykład sześć warstw 3x3), pokryjemy równowartość obszaru jednym dużym filtrem, ale z znacznie mniejszą liczbą parametrów ogółem i dodając funkcje aktywacji nieliniowych między każdą warstwą, dajemy sieci większą wyrażalność za tą samą lub niższą kosztowym obliczeniowym.

Co dokładnie jest mapą cech?

Mapa cech to wynik powstający z przesuwania jednego filtrowania przez całe wejście. Każda wartość w mapie cech reprezentuje, jak silnie określony jest konkretny wzór filtrowania w odpowiednim miejscu wejścia. Warstwa convolucyjna z 64 filtrami tworzy 64 oddzielne mapy cech, stłoczonych razem, każda podkreślająca inny nauczony wzór, takie jak określona orientacja krawędzi, przejście barwy lub tekstura.

Czy sieć decyduje o tym, co każdy filtr wykrywa, czy to czyni człowiek?

Sieć uczy się wartości filtrów całkowicie na podstawie danych poprzez backpropagację i spadek gradientu, ten sam proces optymalizacji używany do treningu reszty sieci. Człowiek tylko wybiera architekturę, czyli rozmiar filtra, liczbę filtrów na warstwie i ile warstw stosować. To, co konkretny filtr rzeczywiście wykrywa, pojawia się automatycznie podczas treningu na obrazach z etykietami, a to zwykle nie jest zaprojektowane ani przewidywalne w advance.

Jak 1x1 konwolucja ma sens, jeśli filtr pokrywa tylko pojedynczy piksel?

Filtr 1x1 nie łączy żadnych sąsiadujących pikseli, ale nadal łączy informacje poziomu kanału, ponieważ nadal mnoży i sumuje po pełnej głębokości map cech na tym jednym miejscu piksela. To sprawia, że jest to dość ekonomiczne zmiana liczby map cech (lub skompresowanie wielu kanałów w mniejszą ilość lub rozszerzenie mniejszej ilości w większą), dodając dodatkową transformację nieliniową, dlatego architektury takie jak Inception i ResNet używają intensywnie 1x1 konwolucji dla efektywności.

▶ Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz How Convolution Lets a Neural Network See i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację How Convolution Lets a Neural Network See

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)