🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

yolo 학습시 기존 가중치

20.11.22 18:48 작성 조회수 616

0

안녕하세요 강사님

강의 잘 듣고 있습니다.

KerasYolo_OpenImage_학습및_Detection 강의를 듣고

응용해보고 있는데요.

별도로 제가 수집하고 labeling 한 이미지로 학습하고 , xxx.h5 학습 결과를 생성하였습니다.

생성된 가중치로 detection을 해봤는데, 제가 수집 labeling한 이미지는 detection이 되는데

기존 학습된 이미지 즉 강사님이 교육 중 사용하신 beatles01.jpg는 detection이 하나도 안됩니다. 

즉 질문의 요지는 기존 학습된 가중치에 새로운 학습을 하면 기존 학습된 가중치가 삭제되고 새로 학습 되나요?

그래서 기존 detection되면 이미지는 detection 못하는 건가요?

혹시 기족 학습된 가중치에 새로운 이미지의 가중치를 추가해서 기존 학습 이미지와 새로운 학습 이미지를 모두 detection 할수 있는

방법이 있는지요?

답변 1

답변을 작성해보세요.

0

안녕하십니까,

CNN 계열의 모델은 대부분 Feature Extractor 부분과 이미지를 최종 예측하는 Fully Connected Layer로 되어 있습니다(CNN뿐만 아니라 대부분의 딥러닝 Classification 모델이 이렇게 되어 있습니다)

Image Classification/Object Detetection에서는 바로 이 Fully Connected Layer에서 Softmax 등으로 검출하려는 오브젝트가 어떤 Class인지 결정하게 됩니다.

만약에 labeling을 10개 하게 되면 10개의 neuron에만 기반한 FC(Fully connected) layer가 만들어지게 됩니다. 1개 하게되면 1개 neuron에 기반한 FC가 만들어 지게 됩니다(Coco로 학습된 모델은 80개 neuron에 기반한 FC layer)

beatles 이미지가 Detect 되지 않았다는 것은 (예를 들어 Yolo 모델이라고 한다면) 해당 Yolo 모델은 다시 새로운 이미지 데이터로 학습하였기 때문에 기존 가중치가 새롭게 update되었을 뿐만 아니라, 사람, 자동차등으로 label된 학습 데이터를 사용하지 않았기 때문에 classifier 에서도 검출을 할 수가 없습니다.

기존에 사람, 자동차로 학습된 모델에 대해서는 이미지/label이 전혀 없고 오직 pretrained된 모델과 weight값만 있고, 호랑이, 사자와 같은 새로운 이미지에 대해서만 학습 데이터가 있을 때 사람, 자동차, 호랑이, 사자를 다 Detection할 수 있는 방법은 현재 여의치 않습니다(이 분야에 대해서는 꾸준히 연구가 되고 있으며, 모델을 결합하는 여러가지 방법을 적용하면 가능할 수도 있지만 복잡도가 높아 권해드리고 싶지는 않습니다)

일반적으로 전이학습(Transfer learning)은 이미 학습된 모델의 가중치를 이용하여 적은 데이터 세트로도 더 뛰어난 예측 성능을 나타내는데 사용됩니다. 즉 이미 개, 고양이 등의 동물로 학습되어 최적의 가중치를 가진 모델을 이용하면 호랑이, 사자, 늑대등의 신규 이미지를 더 정교하게 학습하고, 예측할 수 있는데 활용됩니다. 하지만 1000개의 class로 이미 학습된 pretrained 모델을 이용하여 2개 class의 이미지 밖에 없는 데이터 셋을 활용해서 1002개의 class를 예측할 수 있는 모델을 만들수는 없습니다.

감사합니다.

채널톡 아이콘