인프런 커뮤니티 질문&답변

developer님의 프로필 이미지
developer

작성한 질문수

차량 번호판 인식 프로젝트와 TensorFlow로 배우는 딥러닝 영상인식 올인원

Custom Dataset 실전 프로젝트 실습 1 - CRAFT를 이용한 License Plate Detection 모델(Custom Dataset) 학습 Solution

CRAFT Fine-Tuning 질문

작성

·

597

0

keras_ocr로 license plate dataset에 맞게 fine tuning을 할 때 어디까지(classifier나 conv layer)를 학습대상으로 삼을지 결정하는 부분은 어디에 있는 건가요?? 3강 VGGNet으로 개와 고양이 분류 문제에서는 명확하게 어디까지 학습대상을 삼을지 결정하고 learning rate를 조정하고 이미지넷 pre-trained weight를 잡는 과정들을 알 수 있었는데 이번 수업에서 이러한 fine tuning 과정들이 어디서 진행되는지 잘 모르겠습니다! keras_ocr 에서 특정 함수가 알아서 해주는 건가요??

 

그리고 custom data셋에 맞게 get_licenseplate_detector_dataset와 같은 함수를 새로 작성하는 것도 fine-tuning에 해당하나요? 수업에서 "License Plate Detection 데이터에 맞게 Fine-Tuning" 코드 부분이 왜 fine tuning 이 진행되는 부분인지 잘 모르겠습니다! 단지 license plate detection 데이터로 학습을 진행해서 그런건가요?

 

fine tuning을 진행할 때 기존의 데이터셋과 모델을 학습시키고 난 후에 커스텀 데이터에 맞게 돌려야 하나요? 아니면 모델을 가져와서 바로 커스텀 데이터에 맞게 돌려도 되나요? 수업에서 진행한 실습은 기존 모델의 사전 학습 없이 바로 커스텀 데이터에 맞게 돌린 것에 해당하나요?

답변 1

0

AISchool님의 프로필 이미지
AISchool
지식공유자

안녕하세요~. 반갑습니다.

keras_ocr로 license plate dataset에 맞게 fine tuning을 할 때 어디까지(classifier나 conv layer)를 학습대상으로 삼을지 결정하는 부분은 어디에 있는 건가요?? 3강 VGGNet으로 개와 고양이 분류 문제에서는 명확하게 어디까지 학습대상을 삼을지 결정하고 learning rate를 조정하고 이미지넷 pre-trained weight를 잡는 과정들을 알 수 있었는데 이번 수업에서 이러한 fine tuning 과정들이 어디서 진행되는지 잘 모르겠습니다! keras_ocr 에서 특정 함수가 알아서 해주는 건가요??

-> 말씀해주신대로 keras-ocr의 경우, keras-ocr 모듈이 알아서 해당 과정을 진행해줍니다. 기본적으로는 전체 Detector 모듈을 학습대상으로 삼는 형태이고 사전에 MLT 데이터셋(Multi-lingual scene text detection)에 학습시킨 모듈을 불러와서 fine-tuning하는 형태입니다. 좀더 구체적인 내용은 keras-ocr의 Detector 구현 코드에서 찾아보실 수 있습니다.

https://github.com/faustomorales/keras-ocr/blob/master/keras_ocr/detection.py#L662 

 

그리고 custom data셋에 맞게 get_licenseplate_detector_dataset와 같은 함수를 새로 작성하는 것도 fine-tuning에 해당하나요? 수업에서 "License Plate Detection 데이터에 맞게 Fine-Tuning" 코드 부분이 왜 fine tuning 이 진행되는 부분인지 잘 모르겠습니다! 단지 license plate detection 데이터로 학습을 진행해서 그런건가요?

-> 위에서 말씀드린대로 keras-ocr  데이터셋의 경우 기본적으로 MLT 데이터셋(Multi-lingual scene text detection) 데이터셋에 학습시킨 파라미터를 기본으로 불러와서 초기 파라미터로 설정하도록 되어 있습니다. (https://github.com/faustomorales/keras-ocr/blob/master/keras_ocr/detection.py#L650 ) 따라서 MLT 데이터셋에 학습된 파라미터를 License Plate Module에 Fine-Tuning하는 형태라고 생각하시면 될 것 같습니다.

fine tuning을 진행할 때 기존의 데이터셋과 모델을 학습시키고 난 후에 커스텀 데이터에 맞게 돌려야 하나요? 아니면 모델을 가져와서 바로 커스텀 데이터에 맞게 돌려도 되나요? 수업에서 진행한 실습은 기존 모델의 사전 학습 없이 바로 커스텀 데이터에 맞게 돌린 것에 해당하나요?

 

-> fine-tuning을 진행할때는 기존의 데이터셋에 모델을 학습시키고 커스텀 데이터셋에 다시 학습시킬수도 있고, 바로 커스텀 데이터셋에 학습시킬 수도 있습니다. (즉, 두가지 방식 모두 다 가능합니다.) 어떤 방법이 더 좋느냐는 상황에 따라 다를 수 있지만 일반적으로 커스텀 데이터셋이 사전 학습 데이터셋과 비슷한 형상의 데이터셋이라면 사전 학습된 파라미터를 이용하는 것이 더 괜찮을 가능성이 있습니다. 수업에서 진행한 실습으 MLT 데이터셋에 학습된 파라미터를 License Plate Module에 Fine-Tuning하는 형태라고 생각하시면 될 것 같습니다.

 

좋은 하루되세요~.

 

감사합니다.

developer님의 프로필 이미지
developer

작성한 질문수

질문하기