Compare commits
No commits in common. "master" and "AI_Michal" have entirely different histories.
@ -1,70 +0,0 @@
|
|||||||
# DSZI_Survival - Sieć Neuronowa
|
|
||||||
### Autor: Jonathan Spaczyński
|
|
||||||
|
|
||||||
## Cel zastosowania w projekcie
|
|
||||||
W projekcie DSZI_Survival sieć neuronowa użyta jest do podejmowania decyzji przez agenta.
|
|
||||||
Decyzja polega na rozpoznawaniu zdjęć owoców (jabłka i gruszki). W przypadku nie rozpoznania owocu przez
|
|
||||||
agenta, dochodzi do zatrucia i agent umiera/przegrywa.
|
|
||||||
|
|
||||||
## Przygotowanie danych
|
|
||||||
|
|
||||||
* **Krok 1** Przechowywane zdjęcia owoców muszą przejść przez proces zamiany zdjęcia (.jpg) na dane, które
|
|
||||||
mogą być wykorzystane przez sieć neuronową.
|
|
||||||
|
|
||||||
```python
|
|
||||||
CATEGORIES = ["Apple", "Pear"]
|
|
||||||
IMG_SIZE = 64
|
|
||||||
|
|
||||||
training_data = []
|
|
||||||
|
|
||||||
|
|
||||||
def create_training_data():
|
|
||||||
for category in CATEGORIES:
|
|
||||||
path = os.path.join(DATADIR, category)
|
|
||||||
class_num = CATEGORIES.index(category)
|
|
||||||
for img in os.listdir(path):
|
|
||||||
try:
|
|
||||||
img_array = cv2.imread(os.path.join(path, img), cv2.IMREAD_GRAYSCALE)
|
|
||||||
new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
|
|
||||||
training_data.append([new_array, class_num])
|
|
||||||
except Exception as e:
|
|
||||||
pass
|
|
||||||
```
|
|
||||||
zdjęcia są przechowywane w tablicy training_data wraz z klasyfikacją (class_num) odpowiadającą jakim typem owocu jest zdjęcie
|
|
||||||
|
|
||||||
* **Krok 2** Bardzo ważnym krokiem jest pomieszanie danych. W przeciwnym wypadku nasz model po ciągłym otrzymywanie danych
|
|
||||||
reprezentujących tylko jedną kategorię owoców mógłby się wyuczyć, aby tylko zgadywać tą kategorię.
|
|
||||||
```python
|
|
||||||
random.shuffle(training_data)
|
|
||||||
```
|
|
||||||
* **Krok 3** Ostatnim krokiem jest zaktualizowanie danych w taki sposób żeby były z przedziału
|
|
||||||
od 0 d 255 (reprezentacja koloru danego pixela)
|
|
||||||
```python
|
|
||||||
X = X / 255.0
|
|
||||||
```
|
|
||||||
## Kilka słów na temat danych
|
|
||||||
* **Ilość Danych** Do trenowania modelu wykorzystałem 8568 zdjęć gruszek i jabłek
|
|
||||||
z czego mniej więcej połowa danych była jednym z typów ww. owoców, a druga połowa
|
|
||||||
reprezentowała pozostałą kategorią
|
|
||||||
* **Dane wykorzystane do obliczenia skutecznośći** stanowiły małą i oddzielną część danych wykorzystanych do trenowania.
|
|
||||||
## Model
|
|
||||||
* **Dane wejściowe:** Dane o kształcie 64x64 reprezentujące pixele w zdjęciach owoców
|
|
||||||
* **Warstwa ukryta:** Składająca się z 128 "neuronów" wykorzystującą sigmoid jako funkcję aktywacyjną
|
|
||||||
* **Warstwa wyjściowa:** Składająca się z 2 "neuronów" reprezentujących gruszkę i jabłko
|
|
||||||
* **Stała ucząca:** 0.001
|
|
||||||
|
|
||||||
```python
|
|
||||||
model = tf.keras.Sequential([
|
|
||||||
tf.keras.layers.Flatten(input_shape=(64, 64)),
|
|
||||||
tf.keras.layers.Dense(128, activation=tf.nn.sigmoid),
|
|
||||||
tf.keras.layers.Dense(2, activation=tf.nn.sigmoid)
|
|
||||||
])
|
|
||||||
|
|
||||||
model.compile(tf.keras.optimizers.Adam(lr=0.001),
|
|
||||||
loss="sparse_categorical_crossentropy",
|
|
||||||
metrics=["accuracy"])
|
|
||||||
```
|
|
||||||
## Osiągniecia modelu
|
|
||||||
* **Trafność:** 86.4%
|
|
||||||
* **Strata:** 0.312
|
|
||||||
|
|
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 5.2 KiB |