Schemat danych piksela. Po lewej, nasz obraz Lincolna; w środku piksele oznaczone liczbami od 0-255, reprezentującymi ich jasność; a po prawej te liczby same w sobie.W rzeczywistości wartości pikseli są niemal powszechnie przechowywane, na poziomie sprzętowym, w tablicy jednowymiarowej. Na przykład, dane z powyższego obrazu są przechowywane w sposób podobny do tej długiej listy unsigned chars:
{157, 153, 174, 168, 150, 152, 129, 151, 172, 161, 155, 156,
155, 182, 163, 74, 75, 62, 33, 17, 110, 210, 180, 154,
180, 180, 50, 14, 34, 6, 10, 33, 48, 106, 159, 181,
206, 109, 5, 124, 131, 111, 120, 204, 166, 15, 56, 180,
194, 68, 137, 251, 237, 239, 239, 228, 227, 87, 71, 201,
172, 105, 207, 233, 233, 214, 220, 239, 228, 98, 74, 206,
188, 88, 179, 209, 185, 215, 211, 158, 139, 75, 20, 169,
189, 97, 165, 84, 10, 168, 134, 11, 31, 62, 22, 148,
199, 168, 191, 193, 158, 227, 178, 143, 182, 106, 36, 190,
205, 174, 155, 252, 236, 231, 149, 178, 228, 43, 95, 234,
190, 216, 116, 149, 236, 187, 86, 150, 79, 38, 218, 241,
190, 224, 147, 108, 227, 210, 127, 102, 36, 101, 255, 224,
190, 214, 173, 66, 103, 143, 96, 50, 2, 109, 249, 215,
187, 196, 235, 75, 1, 81, 47, 0, 6, 217, 255, 211,
183, 202, 237, 145, 0, 0, 12, 108, 200, 138, 243, 236,
195, 206, 123, 207, 177, 121, 123, 200, 175, 13, 96, 218};
Ten sposób przechowywania danych obrazu może być sprzeczny z Twoimi oczekiwaniami, ponieważ dane z pewnością wydają się być dwuwymiarowe, gdy są wyświetlane. A jednak tak jest, ponieważ pamięć komputerowa składa się po prostu z coraz większej liniowej listy przestrzeni adresowych.
Powróćmy jeszcze raz do pierwszego obrazka i wyobraźmy sobie dodanie kolorowego. Teraz sprawy zaczynają się robić bardziej skomplikowane. Komputery zazwyczaj odczytują kolor jako serię 3 wartości – czerwonej, zielonej i niebieskiej (RGB) – w tej samej skali 0-255. Teraz każdy piksel ma trzy wartości, które komputer musi przechowywać oprócz swojej pozycji. Gdybyśmy mieli pokolorować prezydenta Lincolna, dałoby to 12 x 16 x 3 wartości, czyli 576 liczb.
To dużo pamięci wymaganej dla jednego obrazu i dużo pikseli, nad którymi algorytm może iterować. Ale aby wytrenować model ze znaczącą dokładnością, zwłaszcza gdy mówisz o głębokim uczeniu się, zwykle potrzebujesz dziesiątek tysięcy obrazów, a im więcej, tym lepiej.
Ewolucja widzenia komputerowego
Przed pojawieniem się głębokiego uczenia się zadania, które może wykonywać widzenie komputerowe, były bardzo ograniczone i wymagały dużo ręcznego kodowania oraz wysiłku programistów i ludzkich operatorów. Na przykład, gdybyś chciał wykonać rozpoznawanie twarzy, musiałbyś wykonać następujące kroki:
- Utwórz bazę danych: Musiałeś przechwycić indywidualne obrazy wszystkich obiektów, które chciałeś śledzić, w określonym formacie.
- Opatrzenie obrazów adnotacjami: Następnie dla każdego indywidualnego obrazu musiałbyś wprowadzić kilka kluczowych punktów danych, takich jak odległość między oczami, szerokość mostka nosowego, odległość między górną wargą a nosem oraz dziesiątki innych pomiarów, które definiują unikalne cechy każdej osoby.
- Przechwytywanie nowych obrazów: Następnie trzeba by było uchwycić nowe obrazy, czy to ze zdjęć czy treści wideo. I wtedy musiałbyś ponownie przejść przez proces pomiaru, zaznaczając kluczowe punkty na obrazie. Musiałeś również wziąć pod uwagę kąt, pod jakim zdjęcie zostało zrobione.
Po całej tej ręcznej pracy, aplikacja w końcu byłaby w stanie porównać pomiary na nowym zdjęciu z tymi przechowywanymi w bazie danych i powiedzieć Ci, czy odpowiadało ono któremuś z profili, które śledziła. W rzeczywistości, automatyzacja była bardzo niewielka, a większość pracy wykonywana była ręcznie. A margines błędu wciąż był duży.
Uczenie maszynowe zapewniło inne podejście do rozwiązywania problemów związanych z widzeniem komputerowym. Dzięki uczeniu maszynowemu programiści nie musieli już ręcznie kodować każdej pojedynczej reguły w swoich aplikacjach wizyjnych. Zamiast tego programowali „funkcje”, mniejsze aplikacje, które mogły wykrywać określone wzorce w obrazach. Następnie używali algorytmów uczenia statystycznego, takich jak regresja liniowa, regresja logistyczna, drzewa decyzyjne lub maszyny wektorów wspierających (SVM) do wykrywania wzorców i klasyfikowania obrazów oraz wykrywania na nich obiektów.
Uczenie maszynowe pomogło rozwiązać wiele problemów, które historycznie stanowiły wyzwanie dla klasycznych narzędzi i podejść do tworzenia oprogramowania. Na przykład, lata temu, inżynierowie uczenia maszynowego byli w stanie stworzyć oprogramowanie, które mogło przewidzieć okna przeżycia raka piersi lepiej niż ludzcy eksperci. Jednak zbudowanie funkcji tego oprogramowania wymagało wysiłku dziesiątek inżynierów i ekspertów od raka piersi i zajęło dużo czasu.