Obraz i Wizja Komputerowa
1. Czym są piksele i jak komputer „widzi” obraz?
Aby zrozumieć wizję komputerową, musimy najpierw zrozumieć, jak komputer reprezentuje obraz. Dla komputera obraz to nie zbiór kształtów i obiektów, tylko ogromna macierz (tabela) liczb.
-
Piksel (Picture Element):
- To najmniejszy, pojedynczy element cyfrowego obrazu. Pomyśl o obrazie jako o mozaice lub siatce złożonej z tysięcy małych, jednokolorowych kafelków. Każdy taki kafelek to piksel.
- Im więcej pikseli ma obraz, tym jest wyższej rozdzielczości i tym bardziej szczegółowy.
-
Reprezentacja cyfrowa:
-
Obraz w skali szarości: Każdy piksel jest reprezentowany przez jedną liczbę, zazwyczaj z zakresu 0-255.
- 0 oznacza kolor czarny.
- 255 oznacza kolor biały.
- Wartości pomiędzy to odcienie szarości.
- Taki obraz można zapisać jako pojedynczą macierz 2D.
-
Obraz kolorowy (np. RGB): Każdy piksel jest reprezentowany nie przez jedną, ale przez trzy liczby! Te liczby odpowiadają intensywności trzech kanałów kolorów:
- R (Red – Czerwony)
- G (Green – Zielony)
- B (Blue – Niebieski)
- Kombinacja tych trzech wartości (każda z zakresu 0-255) tworzy ostateczny kolor piksela. Na przykład:
- (255, 0, 0) to czysty czerwony.
- (0, 255, 0) to czysty zielony.
- (0, 0, 255) to czysty niebieski.
- (0, 0, 0) to czarny.
- (255, 255, 255) to biały.
- Obraz kolorowy można więc zapisać jako trzy macierze 2D (po jednej dla każdego kanału), ułożone w "kostkę" 3D.
-
Podsumowanie: Komputer "widzi" obraz jako tabelę numeryczną (lub trzy takie tabele). Jego zadaniem jest znalezienie w tych liczbach wzorców, które odpowiadają ludzkim pojęciom, takim jak "krawędź", "oko", "kot" czy "samochód".
2. CNN (Convolutional Neural Networks) – Podstawowa Architektura
Tradycyjna, w pełni połączona sieć neuronowa (jak opisana w poprzedniej notatce) jest fatalnym wyborem do przetwarzania obrazów.
-
Przykład: Obraz 100x100 pikseli ma 10 000 pikseli. Jeśli ma 3 kanały (RGB), to już 30 000 cech wejściowych! Warstwa ukryta z zaledwie 1000 neuronów prowadziłaby do 30 milionów połączeń (wag do nauczenia)! To jest nieefektywne obliczeniowo i prowadzi do szybkiego przetrenowania.
-
Problem: Taka sieć ignoruje strukturę przestrzenną obrazu. Dla niej piksele z górnego rogu i dolnego rogu są tak samo ważne i nieskorelowane, podczas gdy w rzeczywistości piksele blisko siebie są ze sobą ściśle powiązane.
CNN radzi sobie z tymi wyzwaniami! Jest to specjalny rodzaj sieci neuronowej zaprojektowany specjalnie do przetwarzania danych o strukturze siatki, takich jak obrazy. Jej kluczowe warstwy to:
1. Warstwa Konwolucyjna (Convolutional Layer) – Wykrywanie cech
-
Cel: Automatyczne wykrywanie prostych cech na obrazie, takich jak krawędzie, rogi, plamy koloru, tekstury.
-
Jak działa? Używa małych "okien" zwanych filtrami (lub jądrami – kernels).
-
Filtr to mała macierz (np. 3x3, 5x5) liczb (wag).
-
Filtr "przesuwa" się (przechodzi splot - convolution) po całym obrazie wejściowym, obliczając iloczyn skalarny pomiędzy swoimi wagami a wartościami pikseli pod spodem.
-
Wynikiem tego procesu jest mapa cech (feature map) – nowa macierz, która podświetla regiony obrazu, gdzie wykryto cechę, na którą "reaguje" filtr.
-
-
Analogia: Jeśli szukasz twarzy, pierwsza warstwa konwolucyjna może nauczyć się wykrywać pionowe krawędzie (jak kontur twarzy), kolejna – bardziej złożone kształty (jak oczy, nos), a jeszcze głębsza – całe twarze.
-
Kluczowe właściwości:
-
Współdzielenie wag (Weight Sharing): Ten sam filtr jest używany dla całego obrazu. Sieć uczy się, że "krawędź" wygląda podobnie, niezależnie od tego, gdzie się znajduje. To drastycznie redukuje liczbę parametrów.
-
Lokalne połączenia (Local Connectivity): Neurony w warstwie konwolucyjnej są połączone tylko z małym regionem warstwy poprzedniej, a nie ze wszystkimi neuronami.
-
2. Warstwa Pooling (Pooling Layer) – Redukcja wymiarowości
-
Cel: Zmniejszenie rozmiaru mapy cech, co:
- Zmniejsza liczbę parametrów i obciążenie obliczeniowe.
- Zapobiega przetrenowaniu.
- Uodparnia model na małe przesunięcia obiektów (dzięki temu, że skupiamy się na obecności cechy, a nie na jej dokładnej lokalizacji).
-
Jak działa? Przechodzi "oknem" (zwykle 2x2) po mapie cech i podsumowuje region.
- Max Pooling: Wybiera maksymalną wartość z okna. Jest to najpopularniejsza metoda. Skupia się na najsilniej obecnej cesze w regionie.
- Average Pooling: Oblicza średnią wartość z okna.
3. Warstwa w pełni połączona (Fully Connected Layer) – Klasyfikacja
-
Cel: Po tym, jak warstwy konwolucyjne i poolingowe wyodrębniły najważniejsze cechy obrazu i zmniejszyły jego wymiar, potrzebujemy czegoś, co zinterpretuje te cechy i dokona ostatecznej klasyfikacji.
-
Jak działa? To jest zwykła, stara, dobra sieć neuronowa (jak z poprzedniej notatki). Spłaszcza otrzymaną trójwymiarową mapę cech do długiego wektora jednowymiarowego i na jego podstawie przewiduje etykietę (np. "kot", "pies", "samochód").
Podsumowanie architektury typowego CNN:
Obraz wejściowy -> [Warstwa Konwolucyjna -> Warstwa Aktywacji (ReLU) -> Warstwa Pooling] x N -> Warstwy w pełni połączone -> Wynik
- N powtarzanych bloków pozwala sieci uczyć się hierarchii cech: od prostych (krawędzie) do złożonych (kształty, obiekty).
Dlaczego CNN są tak potężne? Ponieważ automatycznie i hierarchicznie uczą się cech bez konieczności ich ręcznego kodowania przez człowieka. To właśnie one stoją za najnowocześniejszymi systemami rozpoznawania obrazów, samochodów autonomicznych, filtrów na Instagramie i algorytmów wykrywania chorób na skanach medycznych.
Popularne zastosowania CNN:
- Rozpoznawanie i klasyfikacja obiektów na zdjęciach.
- Wykrywanie twarzy (w telefonach i mediach społecznościowych).
- Samochody autonomiczne (wykrywanie pieszych, znaków drogowych, innych samochodów).
- Generowanie podpisów do obrazów (image captioning).
- Sztuka (style transfer – np. aplikacja Prisma).
- Diagnostyka medyczna (analiza zdjęć RTG, MRI).