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)
+
+
+
+나뉘어진 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개에 대한 테스트
+
+
+
+
+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 함수를 이용해 후처리 한 모습
+
+
+
+결과값으로 ma5c로 예측하는 모습이 보인다.
> 참고