101 lines
2.5 KiB
Markdown
101 lines
2.5 KiB
Markdown
# projekt_widzenie
|
|
|
|
## Autorzy
|
|
|
|
Mikołaj Pokrywka
|
|
Kamil Guttmann
|
|
Andrzej Preibisz
|
|
|
|
## Run apllication
|
|
1. `pip install -r requirements.txt`
|
|
2. `streamlit run main.py`
|
|
3. On http://localhost:8501/ you should see the app
|
|
|
|
|
|
|
|
## Dataset
|
|
|
|
Mamy łącznie 197784 zdjęć
|
|
|
|
+ swój własno zrobiony zbiór testowy 148 zdjęć
|
|
|
|
Linki do datasetów:
|
|
1. https://www.kaggle.com/datasets/mrgeislinger/asl-rgb-depth-fingerspelling-spelling-it-out
|
|
2. https://www.kaggle.com/datasets/grassknoted/asl-alphabet
|
|
3. https://www.kaggle.com/datasets/lexset/synthetic-asl-alphabet
|
|
4. https://www.kaggle.com/datasets/kuzivakwashe/significant-asl-sign-language-alphabet-dataset
|
|
|
|
|
|
## Trening modelu
|
|
|
|
Do trenowania używano biblioteki Keras
|
|
|
|
### Pierwsze podejście model trenowany od zera (from scratch)
|
|
|
|
|
|
```
|
|
img_height=256
|
|
img_width=256
|
|
batch_size=128
|
|
epochs=30
|
|
```
|
|
|
|
```
|
|
layers.Rescaling(1./255, input_shape=(img_height, img_width, 3)),
|
|
layers.Conv2D(16, 3, padding='same', activation='relu'),
|
|
layers.MaxPooling2D(),
|
|
layers.Conv2D(32, 3, padding='same', activation='relu'),
|
|
layers.MaxPooling2D(),
|
|
layers.Conv2D(64, 3, padding='same', activation='relu'),
|
|
layers.MaxPooling2D(),
|
|
layers.Flatten(),
|
|
layers.Dense(128, activation='relu'),
|
|
layers.Dense(29,activation='softmax')
|
|
```
|
|
|
|
Zbiór testowy własny: 22% Accuracy
|
|
|
|
Zbiór testowy mieszany z Kaggle: 80% Accuracy
|
|
|
|
---
|
|
|
|
## Drugie podejście model VGG16
|
|
|
|
Zastosowano early stopping z val_loss
|
|
```
|
|
img_height=224
|
|
img_width=224
|
|
batch_size=128
|
|
epochs=50
|
|
```
|
|
|
|
Usunięto 3 wierzchne wartswy i dodano warstwy:
|
|
```
|
|
x = layers.Flatten()(vgg_model.output)
|
|
x = layers.Dense(len(class_names), activation='softmax')(x)
|
|
```
|
|
|
|
Zbiór testowy własny: 52% Accuracy
|
|
|
|
Zbiór testowy mieszany z Kaggle: 79% Accuracy
|
|
|
|
## Trzecie podejście model VGG16 z detekcją dłoni
|
|
|
|
Model jak powyżej tylko datasety zostały przereobione modelem do detekcji dłoni i wycięciem odpowiedniego fragmentu ze zdjęcia
|
|
|
|
Zbiór testowy własny: 61% Accuracy
|
|
|
|
|
|
## Czwarte podejście model VGG16 z detekcją dłoni i zaznaczeniem szkieletu
|
|
|
|
Model jak powyżej tylko datasety zostały przereobione modelem do detekcji dłoni, wycięciem odpowiedniego fragmentu ze zdjęcia, a także zaznaczenie "szkieletu" dłoni
|
|
|
|
Zbiór testowy własny: 70% Accuracy
|
|
|
|
|
|
## Piąte podejście model VGG19 z detekcją dłoni i zaznaczeniem szkieletu
|
|
|
|
Model jak powyżej tylko datasety zostały przereobione modelem do detekcji dłoni, wycięciem odpowiedniego fragmentu ze zdjęcia, a także zaznaczenie "szkieletu" dłoni
|
|
|
|
Zbiór testowy własny: 67% Accuracy
|