작성
·
1.2K
0
선생님 안녕하세요.
수업을 듣다가 궁금한게 생겨서 여기 강의에서 질문하는게 맞지 않을까 해서 여기에 질문합니다.
1. backbone, neck, head? 이렇게 구조가 있다는데 현재 수업에서 나오는 VGG16, ResNet50, Xception 등은 backbone에 해당하는 모델을 말하는 것일까요?
2. yolo, SSD, RetinaNet을 일컷는 모델이라는 말은 backbone, neck, head를 다 합쳐놓은 모델이라고 부르는 것이겠쬬??
3. 그렇다면 yolo나 RetinaNet의 backbone을 저희가 임의로 바꿔 사용해도 가능한 것일까요? (원래 기존 것을 사용하면 더 좋겠지만)
4. 이렇게 backbone 모델 등을 바꾸는 것을 Fine tuning이라고 하나용?
아아.. 마지막으로 VGG16의 하이퍼파라미터? learning rate나 가중치 초기화 등 이러한 부분들은 수업에서 처럼 Function으로 사용하면 튜닝이 불가능한 것일까요?
아직 체계가 잘 안 잡혀있따보니..ㅎㅎ 헷갈리는 부분들을 많이 질문하는 것 같습니다. .
그래도 이렇게 질문할 수 있는 곳이 있어 너무 좋습니다!!
답변 1
1
안녕하십니까,
1. backbone, neck, head? 이렇게 구조가 있다는데 현재 수업에서 나오는 VGG16, ResNet50, Xception 등은 backbone에 해당하는 모델을 말하는 것일까요?
=> 네, 맞습니다.
2. yolo, SSD, RetinaNet을 일컷는 모델이라는 말은 backbone, neck, head를 다 합쳐놓은 모델이라고 부르는 것이겠쬬??
=> 좀 더 부연 설명을 드리자면, Object Detection 모델을 backbone, neck, head로 나누는건 약간 언어 유희(?) 적인 게 있다고 생각합니다.
누가 backbone이라는 말을 만들었는지 잘 모르지만 image classification 같은 경우에는 feature extraction + classification layer로 이해하는 게 명백합니다. 그리고 feature extraction를 backbone으로 classification layer를 head로 개념화 하면 여러 backbone(vgg, resnet, xception)등만 교체하고 classification을 그대로 가져가서 유연한 모델이 됩니다.
이런 형태로 확장을 해서 Object Detection Model을 head로 보기에는 너무 layer가 많은 부분이 있는데, 특히 FPN이 나오면서 backbone과 head를 연결하는 또 다른 layer에 대한 개념 정립이 필요해서 backbone, neck, head로 모델을 개념화 한것 뿐입니다. 어떤 분들은 Object Detection model에서도 backbone과 head(neck + head) 만 개념화 하는게 더 편하다고 생각하시는 분도 있습니다.
3. 그렇다면 yolo나 RetinaNet의 backbone을 저희가 임의로 바꿔 사용해도 가능한 것일까요? (원래 기존 것을 사용하면 더 좋겠지만)
=> 물론입니다. Inference 수행 시간을 위해서는 Mobilenet 또는 요즘은 성능을 위해서 EfficientNet도 backbone으로 많이 테스트 합니다. 높은 성능을 가지는 EfficientDet의 경우에는 EfficientNet를 backbone으로 합니다.
4. 이렇게 backbone 모델 등을 바꾸는 것을 Fine tuning이라고 하나용?
=> 아닙니다. fine tuning을 pretrained 모델을 이용할 때 backbone에 해당하는 feature extractor layer들을 일차로 학습하지 않고 classification layer만 일차로 학습 한뒤에 다시 전체 layer들 학습하는 방식입니다. classification layer들 부터 weight 학습을 진행하면서 급격하게 전체 layer들을 학습하지 않는 방식입니다.
아아.. 마지막으로 VGG16의 하이퍼파라미터? learning rate나 가중치 초기화 등 이러한 부분들은 수업에서 처럼 Function으로 사용하면 튜닝이 불가능한 것일까요?
=> 음.. 해당 질문은 제가 잘 이해를 못했습니다. 좀 더 자세한 설명 부탁드립니다(특히 function으로 사용한다는 것이 어떤 것인지요?)