frames | ||
model_pred | ||
test_data | ||
test_data_andrzej | ||
test_data_cropped | ||
test_data_ola | ||
test_data_own | ||
test_data_own_cropped | ||
training_model | ||
.gitignore | ||
crop_hand_skeleton.py | ||
crop_hand.py | ||
kamil_asl.mp4 | ||
main.py | ||
mp.mp4 | ||
pred_test.py | ||
pred.py.save | ||
process_video.py | ||
README.md | ||
requirements.txt |
projekt_widzenie
Autorzy
Mikołaj Pokrywka, Kamil Guttmann, Andrzej Preibisz
Run apllication
pip install -r requirements.txt
streamlit run main.py
- 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:
- https://www.kaggle.com/datasets/mrgeislinger/asl-rgb-depth-fingerspelling-spelling-it-out
- https://www.kaggle.com/datasets/grassknoted/asl-alphabet
- https://www.kaggle.com/datasets/lexset/synthetic-asl-alphabet
- 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