fix paths in raports
This commit is contained in:
parent
84e47b1c96
commit
db402d3d71
@ -13,9 +13,9 @@
|
|||||||
- w projekcie wykorzystane zostały drzewa decyzyjne jako metoda uczenia
|
- w projekcie wykorzystane zostały drzewa decyzyjne jako metoda uczenia
|
||||||
- projekt podzielony jest na 4 pliki
|
- projekt podzielony jest na 4 pliki
|
||||||
- plik tworzenie_danych_AO.py jest odpowiedzialny za wydobycie z każdego zdjęcia własności i zapis ich do pliku
|
- plik tworzenie_danych_AO.py jest odpowiedzialny za wydobycie z każdego zdjęcia własności i zapis ich do pliku
|
||||||
![4](resources/screenShots/adamo4.png)
|
![4](../screenShots/adamo4.png)
|
||||||
- w pliku uczenie_adamO.py znajdują się funkcje odpowiedzialne za uczenie i testowanie modelu
|
- w pliku uczenie_adamO.py znajdują się funkcje odpowiedzialne za uczenie i testowanie modelu
|
||||||
![5](resources/screenShots/adamo5.png)
|
![5](../screenShots/adamo5.png)
|
||||||
- plik parametry_zdjec.h5 zawiera własności wszystkich zdjęć wykorzystanych w projekcie
|
- plik parametry_zdjec.h5 zawiera własności wszystkich zdjęć wykorzystanych w projekcie
|
||||||
- plik etykiety.h5 zawiera odpowiedni typ każdego ze zdjęć (glass,paper,plastic,metal)
|
- plik etykiety.h5 zawiera odpowiedni typ każdego ze zdjęć (glass,paper,plastic,metal)
|
||||||
|
|
||||||
@ -31,31 +31,31 @@ histogram = wyznaczHistogram(zdj)
|
|||||||
```
|
```
|
||||||
- wybrane własności to:
|
- wybrane własności to:
|
||||||
1. Histogram kolorów okreslający rozkład jasności pixeli w każdej komórce na zdjęciu w skali szarości
|
1. Histogram kolorów okreslający rozkład jasności pixeli w każdej komórce na zdjęciu w skali szarości
|
||||||
![6](resources/screenShots/adamo6.png)
|
![6](../screenShots/adamo6.png)
|
||||||
zdjęcie jest przekształcane do przestrzeni barw hsv
|
zdjęcie jest przekształcane do przestrzeni barw hsv
|
||||||
po czym wyliczany jest histogram podając do funkcji zdjęcie, kanały (hsv), maskę, podział zdjęcia na 512 przedziałów (8x8x8), zakres każdego kanału
|
po czym wyliczany jest histogram podając do funkcji zdjęcie, kanały (hsv), maskę, podział zdjęcia na 512 przedziałów (8x8x8), zakres każdego kanału
|
||||||
2. Momenty obrazu (Hu Moments) określające kształt obiektu na zdjęciu
|
2. Momenty obrazu (Hu Moments) określające kształt obiektu na zdjęciu
|
||||||
![8](resources/screenShots/adamo8.png)
|
![8](../screenShots/adamo8.png)
|
||||||
są średnią ważoną intensywności pikseli obrazu.
|
są średnią ważoną intensywności pikseli obrazu.
|
||||||
Są liczone ze wzoru:
|
Są liczone ze wzoru:
|
||||||
![10](resources/screenShots/adamo10.png)
|
![10](../screenShots/adamo10.png)
|
||||||
gdzie I(x,y) to intensywność pixela w danym punkcie
|
gdzie I(x,y) to intensywność pixela w danym punkcie
|
||||||
*Momenty surowe* - informują o intensywności pikseli i ich położeniu na obrazie
|
*Momenty surowe* - informują o intensywności pikseli i ich położeniu na obrazie
|
||||||
*Momenty centralne* - otrzymujemy po odjęciu od momentów surowych środka ciężkości danego kształtu
|
*Momenty centralne* - otrzymujemy po odjęciu od momentów surowych środka ciężkości danego kształtu
|
||||||
![11](resources/screenShots/adamo11.png)
|
![11](../screenShots/adamo11.png)
|
||||||
momenty te są niezmienne w wyliczaniu to znaczy że jeśli kształt jest ten sam to nie ważne jest jego położenie na zdjęciu
|
momenty te są niezmienne w wyliczaniu to znaczy że jeśli kształt jest ten sam to nie ważne jest jego położenie na zdjęciu
|
||||||
*Momenty Hu* - to zbiór 7 liczb obliczonych na podstawie momentów centralnych.
|
*Momenty Hu* - to zbiór 7 liczb obliczonych na podstawie momentów centralnych.
|
||||||
Pierwsze 6 momentów są niezmienne dla translacji, skali i rotacji.
|
Pierwsze 6 momentów są niezmienne dla translacji, skali i rotacji.
|
||||||
Podczas gdy znak siódmej liczby zmienia się wraz z odbiciem kształu (względem osi).
|
Podczas gdy znak siódmej liczby zmienia się wraz z odbiciem kształu (względem osi).
|
||||||
![12](resources/screenShots/adamo12.png)
|
![12](../screenShots/adamo12.png)
|
||||||
|
|
||||||
3. Tekstura Haralicka określająca nasycenie ilości pixeli w skali szarości
|
3. Tekstura Haralicka określająca nasycenie ilości pixeli w skali szarości
|
||||||
![7](resources/screenShots/adamo7.png)
|
![7](../screenShots/adamo7.png)
|
||||||
"Haralick zasugerował zastosowanie macierzy współwystępowania poziomu szarości (GLCM).
|
"Haralick zasugerował zastosowanie macierzy współwystępowania poziomu szarości (GLCM).
|
||||||
Ta metoda opiera się na połączonych rozkładach prawdopodobieństwa par pikseli.
|
Ta metoda opiera się na połączonych rozkładach prawdopodobieństwa par pikseli.
|
||||||
GLCM pokazuje, jak często każdy poziom szarości występuje w pikselach umieszczonych w ustalonym położeniu
|
GLCM pokazuje, jak często każdy poziom szarości występuje w pikselach umieszczonych w ustalonym położeniu
|
||||||
geometrycznym względem siebie, w zależności od poziomu szarości."
|
geometrycznym względem siebie, w zależności od poziomu szarości."
|
||||||
![13](resources/screenShots/adamo13.png)
|
![13](../screenShots/adamo13.png)
|
||||||
|
|
||||||
- własności sa zapisywane jako macierze, ustawiane w szereg jako wiersz i zapisywane do pliku z danymi .h5
|
- własności sa zapisywane jako macierze, ustawiane w szereg jako wiersz i zapisywane do pliku z danymi .h5
|
||||||
```
|
```
|
||||||
@ -78,7 +78,7 @@ estymator domyślnie korzysta ze strategii opierającej się o indeks Giniego
|
|||||||
'indeks Giniego jest to miara która określa jak często losowo wybrany element zostanie błędnie zidentyfikowany'
|
'indeks Giniego jest to miara która określa jak często losowo wybrany element zostanie błędnie zidentyfikowany'
|
||||||
```
|
```
|
||||||
indeks jest obliczany ze wzoru:
|
indeks jest obliczany ze wzoru:
|
||||||
![9](resources/screenShots/adamo9.png)
|
![9](../screenShots/adamo9.png)
|
||||||
[przykład](https://www.geeksforgeeks.org/decision-tree-introduction-example/)
|
[przykład](https://www.geeksforgeeks.org/decision-tree-introduction-example/)
|
||||||
- estymator rozpoczyna uczenie korzystając ze zbiorów treningowych
|
- estymator rozpoczyna uczenie korzystając ze zbiorów treningowych
|
||||||
```
|
```
|
||||||
@ -103,11 +103,11 @@ rfc = adamO.rozpocznijUczenie()
|
|||||||
```
|
```
|
||||||
rodzaj = adamO.przewidz(smiec, rfc)
|
rodzaj = adamO.przewidz(smiec, rfc)
|
||||||
```
|
```
|
||||||
![3](resources/screenShots/adamo3.png)
|
![3](../screenShots/adamo3.png)
|
||||||
- Zdjęcia posegregowanych śmieci umieszczane są w odpowiednich folderach:
|
- Zdjęcia posegregowanych śmieci umieszczane są w odpowiednich folderach:
|
||||||
![1](resources/screenShots/adamo1.png)
|
![1](../screenShots/adamo1.png)
|
||||||
- Na koniec wyświetlane są losowo wybrane zdjęcia śmieci z kontenerów wraz z informacją o typie ustalonym przez estymator
|
- Na koniec wyświetlane są losowo wybrane zdjęcia śmieci z kontenerów wraz z informacją o typie ustalonym przez estymator
|
||||||
![2](resources/screenShots/adamo2.png)
|
![2](../screenShots/adamo2.png)
|
||||||
1. górny napis to typ zwrócony przez estymator
|
1. górny napis to typ zwrócony przez estymator
|
||||||
2. drugi napis to wartości prawpopodobieństwa z jakim estymator ocenił typ
|
2. drugi napis to wartości prawpopodobieństwa z jakim estymator ocenił typ
|
||||||
3. trzeci napis to nazwa zdjęcia
|
3. trzeci napis to nazwa zdjęcia
|
||||||
|
@ -8,13 +8,13 @@
|
|||||||
|
|
||||||
## 1. Ogólne działanie:
|
## 1. Ogólne działanie:
|
||||||
|
|
||||||
![gif](resources/screenShots/gifProjektu.gif)
|
![gif](../screenShots/gifProjektu.gif)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2. Struktura katalogów:
|
## 2. Struktura katalogów:
|
||||||
|
|
||||||
![katalogi](resources/screenShots/strukturaKatalogu.png)
|
![katalogi](../screenShots/strukturaKatalogu.png)
|
||||||
|
|
||||||
**Resources**:
|
**Resources**:
|
||||||
|
|
||||||
@ -24,18 +24,18 @@
|
|||||||
|
|
||||||
**Pliki**:
|
**Pliki**:
|
||||||
|
|
||||||
**[game.py](game.py)** - plik zawierający całą funkcjonalność projektu:
|
**[game.py](../../src/game.py)** - plik zawierający całą funkcjonalność projektu:
|
||||||
|
|
||||||
- główna pętla programu,
|
- główna pętla programu,
|
||||||
- tworzenie planszy,
|
- tworzenie planszy,
|
||||||
- tworzenie i usytuowanie obiektów z katalogu [modeli](modele.py),
|
- tworzenie i usytuowanie obiektów z katalogu [modeli](../../src/modele.py),
|
||||||
- generowanie tekstowej interpretacji zebranej wiedzy
|
- generowanie tekstowej interpretacji zebranej wiedzy
|
||||||
|
|
||||||
**[main.py](main.py)** - klasa odpowiedzialna za uruchomienie programu
|
**[main.py](../../src/main.py)** - klasa odpowiedzialna za uruchomienie programu
|
||||||
|
|
||||||
**[modele.py](modele.py)** - zawiera klasy aplikacji
|
**[modele.py](../../src/modele.py)** - zawiera klasy aplikacji
|
||||||
|
|
||||||
**[requirements.txt](requirements.txt)** - posiada biblioteki niezbędne do uruchomienia programu, które instalujemy za pomocą poniższego polecenia:
|
**[requirements.txt](../../requirements.txt)** - posiada biblioteki niezbędne do uruchomienia programu, które instalujemy za pomocą poniższego polecenia:
|
||||||
|
|
||||||
```
|
```
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
@ -46,23 +46,23 @@ pip install -r requirements.txt
|
|||||||
## 3. Opis funkcjonalności programu:
|
## 3. Opis funkcjonalności programu:
|
||||||
|
|
||||||
* śmieciarka porusza się w losowy sposób po planszy 15 x 15 (koloruje na niebiesko przebytą trasę)
|
* śmieciarka porusza się w losowy sposób po planszy 15 x 15 (koloruje na niebiesko przebytą trasę)
|
||||||
![ruch śmieciarki](resources/screenShots/randMove.png)
|
![ruch śmieciarki](../screenShots/randMove.png)
|
||||||
* domy generowane są losowo na mapie z pominięciem kolizji z innymi obiektami
|
* domy generowane są losowo na mapie z pominięciem kolizji z innymi obiektami
|
||||||
![generowanie_domów](resources/screenShots/wspolrzedneDomow.png)
|
![generowanie_domów](../screenShots/wspolrzedneDomow.png)
|
||||||
* pozycja wysypiska, przeszkody (jeziorko) i kontenerów jest statyczna
|
* pozycja wysypiska, przeszkody (jeziorko) i kontenerów jest statyczna
|
||||||
![statyczna_pozycja](resources/screenShots/statycznaPozycja.png)
|
![statyczna_pozycja](../screenShots/statycznaPozycja.png)
|
||||||
* w kontenerach przechowywane będą posegregowane, odpowiednio według kategorii, zdjęcia śmieci
|
* w kontenerach przechowywane będą posegregowane, odpowiednio według kategorii, zdjęcia śmieci
|
||||||
|
|
||||||
* zdjęcia śmieci będą przydzielane w sposób losowy do każdego z domów na planszy
|
* zdjęcia śmieci będą przydzielane w sposób losowy do każdego z domów na planszy
|
||||||
![losowanie_śmieci](resources/screenShots/wyborSmieci.png)
|
![losowanie_śmieci](../screenShots/wyborSmieci.png)
|
||||||
* śmieciarka zbiera śmieci po najechaniu na pozycję danego domu
|
* śmieciarka zbiera śmieci po najechaniu na pozycję danego domu
|
||||||
|
|
||||||
* po każdym uruchomieniu programu tworzona jest struktura katalogów dla posegregowanych śmieci
|
* po każdym uruchomieniu programu tworzona jest struktura katalogów dla posegregowanych śmieci
|
||||||
![tworzenie_struktury](resources/screenShots/tworzenieStrukturyKatalogow.png)
|
![tworzenie_struktury](../screenShots/tworzenieStrukturyKatalogow.png)
|
||||||
* śmieciarka sprawdza w każdym ruchu czy nie dojdzie do kolizji z innym obiektem lub nie wyjedzie poza planszę
|
* śmieciarka sprawdza w każdym ruchu czy nie dojdzie do kolizji z innym obiektem lub nie wyjedzie poza planszę
|
||||||
![sprawdzanie_kolizcji](resources/screenShots/sprawdzanieKolizji.png)
|
![sprawdzanie_kolizcji](../screenShots/sprawdzanieKolizji.png)
|
||||||
* po prawej stronie wypisywane są aktualne, najważniejsze informacje
|
* po prawej stronie wypisywane są aktualne, najważniejsze informacje
|
||||||
![wiedza](resources/screenShots/wiedzaPoPrawejStronie.png)
|
![wiedza](../screenShots/wiedzaPoPrawejStronie.png)
|
||||||
* każdy obiekt na planszy posiada atrybuty odpowiedzalne za
|
* każdy obiekt na planszy posiada atrybuty odpowiedzalne za
|
||||||
przechowywanie wiedzy o danym obiekcie np.: obiekt śmieciarka przechowuje informacje o odwiedzonych domach
|
przechowywanie wiedzy o danym obiekcie np.: obiekt śmieciarka przechowuje informacje o odwiedzonych domach
|
||||||
![atrybuty](resources/screenShots/atrybutySmieciarki.png)
|
![atrybuty](../screenShots/atrybutySmieciarki.png)
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
## 1. Model:
|
## 1. Model:
|
||||||
|
|
||||||
![model](resources/screenShots/kacper1.png)
|
![model](../screenShots/kacper1.png)
|
||||||
|
|
||||||
- Powyższa funkcja tworzy sekwencyjny model sieci neuronowej
|
- Powyższa funkcja tworzy sekwencyjny model sieci neuronowej
|
||||||
- Składa się on z warstw
|
- Składa się on z warstw
|
||||||
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
## 2. Uczenie modelu:
|
## 2. Uczenie modelu:
|
||||||
|
|
||||||
![uczenie](resources/screenShots/kacper2.png)
|
![uczenie](../screenShots/kacper2.png)
|
||||||
|
|
||||||
- Model uczy się na 1599 zdjęciach śmieci podzielonych na 4 kategorie
|
- Model uczy się na 1599 zdjęciach śmieci podzielonych na 4 kategorie
|
||||||
- Wszystkie zdjęcia mają rozmiar 299x299 pikseli
|
- Wszystkie zdjęcia mają rozmiar 299x299 pikseli
|
||||||
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
## 2. Przewidywanie:
|
## 2. Przewidywanie:
|
||||||
|
|
||||||
![przewidywanie](resources/screenShots/kacper3.png)
|
![przewidywanie](../screenShots/kacper3.png)
|
||||||
|
|
||||||
- Obrazki są zamieniane na macierze
|
- Obrazki są zamieniane na macierze
|
||||||
- Prediction zawiera rozkład prawdopodobieństwa obrazka na kategorie
|
- Prediction zawiera rozkład prawdopodobieństwa obrazka na kategorie
|
||||||
@ -46,7 +46,7 @@
|
|||||||
|
|
||||||
## 2. Integracja w projekcie:
|
## 2. Integracja w projekcie:
|
||||||
|
|
||||||
![integracja](resources/screenShots/kacper4.png)
|
![integracja](../screenShots/kacper4.png)
|
||||||
|
|
||||||
- Podczas wizyty śmieciarki w domu wykonywana jest funkcja przewidzenia kategorii na każdym ze śmieci w danym domu
|
- Podczas wizyty śmieciarki w domu wykonywana jest funkcja przewidzenia kategorii na każdym ze śmieci w danym domu
|
||||||
- Zależnie od wyniku przewidywania śmieć jest umieszczany na odpowiedniej liście śmieci w śmieciarce
|
- Zależnie od wyniku przewidywania śmieć jest umieszczany na odpowiedniej liście śmieci w śmieciarce
|
||||||
|
@ -37,9 +37,9 @@ class Net(nn.Module): # klasa Net dziedziczaca po klasie bazowej nn.Module
|
|||||||
|
|
||||||
- conv1, conv2 – warstwy konwolucyjna, rozmiar filtra 5×5, posiadające 3 kanały wejściowe (RGB) i kanały wyjściowe dla następnych warstw
|
- conv1, conv2 – warstwy konwolucyjna, rozmiar filtra 5×5, posiadające 3 kanały wejściowe (RGB) i kanały wyjściowe dla następnych warstw
|
||||||
- pool - operacja `max-poolingu` - wyciaganie najwazniejszej informacji z zadanego obszaru obrazu
|
- pool - operacja `max-poolingu` - wyciaganie najwazniejszej informacji z zadanego obszaru obrazu
|
||||||
![model](resources/screenShots/maxpool.png)
|
![model](../screenShots/maxpool.png)
|
||||||
- fc1, fc2, fc3 - warstwy liniowe - `full connection layers` - w odróznieniu od warstw konwolucyjnych, każdy neuron dostaje input o neuronie z poprzedniej warstwy. W warstwie konwolucyjnej neurony wiedzą tylko o określonych neuronach z poprzedniego layera
|
- fc1, fc2, fc3 - warstwy liniowe - `full connection layers` - w odróznieniu od warstw konwolucyjnych, każdy neuron dostaje input o neuronie z poprzedniej warstwy. W warstwie konwolucyjnej neurony wiedzą tylko o określonych neuronach z poprzedniego layera
|
||||||
![model](resources/screenShots/fc.png)
|
![model](../screenShots/fc.png)
|
||||||
- metoda `forward` - metoda forward określa cały przepływ(flow) inputu przez warstwy aż do outputu. W pierwszej części tensor danej wejściowej(tensor zdjęcia) przepuszczany jest przez dwie warstwy konwolucyjne i wykonywana jest na nim wcześniej wspomniana operacja `max-poolingu`. W następnej części wypłaszczamy x, wszystkie wymiary przechowujace dane obrazu – 16 kanalow o rozmiarach 71×71 rozciągamy jako jeden długi wektor. Na koniec przepuszczamy tensor przez warstwy liniowe i zwracamy output.
|
- metoda `forward` - metoda forward określa cały przepływ(flow) inputu przez warstwy aż do outputu. W pierwszej części tensor danej wejściowej(tensor zdjęcia) przepuszczany jest przez dwie warstwy konwolucyjne i wykonywana jest na nim wcześniej wspomniana operacja `max-poolingu`. W następnej części wypłaszczamy x, wszystkie wymiary przechowujace dane obrazu – 16 kanalow o rozmiarach 71×71 rozciągamy jako jeden długi wektor. Na koniec przepuszczamy tensor przez warstwy liniowe i zwracamy output.
|
||||||
|
|
||||||
## 3. Trening:
|
## 3. Trening:
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
## 1. Ogólne działanie:
|
## 1. Ogólne działanie:
|
||||||
|
|
||||||
![gif](resources/screenShots/route-planning.gif)
|
![gif](../screenShots/route-planning.gif)
|
||||||
|
|
||||||
- Śmieciarka zaczyna ruch z pozycji (10, 10), po czym odwiedza wszystkie domy,
|
- Śmieciarka zaczyna ruch z pozycji (10, 10), po czym odwiedza wszystkie domy,
|
||||||
których współrzędne zostały wylosowane, następnie jedzie na wysypisko do najbliższego kontenera,
|
których współrzędne zostały wylosowane, następnie jedzie na wysypisko do najbliższego kontenera,
|
||||||
@ -20,7 +20,7 @@ po czym wybiera następny najbliższy nieodwiedzony kontener.
|
|||||||
|
|
||||||
## 2. Pętla główna strategii przeszukiwania:
|
## 2. Pętla główna strategii przeszukiwania:
|
||||||
|
|
||||||
![petla](resources/screenShots/petlaGlowna.png)
|
![petla](../screenShots/petlaGlowna.png)
|
||||||
|
|
||||||
- w pętli głównej wykorzystujemy przeszukiwanie grafu (graphsearch)
|
- w pętli głównej wykorzystujemy przeszukiwanie grafu (graphsearch)
|
||||||
- tworzymy kolejkę priorytetową, po czym dodajemy do niej bieżący węzeł
|
- tworzymy kolejkę priorytetową, po czym dodajemy do niej bieżący węzeł
|
||||||
@ -36,7 +36,7 @@ po czym wybiera następny najbliższy nieodwiedzony kontener.
|
|||||||
|
|
||||||
## 3. Funkcja następnika:
|
## 3. Funkcja następnika:
|
||||||
|
|
||||||
![succ](resources/screenShots/funkcjaNastepnika.png)
|
![succ](../screenShots/funkcjaNastepnika.png)
|
||||||
|
|
||||||
gdzie sąsiedzi to:
|
gdzie sąsiedzi to:
|
||||||
```
|
```
|
||||||
@ -51,7 +51,7 @@ sasiedzi = [(0, 1), (0, -1), (1, 0), (-1, 0)]
|
|||||||
|
|
||||||
## 4. Przyjęta heurystyka:
|
## 4. Przyjęta heurystyka:
|
||||||
|
|
||||||
![heurystyka](resources/screenShots/heurystyka.png)
|
![heurystyka](../screenShots/heurystyka.png)
|
||||||
|
|
||||||
- Heurystyka to suma odległości Manhattan
|
- Heurystyka to suma odległości Manhattan
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ sasiedzi = [(0, 1), (0, -1), (1, 0), (-1, 0)]
|
|||||||
|
|
||||||
## 5. Koszt wjechania na pole
|
## 5. Koszt wjechania na pole
|
||||||
|
|
||||||
![stepcost](resources/screenShots/stepcost.png)
|
![stepcost](../screenShots/stepcost.png)
|
||||||
|
|
||||||
- Koszt wjechania na pole, na którym jest dom wynosi 3
|
- Koszt wjechania na pole, na którym jest dom wynosi 3
|
||||||
- Koszt wjechania na pole, które jest wysypiskiem wynosi 2
|
- Koszt wjechania na pole, które jest wysypiskiem wynosi 2
|
||||||
|
Loading…
Reference in New Issue
Block a user