Czym jest rozpoznawanie obrazów?

Rozpoznawanie obrazów (ang. image recognition / image classification) to zadanie widzenia komputerowego polegające na przypisaniu etykiety (klasy) do obrazu na podstawie jego zawartości wizualnej. Model otrzymuje obraz (macierz pikseli) i zwraca predykcję: „kot" (95%), „pies" (3%), „lis" (2%).

To najbardziej fundamentalne zadanie CV — od niego zaczęła się rewolucja deep learning (AlexNet, 2012), a architektury klasyfikacyjne stanowią backbone dla detekcji obiektów, segmentacji i innych zaawansowanych zadań.

Współczesne systemy rozpoznawania obrazów osiągają trafność przewyższającą ludzi na benchmarkach jak ImageNet — ale z istotnymi zastrzeżeniami dotyczącymi robustności, biasu i domain shift.

Ewolucja rozpoznawania obrazów

Era pre-deep learning (do 2012)

Klasyczne podejście do rozpoznawania obrazów składało się z dwóch etapów: ręczna ekstrakcja cech (SIFT, HOG, Haar) → klasyfikator (SVM, Random Forest, k-NN). Inżynier musiał zaprojektować deskryptory specyficzne dla zadania — cechy skuteczne w rozpoznawaniu twarzy nie nadawały się do klasyfikacji zwierząt.

Błąd top-5 na ImageNet w 2011 roku: ~25.8%.

Rewolucja CNN (2012-2020)

AlexNet (2012) udowodnił, że CNN automatycznie uczą się hierarchii cech z danych — eliminując potrzebę ręcznego feature engineering. Kolejne architektury systematycznie poprawiały wyniki:

  • AlexNet (2012): 16.4% top-5 error — 8 warstw, ReLU, dropout, GPU training
  • VGGNet (2014): 7.3% — głęboka sieć z małymi filtrami 3×3
  • GoogLeNet (2014): 6.7% — moduły Inception, 22 warstwy
  • ResNet (2015): 3.6% — skip connections, 152 warstwy
  • EfficientNet (2019): 2.9% — systematyczne skalowanie

Ludzki błąd na ImageNet: ~5.1%. Od 2015 roku CNN przewyższają ludzi w tym benchmarku.

Era Transformerów (2020+)

Vision Transformer (ViT) (2020) zastosował architekturę transformerową (z NLP) do obrazów: obraz dzielony na patche 16×16, przetwarzane jak tokeny tekstowe z self-attention.

  • DeiT — efektywny trening ViT z augmentacją
  • Swin Transformer — hierarchiczne okna attention, efektywny obliczeniowo
  • ConvNeXt — CNN zmodernizowane z elementami transformerów — pokazuje, że CNN z odpowiednimi trikami dorównują ViT

Pipeline klasyfikacji obrazów

1. Zbieranie i przygotowanie danych

  • Źródła: ImageNet, CIFAR-10/100, własne zbiory (etykietowanie ręczne, crowdsourcing)
  • Podział: Train / Validation / Test (typowo 70/15/15 lub 80/10/10)
  • Czyszczenie: usunięcie duplikatów, błędnych etykiet, uszkodzonych plików
  • Preprocessing: resize do stałego rozmiaru, normalizacja pikseli (mean/std ImageNet)

2. Augmentacja danych (Data Augmentation)

Augmentacja sztucznie zwiększa różnorodność danych treningowych, redukując overfitting:

Geometryczne:

  • Obrót (rotation), odbicie (flip), przycięcie (crop), zmiana skali (scale)
  • Perspektywa, shearing, elastic deformation

Kolorystyczne:

  • Jitter jasności, kontrastu, nasycenia, barwy
  • Normalizacja kolorów, equalizacja histogramu

Zaawansowane:

  • Cutout — losowe prostokątne maskowanie fragmentu obrazu
  • Mixup — liniowa interpolacja dwóch obrazów i ich etykiet
  • CutMix — wklejenie fragmentu jednego obrazu do drugiego
  • RandAugment — losowy wybór z puli augmentacji z automatycznym doborem siły
  • AutoAugment — optymalizacja polityki augmentacji za pomocą reinforcement learning

Augmentacja jest kluczowa przy małych zbiorach danych — może podwoić lub potroić efektywny rozmiar zbioru treningowego.

3. Wybór i trening modelu

Od zera (from scratch): Trening CNN na własnym zbiorze. Wymaga dużo danych (>50k obrazów) i zasobów GPU. Rzadko stosowany w praktyce.

