NMS 구현 관련 질문있습니다.
234
작성한 질문수 2
안녕하세요. 강의 해주신 내용을 듣고 코드를 활용해서 Pascal voc 20class들을 학습했습니다.
그리고나서 model을 활용한 prediction을 해보려고하는데 코드에서 NMS를 사용하지 않더군요....
개인적으로 코드를 만들어서 적용을 해봤는데
test image

문제 1. 7*7*30 model ouput 값이 0 ~ 1 사이 값이 아닙니다.
center x, center y값부터 softmax metrics 값까지 0 ~ 1 사이 값이 아니며,
심지어 음수 형태가 다수 발견됩니다. 이 부분은 활용하는데 아무런 문제가 없는 것인가요??
문제 2. IOU 코드는 첨부해주신 코드를 그대로 사용해봤는데 아래와 같이 class별 98개의 confidence를 담고 있는 결과가 이상합니다. 즉, 내림차순 정렬 이후에 bbox max 와 bbox cur에 대한 IOU 결과값이 아래와 같이 나옵니다.
ex) class 0 : aeroplane
[1324.24121094 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. ]
class1 : bicycle
[1051.5657959 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. ]
아마 첨부해주신 코드의 문제라기 보다 제가 짠 코드에서 활용이 잘못된 것일 확률이 높으니
코드 링크를 첨부해 봅니다.
답변 1
0
안녕하세요~. 반갑습니다.
문제 1. 7*7*30 model ouput 값이 0 ~ 1 사이 값이 아닙니다.
center x, center y값부터 softmax metrics 값까지 0 ~ 1 사이 값이 아니며,
심지어 음수 형태가 다수 발견됩니다. 이 부분은 활용하는데 아무런 문제가 없는 것인가요??
->
해당 부분은 아마 모델이 적합한 파라미터에 수렴하지 않아서 발생한 현상으로 예상됩니다. 문제 자체는 없으나 pascal voc 20개 레이블에 대해서 직접 적합한 파라미터까지 수렴하도록 학습시키긴 쉽지 않으실겁니다.
따라서 pascal voc 20개 레이블에 대해 실험을 진행해보고 싶으시면 yolo 저자가 공개한 파라미터를 사용하는게 좋을 것 같습니다.
논문에서는 많은 시행착오와 대량의 data augmentation을 이용해서 pascal voc 20개 레이블에 수렴한 파라미터를 찾은 다음에 이를 오픈소스로 공개하였습니다. 다만 해당 공개한 weight가 자체 제작한 darknet 형태로 되어있어서
tensorflow로 해당 weight를 사용해보고 싶으시면 darnket weight를 tensorflow weight로 변경해주는 아래 오픈소스 프로젝트 등을 활용해보시는 것을 추천드립니다.
https://github.com/jinyu121/DW2TF
2. 문제 2. IOU 코드는 첨부해주신 코드를 그대로 사용해봤는데 아래와 같이 class별 98개의 confidence를 담고 있는 결과가 이상합니다. 즉, 내림차순 정렬 이후에 bbox max 와 bbox cur에 대한 IOU 결과값이 아래와 같이 나옵니다.
->
포지션 변환과정에서 뭔가 오류가 있으신게 아닐까 생각됩니다. 강의에서 제공드린 코드의 아래 2가지 부분을 다시 유심히 참조해서 디버깅해보시면 좋을 것 같습니다.
https://github.com/solaris33/YOLO-v1-tf2/blob/main/evaluate.py#L104
https://github.com/solaris33/YOLO-v1-tf2/blob/main/utils.py#L44
감사합니다~.
수업자료
0
20
2
paperswithcode 서비스 종료 관련 문의
0
190
2
22강 코드 call()메서드 is_training -> model(x,False)로 호출시 밸류에러 참고
0
47
1
강의자료 질문
0
39
1
강의자료는 어떻게 보나요
0
81
2
MNS 질문
0
320
1
model.py의 Activation Function
0
532
1
코랩에서 train.py 실행 시 오류
0
720
1
object_exists_cell_i 계산식
0
446
0
데이터셋 변경에 대한 질문
0
264
0
reshape 한 후 7*7*30
0
288
1
작성한 코드의 저작권과 깃헙 업로드 가능유무에 대한 질문
0
314
1
Train시 bounding box의 개수 설정 관련
0
417
1
backbone network에 대해서 질문 있습니다.
0
290
1
one_hot과 C값에 대해서 질문 드립니다.
0
311
1
class_loss에 대해서 질문 있습니다.
0
305
1
질문있어서 글 올립니다.
0
303
1
안녕하십니까 강의 잘 보고 있습니다
0
459
5
두 가지 질문 드립니다.
0
264
1
loss.py 의 loss에 사용된 tf.nn.l2_loss 에 대해서 질문 드립니다.
0
445
1
loss function 관련 질문입니다
0
239
1
loss function 관련
0
221
1
confidence가 가장 큰 값으로 IOU 비교 이후 과정에 대해
0
359
1
confidence <= 0.6 이하의 Bounding Box 제거에서 confidence는 class probability가 곱해진 값인지요?
0
330
3





