인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

Baek Kyun Shin님의 프로필 이미지
Baek Kyun Shin

작성한 질문수

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

OpenCV DNN으로 YOLO Inference 실습 - 02

YOLO v3-320, YOLO v3-416, YOLO v3-608 링크 관련

작성

·

779

0

안녕하세요. 매번 좋은 강의해주셔서 감사드립니다.

질문이 한 가지 있습니다.

다크넷 욜로 사이트에 , YOLO v3-320, YOLO v3-416, YOLO v3-608의 weight와 config 링크가 모두 같습니다.

세 모델의 차이는 입력 이미지 크기인데, 입력 이미지 크기를 서로 달리해서 사전 훈련을 했는데도 가중치와 config가 모두 똑같은 것인가요?

 

아울러, 모델에 입력 이미지를 전달할 때 다음과 같이 했습니다.

cv_net_yolo.setInput(cv2.dnn.blobFromImage(img, scalefactor=1/255.0, size=(416, 416), swapRB=True, crop=False))

이떄 size=(416, 416)으로 했는데요, YOLO v3-320, YOLO v3-416, YOLO v3-608의 weight와 config가 모두 같다면(그래서 결국 같은 모델을 불러오는 것이라면), setInput()을 호출할 때 size 파라미터에 (416, 416)을 전달하든 (320, 320) 혹은 (608, 608)을 전달하든 상관 없는 것인가요?

감사합니다 ^^

답변 1

0

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

안녕하십니까,

1. 다크넷 욜로 사이트에 , YOLO v3-320, YOLO v3-416, YOLO v3-608의 weight와 config 링크가 모두 같습니다.

세 모델의 차이는 입력 이미지 크기인데, 입력 이미지 크기를 서로 달리해서 사전 훈련을 했는데도 가중치와 config가 모두 똑같은 것인가요?

=> 이건 저도 몇달전에 발견한 사항인데, 말씀하신대로 이미지 크기가 다른데 가중치와 config가 동일합니다.  config에 width와 height가 있는데, 이미지 크기가 다르더라도 width와 height로 조절해서 resize후에 모델에 입력하는 것으로 보입니다. 따라서 YOLO v3-320을 적용하려면 width와 height를 320으로 설정하면 됩니다. 

그런데 pretrained 가중치도 동일합니다. 아마 CNN Filter 갯수와 kernel 사이즈는 이미지 사이즈와 상관없이 동일하게 적용하므로 YOLO v3-320, YOLO v3-416, YOLO v3-608 모두 동일하게 적용할 수 있을것으로 보입니다만, (테스트는 저도 해보진 않았습니다) 저도 헷갈리는 부분이 있습니다. 

2. cv_net_yolo.setInput(cv2.dnn.blobFromImage(img, scalefactor=1/255.0, size=(416, 416), swapRB=True, crop=False))

이떄 size=(416, 416)으로 했는데요, YOLO v3-320, YOLO v3-416, YOLO v3-608의 weight와 config가 모두 같다면(그래서 결국 같은 모델을 불러오는 것이라면), setInput()을 호출할 때 size 파라미터에 (416, 416)을 전달하든 (320, 320) 혹은 (608, 608)을 전달하든 상관 없는 것인가요?

=> Opencv DNN은 이미지 사이즈가 416, 416으로 들어오는 걸로 가정하고 Output layer에서 결과를 추출합니다. 그러니까 416이 아닌 이미지가 들어오면 Output layer의 feature map 크기가 달라져서 결과 추출시 오류가 발생합니다. 

Baek Kyun Shin님의 프로필 이미지
Baek Kyun Shin

작성한 질문수

질문하기