Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Analiza głównych składowych to metoda statystyczna, która konwertuje zbiór potencjalnie skorelowanych zmiennych na zbiór liniowo nieskorelowanych wartości za pomocą przekształceń ortogonalnych. Mówiąc prościej, biorąc pod uwagę zestaw danych z wieloma wymiarami, pomaga to zmniejszyć liczbę wymiarów, dzięki czemu dane są łatwiejsze do odczytania.
Krok 1: Oryginalne plany
Przyszedłem do tej klasy z myślą, że chcę zrozumieć i mam nadzieję napisać algorytm, który będzie w stanie wykonać rozpoznawanie twarzy, gdy zostanie dostarczony z obrazami. Nie miałem wcześniejszego doświadczenia ani wiedzy na temat rozpoznawania twarzy i nie miałem pojęcia, jak trudno jest osiągnąć coś takiego. Po rozmowie z profesorem Mallochem zdałem sobie sprawę, że muszę się wielu rzeczy nauczyć, zanim będę w stanie w pełni zrozumieć zadanie, które ostatecznie planowałem zrealizować.
Po krótkich badaniach w końcu zdecydowałem, że bardziej niż czegokolwiek potrzebuję nauczyć się algebry liniowej i podstaw uczenia maszynowego i zdecydowałem się na PCA (analizę głównych komponentów) jako mój cel na tej klasie.
Krok 2: Badania
Pierwszym krokiem było odwiedzenie Biblioteki i znalezienie jakiejkolwiek książki, która wprowadziła mnie w uczenie maszynowe, a dokładniej przetwarzanie obrazu. Okazało się to o wiele trudniejsze niż myślałem i skończyło się na tym, że nic z tego nie było. Następnie postanowiłem zapytać znajomego, który pracował w Vision Lab, który poprosił mnie o przyjrzenie się algebrze liniowej, a dokładniej wektorom własnym i wartościom własnym. Miałem pewne doświadczenie z algebrą liniową z zajęć, które miałem na drugim roku, ale nie rozumiałem, w jaki sposób wektory własne lub wartości własne mogą być przydatne podczas pracy z obrazami. Gdy szukałem więcej, zrozumiałem, że obrazy są niczym innym jak ogromnymi zbiorami danych i dlatego mogą być traktowane jako macierze i stało się dla mnie nieco jaśniejsze, dlaczego wektory własne są istotne dla tego, co robię. W tym momencie zdecydowałem, że powinienem nauczyć się czytać obrazy za pomocą Pythona, ponieważ zamierzam używać Pythona w moim projekcie. Początkowo zacząłem od użycia CV2.imread do odczytywania obrazów, ale okazało się to bardzo powolne, dlatego zdecydowałem się użyć glob i PIL.image.open, aby to zrobić, ponieważ jest to znacznie szybsze. Ten proces na papierze wydaje się stosunkowo mało czasochłonny, ale w rzeczywistości zajął sporo czasu, ponieważ musiałem nauczyć się instalować i importować różne biblioteki do PyCharm (IDE), a następnie przeczytać dokumentację online dla każdej biblioteki. W trakcie tego nauczyłem się również, jak używać instrukcji pip install w wierszu poleceń.
Następnym krokiem było zastanowienie się, co dokładnie chciałem zrobić i nauczyć się w przetwarzaniu obrazów i początkowo planowałem dopasowywanie szablonów, ale podczas poszukiwań dowiedziałem się o PCA i stwierdziłem, że jest to bardziej interesujące, więc postanowiłem zamiast tego idź z PCA. Pierwszym terminem, który ciągle się pojawiał, był algorytm K-NN (K-najbliższy sąsiad). To był mój pierwszy kontakt z algorytmem uczenia maszynowego. Dowiedziałem się o danych uczących i testujących oraz o tym, co oznacza „uczenie” algorytmu. Zrozumienie algorytmu K-NN również było wyzwaniem, ale bardzo satysfakcjonujące było wreszcie zrozumienie, jak on działa. Obecnie pracuję nad uruchomieniem kodu dla K-NN i jestem bardzo bliski ukończenia.
Krok 3: napotkane trudności i wyciągnięte wnioski
Pierwszą dużą trudnością był sam zakres projektu. To było bardziej zorientowane na badania niż fizyczne. W miarę upływu tygodni spoglądałem na postępy moich rówieśników i czułem, że nie robię wystarczająco dużo lub że nie robię wystarczająco szybkich postępów, co czasami było bardzo demotywujące. Rozmowa z profesorem Mallochem i upewnianie się, że rzeczywiście uczę się rzeczy, które były dla mnie bardzo nowe, pomogły mi iść dalej. Innym problemem było to, że wiedza teoretyczna i jej zastosowanie to dwie różne rzeczy. Chociaż wiedziałem, co muszę, tak naprawdę kodowanie w pytonie to zupełnie inna historia. W tym miejscu samo czytanie dokumentacji online i pytanie znajomych, którzy wiedzieli o tym więcej, bardzo pomogło w ostatecznym ustaleniu planu działania.
Osobiście uważam, że posiadanie większej biblioteki książek i dokumentów w M5 mogłoby pomóc osobom pracującym nad projektami. Dobrym pomysłem dla M5 jest również posiadanie cyfrowego zapisu projektów realizowanych przez uczniów w czasie rzeczywistym, aby inni studenci i pracownicy mogli na nie spojrzeć i zaangażować się, jeśli ich to interesuje.
Gdy projekt dobiega końca, nauczyłem się tak wiele w tak krótkim czasie. Zdobyłem bardzo praktyczną wiedzę na temat uczenia maszynowego i czuję, że zrobiłem pierwsze kroki, aby bardziej się w to zaangażować. Zdałem sobie sprawę, że lubię wizję komputerową i że być może będę chciał to robić nawet w przyszłości. Przede wszystkim dowiedziałem się, czym jest PCA, dlaczego jest tak ważny i jak z niego korzystać.
Krok 4: Kolejne kroki
Dla mnie było to tylko zarysowanie powierzchni czegoś znacznie bardziej rozległego i bardzo ważnego w dzisiejszym świecie, czyli uczenia maszynowego. W niedalekiej przyszłości planuję brać udział w kursach związanych z uczeniem maszynowym. Planuję również budowanie swojej drogi do rozpoznawania twarzy, ponieważ tam właśnie zaczął się cały projekt. Mam też pomysły na system bezpieczeństwa, który wykorzystuje kombinację cech (jedną z nich jest twarz osoby), aby był naprawdę bezpieczny i jest to coś, nad czym chcę pracować w przyszłości, gdy będę miał szersze zrozumienie rzeczy.
Dla każdego takiego jak ja, który interesuje się uczeniem maszynowym i przetwarzaniem obrazów, ale nie ma wcześniejszego doświadczenia, gorąco sugerowałbym najpierw naukę i zrozumienie algebry liniowej wraz ze statystykami (zwłaszcza rozkładów). Po drugie, sugerowałbym przeczytanie Rozpoznawania wzorców i uczenia maszynowego Christophera M. Bishopa. Ta książka pomogła mi zrozumieć podstawy tego, w co się pakuję i jest bardzo dobrze skonstruowana.