FCN (Fully Convolutional Network)
FCN – skrót od Fully Convolutional Network – to rodzaj sieci neuronowej wykorzystywanej głównie w segmentacji obrazu oraz innych zadaniach wymagających przetwarzania danych o zmiennej wielkości przestrzennej. W przeciwieństwie do tradycyjnych sieci klasyfikacyjnych, FCN nie zawiera warstw w pełni połączonych (fully‑connected), co pozwala na zachowanie informacji o położeniu pikseli i generowanie wyjść o tej samej rozdzielczości co wejście.
Historia
Pierwsze koncepcje sieci w pełni konwolucyjnych pojawiły się w latach 2005–2006, jednak przełomowy artykuł Long, Shelhamer & Darrell (2015) opublikowany w CVPR 2015 wprowadził nazwę FCN i zademonstrował jej skuteczność w zadaniu segmentacji semantycznej. Od tego czasu FCN stało się podstawą wielu późniejszych architektur, takich jak U‑Net, DeepLab czy Mask R‑CNN.
Budowa i zasada działania
Kluczowe elementy FCN:
- Warstwy konwolucyjne – ekstrakcja cech przestrzennych z obrazu wejściowego.
- Warstwy dekonwolucyjne (transposed convolution) – podnoszenie rozdzielczości map aktywacji, aby dopasować je do wymiaru obrazu wyjściowego.
- Skokowe połączenia (skip connections) – łączenie informacji z warstw wczesnych (wysoka rozdzielczość) z warstwami głębokimi (bogate cechy) w celu precyzyjnego odtworzenia granic obiektów.
- Warstwa softmax – klasyfikacja każdego piksela do jednej z k klas.
Sieć przyjmuje obraz o dowolnym rozmiarze (np. 256 × 256 pikseli) i zwraca mapę etykiet o identycznym wymiarze, co umożliwia bezpośrednie użycie w aplikacjach wymagających pixel‑wise predykcji.
Trening
Trening FCN opiera się na uczeniu maszynowym metodą backpropagation oraz optymalizatorem, najczęściej Adam lub SGD z momentum. Jako funkcję kosztu najczęściej stosuje się cross‑entropy w wersji pixel‑wise, ewentualnie z dodatkową regularyzacją (np. L2 lub Dropout).
Zastosowania
FCN znalazło zastosowanie w wielu dziedzinach:
- Medycyna: segmentacja organĂłw w obrazach MRI i CT.
- Rolnictwo: wykrywanie chorób roślin na zdjęciach lotniczych.
- Motoryzacja: rozpoznawanie drĂłg i przeszkĂłd w autonomicznych pojazdach.
- Geografia: klasyfikacja pokrycia terenu w satelitarnych zdjęciach.
- Wideo: segmentacja ruchomych obiektĂłw w czasie rzeczywistym.
Rozszerzenia i pokrewne architektury
Po sukcesie oryginalnego FCN powstało wiele wariantów:
- U‑Net – dodatkowe symetryczne połączenia pomiędzy warstwami enkodera i dekodera.
- DeepLab – wprowadzenie atrous convolution (rozszerzonej konwolucji) oraz modułu CRF.
- SegNet – architektura z zachowaniem indeksów maksymalizacji podczas warstw dekonwolucyjnych.
- PSPNet – globalny kontekst przy użyciu piramidy pooling.
Implementacje
Popularne biblioteki udostępniają gotowe implementacje FCN:
- TensorFlow –
tf.keras.applications.FCN(w ramach tf.keras.applications). - PyTorch – moduł
torchvision.models.segmentation.fcn_resnet50orazfcn_resnet101. - Keras – modele dostępne w repozytoriach open‑source (np. GitHub).
Przyszłość i wyzwania
Choć FCN stało się fundamentem nowoczesnej segmentacji, wciąż istnieją wyzwania:
- Redukcja wymagań pamięciowych przy przetwarzaniu bardzo dużych obrazów.
- Lepsza zdolność do radzenia sobie z niejednorodnymi skalami obiektów.
- Integracja z uczeniem wzmacniajÄ…cym i transfer learning w celu szybszego uczenia przy ograniczonych danych.
Bibliografia
- Long, J.; Shelhamer, E.; Darrell, T. Fully Convolutional Networks for Semantic Segmentation. CVPR 2015.
- Ronneberger, O.; Fischer, P.; Brox, T. U‑Net: Convolutional Networks for Biomedical Image Segmentation. MICCAI 2015.
- Chen, L.-C.; Papandreou, G.; Kokkinos, I.; Murphy, K.; Yuille, A. DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs. TPAMI 2018.
Artykuł opracowany w oparciu o dostępne materiały naukowe oraz dokumentację popularnych frameworków programistycznych.