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

조범래님의 프로필 이미지
조범래

작성한 질문수

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

custom data training 시 성능 이슈 문의

작성

·

404

0

안녕하세요 세세한 설명에 감사 드립니다.

학습 과정 중에 질문 사항이 발생되어 문의 드립니다.

아직 스터디 기간이 짧아서 질문의 깊이가 낮은 점 양해 말씀 드립니다.

custom data training 관련 해서 질문 드립니다.

custom data triaing  = pre-train model + custom label 된 모델  (전이 학습 형태로 이해)

위의 형태로 진행 시  pre-trained model내 Car 라는 class가 있는 상황에서 custom label로 동일한 Car class(사례 : 아반떼)를

추가 했을 경우  pre-trained model 보다 성능이 저하되는 현상이 발생 되었습니다.

방안으로는 pre-train model 의 class 와 중복 되는 car는 그대로 두고, 신규 차량(아반떼) class를 추가해서 train을 해야 하는지 

or custom data set(100 여장)이 부족해서 발생된 문제인지

or 학습 방법(keras-yolov3 pretrained model + google image net 내 car class 적용)에 문제가 있는 사항인지

문의 드립니다.

결국 목적은 pre-train model 내 car라는 class에 추가적인 차종을 넣어서 car라는 class 하나로 진행을 해보는데 있습니다.

두서 없이 질문 드린 점 다시금 양해 말씀 드립니다.

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

의미 있는 테스트를 하고 계시는 군요. 

pretrained 모델(예를 들어 imagenet 데이터 세트로 학습된)을 이용하여 새로운 데이터 세트를 사용한 Transfer learning을 할 때 약간 주의해야 할 사항이 있습니다.

먼저 pretrained 모델을 이용하여 새로운 데이터 세트를 학습할 경우 pretrained된 weight 값으로 딥러닝 모델의 초기값을 설정하므로 랜덤하게 설정하는 것 보다 전반적으로 약간 향상된 성능을 기대할 수는 있습니다. 즉 출발점을 어느정도 우월하게 가져갈 수 있습니다.

일반적으로 많은 데이터 기반으로 학습하면 딥러닝 모델 성능이 좋아 질수 있습니다. 그리고 새로운 데이터 세트가 많고 적음은 pretrained 모델 기반의 transfer learning에서도 똑같이 적용됩니다. 그냥 새로운 데이터로 처음부터 학습하는 것 보다는 pretrained 모델로 weight값을 설정한 후에 학습하면 약간 성능이 향상될 수 있습니다.하지만 새로운 데이터가 적다면 성능 향상이 크게 되지 않을 수도 있습니다.

새로운 데이터 세트의 아반테 100장을 자동차 카데고리에 추가해서 학습을 하셨을 때 성능이 떨어지셨다고 했는데, 아반테를 자동차로 예측하는 성능이 떨어진건지, 아님 기존 자동차를 자동차로 예측하는 성능이 떨어졌는지는 모르겠지만, 아마도 아반테 데이터가 많지 않기 때문에 당연히 아반테를 자동차로 예측하는 성능은 기존 자동차를 자동차로 예측하는 성능보다는 떨어졌을 거라고 생각됩니다. 

딥러닝 예측 모델의 예측 대상을 명확히 해야 합니다. 100장의 아반테를 데이터 세트로 해서 기존의 자동차로 pretrained된 모델 기반에서 학습을 했을 때 아반테를 자동차로 인식하는 예측 성능은 pretrained 모델을 사용하지 않고 학습을 했을 때 보다는 예측 성능이 좋아 질것입니다.  하지만 10000장의 아반테를 데이터 세트로 학습한 경우보다는 좋지 않을 것입니다.

100장의 아반테를 기존 pretrained 모델 기반에 학습해서 기존 자동차(아반테 포함)의 예측 확률을 높아질것 같지는 않습니다. 

일반적으로 pretrained 모델 기반에서 transfer learning을 할때는 새로운 데이터 세트의 데이터도 역시 많이 가져갈 수록 좋습니다.  그리고 새로운 데이터 세트의 데이터가 100장 정도로 적다면 CNN Feature Extractor Layer(예를 들어 VGG, Resnet) 부분을 Freeze를 시킨 다음에(즉 Feature Exatractor layer의 weight는 기존 pretrained 모델을 그대로 적용합니다.) Classification layer만 학습 하여 모델을 만들기도 합니다.

신규 데이터 세트 크기에 따라서 어떠한 transfer learning을 적용하는 지를 인터넷 검색등으로 찾아보시면 도움이 더 될 듯 합니다.

감사합니다.

조범래님의 프로필 이미지
조범래

작성한 질문수

질문하기