projekt_ml/report.md

151 lines
7.5 KiB
Markdown
Raw Permalink Normal View History

2025-01-19 16:27:39 +01:00
# Predykcja technicali
2025-01-19 16:30:54 +01:00
[Repozytorium](https://git.wmi.amu.edu.pl/s481817/projekt_ml)
2025-01-19 16:27:39 +01:00
## Technical
'[Technical](https://en.wikipedia.org/wiki/Technical_(vehicle))' 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](https://en.wikipedia.org/wiki/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](https://en.wikipedia.org/wiki/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](https://www.kaggle.com/datasets/amanrajbose/millitary-vechiles) gotowego
zestawu zdjęć pojazdów wojskowych oraz
[tego](https://www.kaggle.com/datasets/kshitij192/cars-image-dataset) 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.
2025-01-22 09:32:10 +01:00
ilustracje, memy, obrazy pojazdów powietrznych lub nawodnych zostały wyeliminowane
z zestawu zdjęć.
2025-01-19 16:27:39 +01:00
## 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.
2025-01-22 09:32:10 +01:00
## Ewaluacja
2025-01-19 16:27:39 +01:00
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.