Transfer learning: Najpopularniejsze podejście:

  1. Załaduj model pretrenowany na ImageNet (np. ResNet50, EfficientNet-B4)
  2. Feature extraction: zamroź wszystkie warstwy, zamień ostatnią FC na nową (z liczbą klas w zadaniu), trenuj tylko nową warstwę
  3. Fine-tuning: odmroź ostatnie bloki konwolucyjne, trenuj z niskim learning rate (np. 1e-5)

Praktyka: Fine-tuning z EfficientNet lub ConvNeXt osiąga doskonałe wyniki na zbiorach od ~1000 obrazów.

4. Ewaluacja

Metryki oceny: accuracy (klasy zbalansowane), F1-macro (niezbalansowane), confusion matrix, top-k accuracy. Krzywa uczenia (train loss/accuracy vs. val) diagnozuje overfitting/underfitting.

Zaawansowane techniki

Knowledge Distillation

Trening małego, szybkiego modelu (student), który naśladuje duży, dokładny model (teacher). Student uczy się nie tylko poprawnych etykiet, ale rozkładów prawdopodobieństwa nauczyciela (soft labels), co przenosi „ciemną wiedzę" (dark knowledge) — np. informację, że kot jest bardziej podobny do psa niż do samochodu.

Multi-label classification

Przypisanie wielu etykiet do jednego obrazu (np. „plaża", „zachód słońca", „ludzie"). Zamiast softmax używa się sigmoid na każdym wyjściu, a funkcją kosztu jest binary cross-entropy.

Few-shot i Zero-shot learning

  • Few-shot: Klasyfikacja z zaledwie kilkoma przykładami na klasę (1-5 shot). Metody: Siamese Networks, Prototypical Networks, Model-Agnostic Meta-Learning (MAML).
  • Zero-shot: Klasyfikacja klas niewidzianych podczas treningu. CLIP (OpenAI) łączy obraz z opisem tekstowym — klasyfikuje do dowolnej klasy opisanej słowami.

Self-supervised learning

Trening na nieoznakowanych danych za pomocą zadań pretekstowych: rotacja (przewiduj kąt obrotu), jigsaw (ułóż puzzle), contrastive learning (BYOL, SimCLR — naucz się, że augmentacje tego samego obrazu są podobne). Pretrenowane modele self-supervised rywalizują z supervised na ImageNet.

Zastosowania praktyczne

Diagnostyka medyczna

  • Klasyfikacja zmian skórnych (dermatoskopia): melanoma vs. łagodne
  • Detekcja retinopatii cukrzycowej z fundoskopii
  • Klasyfikacja wycinków histopatologicznych (rak piersi)

Rolnictwo

  • Identyfikacja chorób roślin ze zdjęć liści
  • Klasyfikacja dojrzałości owoców
  • Monitoring upraw z dronów

Przemysł

  • Kontrola jakości: defekty tkanin, defekty wyrobów metalowych
  • Sortowanie odpadów (plastik, szkło, metal)
  • Inspekcja infrastruktury (pęknięcia, korozja)

Bezpieczeństwo

  • Rozpoznawanie twarzy (Face ID, kontrola dostępu)
  • Weryfikacja dokumentów (porównanie zdjęcia z dokumentu z selfie)
  • Detekcja deepfake

Wyzwania i ograniczenia

Adversarial examples

Minimalne, niewidoczne perturbacje pikseli mogą zmienić klasyfikację modelu z „panda (99.3%)" na „gibon (99.3%)". To poważne zagrożenie w zastosowaniach safety-critical (pojazdy autonomiczne, diagnostyka medyczna).

Domain shift

Model trenowany na profesjonalnych zdjęciach produktów źle klasyfikuje zdjęcia z telefonu w słabym oświetleniu. Techniki domain adaptation (fine-tuning, augmentacja, DANN) łagodzą ten problem.

Bias

Zbiory treningowe odzwierciedlają biasy swoich twórców. ImageNet jest zdominowany przez obrazy z zachodniej perspektywy kulturowej. Modele rozpoznawania twarzy mają niższą trafność dla kobiet i osób z ciemną karnacją.

Interpretowalność

CNN to „czarna skrzynka". Techniki wyjaśnialności:

  • Grad-CAM — wizualizacja regionów obrazu najważniejszych dla decyzji
  • SHAP — wartości Shapleya dla pikseli
  • Attention maps — mapy uwagi w ViT

Podsumowanie

Rozpoznawanie obrazów przeszło od ręcznych deskryptorów SIFT do modeli przewyższających ludzi na ImageNet. Transfer learning z pretrenowanych CNN/ViT demokratyzuje dostęp — skuteczny klasyfikator można wytrenować na laptopie z kilkuset obrazami. Kluczowe wyzwania to robustność (adversarial examples), sprawiedliwość (bias) i wyjaśnialność — szczególnie w zastosowaniach medycznych i bezpieczeństwa.