projekt_ml/report.md
2025-01-22 09:32:10 +01:00

7.5 KiB

Predykcja technicali

Repozytorium

Technical

'Technical' to pojęcie określające lekki pojazd o przeznaczeniu wojskowym mającym pełnić rolę wsparcia na polu bitwy. Technical jako koncept wojskowy wywodzi się z lat 80, kiedy globalizacja i powszechna motoryzacja zaczęła mieć wpływ na działania bojówek afrykańskich i bliskiego wschodu. Organizacje te, albowiem, w tym okresie zaczęły wykorzystywać w dużych ilościach prowizorycznie zmodyfikowane pojazdy cywilne (szczególnie pojazdy w stylu Toyota Hilux) do transportu, a także wsparcia ogniowego lżejszych jednostek piechoty, które zazwyczaj nie mogły się cieszyć żadnym wsparciem w konfliktach tego typu. Chyba najlepiej koncept tego pojazdu ilustruje konflikt Toyota War, nazwany po masowym wykorzystaniu pojazdów tego producenta w tym konflikcie w roli technicali. Koncept ten okazał się na tyle skuteczny, że w ostatnich latach zachodnie firmy zbrojeniowe zaczęły produkować własne iteracje na tym koncepcie, tworząc profesjonalnie wyprodukowane pojazdy mające wykonywać rolę, która dotychczas była tylko wykonywana przez pojazdy improwizowane.

Charakterystyka pojazdów typu technical oznacza, że są, de facto, w szarej strefie pomiędzy pojazdami cywilnymi a wojskowymi. Technical to może być cywilna ciężarówka z przymocowanym uzbrojeniem na dachu, co czyni automatyczne rozpoznawanie pojazdów tego typu potencjalnie trudnym, a jednocześnie istotnym, albowiem poprzez swoje podobieństwo do cywilnych pojazdów błędne rozpoznanie technicala może bardzo łatwo prowadzić to tragedii w środowisku wojskowym.

Zbiór danych

Niestety zagadnienie technicali nie trafiło jeszcze do mainstreamu. W związku z tym dobra dokumentacja zdjęciowa tych maszyn jest ograniczona i z reguły znajduje się na rozproszonych forach dedykowanych wojskowości. Co za tym idzie zbiór danych został zbudowany poprzez wykorzystanie tego gotowego zestawu zdjęć pojazdów wojskowych oraz tego zestawu aut jako pojazdów cywilnych. W ten sposób powstał wystarczająco duży zestaw treningowy i testowy. Aby potwierdzić czy model potrafi rozpoznawać technicale, został stworzony dodatkowy zestaw zdjęć, głównie poprzez scrapowanie z Reddit.com i następnie ręczną weryfikacje. Jako kontrprzykład do tego zestawu zdjęć technicali został wykorzystany ponownie testowy zestaw zdjęć pojazdów cywilnych.

Zbiór treningowy Zbiór testowy Zbiór weryfikacyjny
Pojazdy wojskowe 10415 3720 401
Pojazdy cywilne 1197 598 598

Dokładne źródła zdjęć technicali

Ze strony Reddit.com subreddit r\shittytechincals został wykorzystany jako główne źródło zdjęć. Jest to największe na tej stronie zgromadzenie dedykowane do wymiany zdjęć tych pojazdów. Kwestia dokładnej definicji technicala jest tematem kontrowersyjnym. Jest to zaiste pojęcie rozmyte. Przyjąłem założenie że technical musi być pojazdem naziemnym, z minimalnym lub prowizorycznym pancerzem i zamontowanym uzbrojeniem. Powyższe założenia zostały wykorzystane w ręcznej kuracji zdjęć, i m.in. ilustracje, memy, obrazy pojazdów powietrznych lub nawodnych zostały wyeliminowane z zestawu zdjęć.

Preprocessing

W celu ujednolicenia danych wszystkie zdjęcia zostały zmniejszone do 225x225 px, a następnie zamienione na zdjęcia czarno białe. Oprócz przyspieszenia treningu ten ruch miał na celu wyeliminowanie biasu wynikającego z koloru pojazdów jak i palety kolorystycznej otoczenia.

Model v1

W celu predykcji została stworzona stosunkowo prosta sieć neuronowa składająca się z dwóch warstw konwolucyjnych i dwóch gęstych. Podczas treningu sample były wybierane pseudolosowo, z biasem odpowiadającym dysproporcji wielkości klas w zestawie treningowym.

Ewaluacja

Model osiągnął celność 100% na zestawie treningowym z następującym confusion matrix:

Predicted Negative Predicted Positive
Actual Negative 5750 5
Actual Positive 8 5847

Model osiągnął celność 95% na zestawie testowym z następującym confusion matrix:

Predicted Negative Predicted Positive
Actual Negative 2001 194
Actual Positive 34 2127

Choć widoczny jest bias, jest on w miarę akceptowalny. Następnie koniecznym było określenie jak ta sieć się spełnia w zadaniu rozróżniania pojazdów cywilnych od technicali. W tym celu została wykonana ewaluacja na zestawie weryfikacyjnym, gdzie zdjęcia technicali były traktowane jako zdjęcia pojazdów wojskowych. W tym zadaniu model osiągnął 93% celności z następującym confusion matrix:

Predicted Negative Predicted Positive
Actual Negative 434 62
Actual Positive 12 489

Model v2

Po sukcesie modelu v1 kwestią otwartą było to, czy nie da się zbudować lepszej sieci neuronowej wprowadzając drobne zmiany do jej struktury. Zatem na podstawie pierwszej wersji modelu powstała druga wersja z dodatkową warstwą konwolucyjną i większą ilością neuronów w warstwach. Model ten osiągnął celność 100% na zestawie treningowym z następującym confusion matrix:

Predicted Negative Predicted Positive
Actual Negative 5760 0
Actual Positive 31 5819

Na zestawie testowym ta iteracja modelu osiągnęła celność 99% z następującym confusion matrix:

Predicted Negative Predicted Positive
Actual Negative 2105 23
Actual Positive 18 2170

I na zestawie weryfikacyjnym model osiągnął celność 98% z następującym confusion matrix:

Predicted Negative Predicted Positive
Actual Negative 494 8
Actual Positive 7 488

Model v3

Widząc taki ogromny sukces w rozróżnianiu technicali modelu v2, jedynym logicznym pytaniem było to, czy da się dotrzeć do ~100% celności? W tym celu powstała sieć v3, jeszcze bardziej rozbudowana wersja sieci v2. Niestety ta sieć osiągnęła jedynie marginalnie lepsze wyniki, z różnicą celności < 0.01.

Wnioski

Model wytrenowany na zdjęciach konwencjonalnych pojazdów wojskowych jest w stanie skutecznie rozróżniać między pojazdami typu technical a pojazdami cywilnymi. Kwestią otwartą analizy jest to czy wyniki modelu są wystarczająco dobre, oraz czy model sobie dobrze poradzi z rozpoznawaniem szczególnie niekonwencjonalnych technicali.