Jamjomjara / snu-artoon

ARToon
MIT License
4 stars 0 forks source link

[머신러닝] 중간 발표 전 현재까지의 학습 상황과 계획입니다 #14

Closed pptnz closed 7 years ago

pptnz commented 7 years ago

현재까지의 학습 상황

중간 발표 이전까지 완료할 일들

중간 발표 이후 해야 할 일

pptnz commented 7 years ago

YOLO 모델이 빠르고 정확하여 과제에 더 적합한 것 같아, 이 모델의 가중치를 사용합니다. You Only Look Once: Unified, Real-Time Object Detection

Jamjomjara commented 7 years ago

@pptnz 트레이닝과 테스트를 위한 이미지셋의 준비는 어떻게 준비하고 있나요? 전처리 코드도 Repository에 함께 올려주시면 감사하겠습니다.

pptnz commented 7 years ago

준비된 이미지셋은 다음과 같습니다. 우선 FDDB의 이미지를 이용하고, 모자라다고 판단되면 image net의 이미지들을 사용할 것입니다.

이미지에 대한 별 다른 전처리는 필요하지 않으나, FDDB는 annotation을 text에서 XML로 변환하는 작업이 필요합니다.

감사합니다.

willjwon commented 7 years ago

@pptnz 혹시 FDDB의 annotation이 주어진 규칙이 있는 형태라면, XML로 변환하는 프로그램은 제가 작성하도록 하겠습니다.

pptnz commented 7 years ago

사람의 몸 전체를 인식하는 image net은 프로젝트와 맞지 않아 얼굴에 집중한 FDDB를 사용하기로 하였습니다.

그 결과 2555 장의 사진과 그에 대응하는 Annotation을 얻을 수 있었습니다.

Jamjomjara commented 7 years ago

@pptnz 프로젝트와 맞지 않는다는게 몸전체가 나오지 않으면 인식이 되지 않기 때문인가요?

pptnz commented 7 years ago

몸 전체를 인식하는 것과 얼굴을 인식하는 것이 다른 문제라고 판단하였습니다. 그래서 학습을 진행할 때 몸 전체를 인식시킬지 얼굴을 인식시킬지 정해야 했습니다. 프로젝트에서 사용자와의 상호작용을 목표로 삼기 때문에, 몸 전체보다는 얼굴을 인식시키는 것이 더 효과적일 것이라고 생각하였습니다.

willjwon commented 7 years ago

FDDB 이미지셋의 텍스트 annotation을 xml로 변환하는 전처리 프로그램 구현을 완료하였습니다. AnnotationToXMLConverter

pptnz commented 7 years ago

변환된 xml을 바탕으로 training 중입니다. model은 tiny-yolo.cfg를 1 개의 class(person)에 맞게 변형하여 사용합니다. initialization weight은 tiny-yolo-voc, yolo-face의 두 가중치 셋을 가져와서 두 대의 컴퓨터에서 각각 학습시킵니다.

Learning하는 환경은 다음과 같습니다. Learning Rate = 0.0001 Batch Size = 16 Epoch number = 20

pptnz commented 7 years ago

저는 tiny-yolo-1c 모델(tiny-yolo 모델을 1 class에 맞게 변형하여 붙인 이름입니다.)과 tiny-yolo-voc의 가중치를 사용하고, 핌언 언니는 yolo-face 모델과 yolo-face_final.weights 가중치를 사용합니다.

tiny-yolo-1c 모델의 학습 진행 상황 step 2125까지 loss가 117.229에서 1.7로 현저하게 떨어졌습니다. 이에 따라 step 2126부터 Learning Rate를 1e-4에서 1e-6으로 낮추어 미세하게 학습시키고 있습니다. 현재는 step 3144입니다.

중간 중간에 간단하게 test해보았을 때 training data에서 높은 인식률을 보이며, training data가 아닌 이미지에서도 잘 인식합니다. 구체적인 인식률은 나중에 trianing이 어느 정도 마무리되면 평가하도록 하겠습니다.

Jamjomjara commented 7 years ago

@pptnz YOLO 모델을 적용해 보지는 않았지만 소개영상이 워낙 인상깊어서(본시리즈였나 007이었나? -_-;;) 결과가 기대됩니다. Test 데이터는 Training 데이터의 10~20% 수준으로 준비하시면 좋을것 같습니다.

pptnz commented 7 years ago

@Jamjomjara 저도 그 영상 보았습니다! 영상처럼 잘 될지 모르겠습니다. 훈련 데이터에 얼굴 정면 사진이 많아서 정면 인식은 잘 되는데 측면 인식이 잘 안됩니다. 사용자가 웹툰 앱을 계속 보면서 상호작용한다고 보면 괜찮을 것 같기도 합니다. 조언 감사합니다.

pptnz commented 7 years ago

tiny-yolo-1c 모델의 test Youtube Faces DB에서 가져온 데이터로 test 해보았습니다. 이 데이터셋은 youtube의 1595명의 5021개의 영상에서 캡처한 스냅샷 62만 여장의 얼굴 사진을 가지고 있습니다. 각각 다른 영상에서 가져온 255개 사진으로 시험해 보았습니다. 정면이고 얼굴이 크게 나온 사진이 대부분인 데이터라 그런지, 얼굴이라고 인식하지 못한 사진이 5장에 불과했습니다. 즉, 98% 정도의 높은 정확도를 보였습니다.