Widzenie komputerowe

Dział AI zajmujący się analizą i rozumieniem obrazów oraz wideo przez komputery. Obejmuje m.in. rozpoznawanie obiektów, twarzy i segmentację obrazu.

Widzenie komputerowe (ang. computer vision) to dział sztucznej inteligencji, który uczy komputery wyciągać sensowne informacje z obrazów, klatek wideo i strumieni z kamer. W skrócie: tam, gdzie Ty widzisz kota na kanapie, komputer widzi tablicę liczb (piksele) i ma sam dojść do wniosku, że to kot, a nie poduszka. Zadania mieszczą się w kilku kategoriach: klasyfikacja obrazu (co tu jest), detekcja obiektów (co i gdzie, zwykle w postaci ramek), segmentacja (które dokładnie piksele należą do obiektu) oraz rozpoznawanie twarzy, tekstu (OCR) czy ruchu.

Jak to działa? Dawniej ręcznie projektowano cechy obrazu (krawędzie, narożniki, deskryptory typu SIFT). Dziś standardem są sieci neuronowe — przez lata królowały konwolucyjne sieci neuronowe (CNN), a obecnie coraz częściej spotkasz architektury oparte na transformerach (Vision Transformer). Model dostaje miliony oznaczonych obrazów, uczy się wzorców i potem generalizuje na nowe dane. Surowy obraz prawie zawsze przechodzi przez preprocessing: skalowanie, normalizację wartości pikseli, czasem augmentację (obroty, przycięcia), żeby model nie nauczył się na pamięć jednego ujęcia.

Do czego to służy w praktyce? Kontrola jakości na produkcji, czytanie tablic rejestracyjnych, diagnostyka medyczna ze zdjęć, autonomiczne pojazdy, filtry w aplikacjach, wyszukiwanie po obrazie.

Przykład z praktyki

Najszybciej dotkniesz tematu przez bibliotekę OpenCV w Pythonie albo gotowy model YOLO (You Only Look Once) z pakietu ultralytics. Wczytanie obrazu i detekcja obiektów to dosłownie kilka linijek:

  1. Instalacja: pip install ultralytics
  2. Detekcja: from ultralytics import YOLO; model = YOLO("yolov8n.pt"); results = model("zdjecie.jpg")

W odpowiedzi dostaniesz ramki, klasy obiektów i poziom pewności (confidence). Do prostszych operacji — wczytanie, konwersja do skali szarości, wykrywanie krawędzi — wystarczy OpenCV: cv2.imread(), cv2.cvtColor(), cv2.Canny().

Na co uważać

Kilka pułapek, które łapią początkujących:

  • OpenCV używa BGR, nie RGB. Wczytasz obraz przez cv2.imread(), wyświetlisz w matplotlib bez konwersji i kolory wyjdą dziwne. Pamiętaj o cv2.cvtColor(img, cv2.COLOR_BGR2RGB).
  • Wysoka dokładność na zbiorze treningowym to nie to samo co działanie w realu. Inne oświetlenie, kąt czy rozdzielczość kamery potrafią rozłożyć model. To efekt data drift i przeuczenia.
  • Model widzi tylko to, co mu pokazano. Jeśli w danych treningowych nie było nocnych ujęć, nie oczekuj cudów po zmroku.

Mit do obalenia: widzenie komputerowe nie „rozumie” sceny tak jak człowiek — dopasowuje statystyczne wzorce, dlatego da się je oszukać celowo spreparowanymi obrazami (adversarial examples).

Pojęcia powiązane: sieci konwolucyjne (CNN), deep learning, detekcja obiektów, segmentacja semantyczna, OCR, YOLO, OpenCV, Vision Transformer, rozpoznawanie obrazu.