From f4900e7a3ef4fae3b4a74c0bc56cec3821d4c22c Mon Sep 17 00:00:00 2001 From: Janghun Lee <74360958+bh2980@users.noreply.github.com> Date: Tue, 11 Jan 2022 06:10:04 +0900 Subject: [PATCH] Update README.md --- README.md | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 82 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c135579..4e653a5 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ 1. 데이터 수집 2. 데이터 라벨링 3. 데이터 가공 -4. 프로그램 작성 +4. 모델 5. 학습 6. 테스트 7. 결론 @@ -34,7 +34,87 @@ selenium 라이브러리를 통해서 수강신청 홈페이지에 17분마다 파이썬 기본 GUI 라이브러리인 tkinter를 이용하여 폴더 내부의 사진을 하나씩 띄워주고 입력창에 보안 코드를 작성 후 엔터를 치면 -해당 사진의 파일 이름을 보안코드로 바꿔주는 프로그램 작성 후 사용 +해당 사진의 파일 이름을 입력한 보안코드로 바꿔주는 프로그램 작성 후 사용 + +## 3. 데이터 가공 + +![frame2](https://user-images.githubusercontent.com/74360958/148836497-6961a5c0-bff8-40fa-9d35-a8e95aaa8b1f.png) + +다음과 같이 샘플에서 적절한 frame 너비와 위치를 계산한다 + +- frame_size: 28px x 40px +- start_padding : 5px +- between_padding : 8px + +그 후 opencv를 이용하여 grayscale로 로드 후 각 이미지를 frame에 맞게 자른다. + +![2_0](https://user-images.githubusercontent.com/74360958/148837068-4d96407a-6e93-4037-8e29-15bbc0c8ee64.png) +![5_29](https://user-images.githubusercontent.com/74360958/148837098-b7dbf392-223d-4003-ab3a-b8eeeefd0159.png) +![k_134](https://user-images.githubusercontent.com/74360958/148837125-a40fb673-e427-47bc-b383-b6bf705a18c2.png) + +화면 캡처 2022-01-11 060119 + +나뉘어진 data를 구글 드라이브에 업로드 후 colab에서 불러와 Nomalization한다. + +![p_6153](https://user-images.githubusercontent.com/74360958/148838045-fc1fcfa3-6e59-46e9-a5d3-40b9e9178437.png) +![148837559-dd89375b-f4fa-4bde-b676-a69c0339ff21](https://user-images.githubusercontent.com/74360958/148838379-854941d3-3378-4c95-aee4-8a10eab51b6e.png) + +4. 모델 정의 + +```python +import tensorflow as tf + +# act = "linear" +# act = "sigmoid" +# act = "tanh" +act = "relu" + +# 3개의 층 128개의 노드 +model1 = tf.keras.models.Sequential([ + # 28x28 입력층 + tf.keras.layers.Flatten(input_shape=(40, 28)), + tf.keras.layers.Dense(128, activation=act), + tf.keras.layers.Dense(128, activation=act), + tf.keras.layers.Dense(128, activation=act), + tf.keras.layers.Dense(23, activation="softmax") +]) + +opt = tf.keras.optimizers.Adam(learning_rate=0.005) +# opt = tf.keras.optimizers.RMSprop(learning_rate=0.01, momentum=0.1) + +model1.compile(loss='categorical_crossentropy', optimizer = opt, metrics=['accuracy']) +``` + +5. 학습 + +```python +model1.fit(d_train, l_train_1hot, epochs = 50) +``` + +6. 테스트 + +이후 unlabeled test set에 대해서 test를 진행해보았다. + +- 글자 1개에 대한 테스트 + + +image + +b를 정상적으로 b로 출력하고 있다. + +- 전체 글자에 대한 테스트 + +![download](https://user-images.githubusercontent.com/74360958/148839662-c5e14c7b-813f-4ec1-9261-0addcd8cd18e.png) + +ma5c라 적힌 이미지를 gray scale로 불러온 모습 + +![download](https://user-images.githubusercontent.com/74360958/148839707-855ed582-a941-4a99-b642-cf3dd716dae0.png) + +opencv의 adaptiveThreshold 함수를 이용해 후처리 한 모습 + +image + +결과값으로 ma5c로 예측하는 모습이 보인다. > 참고