해결됨
[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
안녕하십니까 Retinanet에 대한 전반적인 이해를 질문하고자 합니다.
안녕하십니까, 현재 RetinaNet을 구현해보고자 Retitanet paper를 읽고
케라스 공식홈페이지의 Retinanet 예시 코드(https://keras.io/examples/vision/retinanet/#implementing-smooth-l1-loss-and-focal-loss-as-keras-custom-losses) 를 이해하고자 하는데
제가 전반적인 흐름을 이해하질 못하고 있습니다.
본 강의에 있는 Fast RCNN 파트에서, 예측 박스가 Ground Truth 좌표값을 따라가는 것이 아닌 Anchor Box 중에서 Ground Truth와 IOU 높은 Positive Anchor Box를 따라간다고 하였습니다.
그렇다면
1. RetinaNet이 작동하기 전 과정이,
우서적으로 Anchor box들 생성하고 그 중에서 Ground Truth와의 IoU>= 0.5인 Positive Anchor Box 찾기
가 맞는지요.
2. 그리고 RetinaNet 구조를 보면 FPN 에서 나온 P3 ~ P7(Retinanet paper 기준) feature map을 class subnet과 box subnet으로 각각 들어가게 되고, 위 케라스 공식 홈페이지 예제 코드
이때, box subnet의 결과값이 W x H x (4 x 9) 꼴인데, Positive Anchor Box의 좌표는 (x, y, w, h)로 4개인데 어떻게 regression 계산이 되는지 궁금합니다.
class subnet에 들어가게 되면 W x H x (num_classes x 9) 꼴의 결과값이 나오는데, 이는 2번질문과 마찬가지로 class labeling은 0,1,2,...과같은 정수형이거나 벡터형으로 나타날텐데 어떻게 regression 계산이 되는지 궁금합니다.
3. 또한, Positive Anchor Box를 제외한 나머지 Anchor Box들은 결국에는 직접적인 학습에 사용되지 않는 것인지요?
만약 사용된다면 Negative Anchor Box(IoU < 0.4)와 Ignorance Anchor Box(0.4 <= IoU < 0.5)가 어떤식으로 사용되는 지에 대해 설명 부탁드립니다.
4. 또한, 한 이미지에 서로 다른 객체가 2개 이상일 때, feature map이 class subnet에 들어가서 도출된 결과값( (num_classes) X 9)이 어떤 방식으로 해당 객체의 레이블과 대응하여 학습되는지 궁금합니다.
예를 들어, 사과(0), 고양이(1), 강아지(3) 클래스가 3개인 데이터셋에서, 사과(0)와 고양이(1)가 존재하는 특정 이미지를 RetinaNet에 training시키게 되면,
P3 ~ P7의 feature map이 class subnet으로 들어가서 W x H x (3 x 9)꼴의 결괏값이 나올텐데, 이때 해당 결괏값이 사과(0)인지, 고양이(1)인지 어떤 값이 대응하여 학습해야할 지에 대해서 알 수가 없어 이렇게 질문드립니다.
대략적인 이론을 알고 있다고 생각하여 직접 코딩을 하려했지만, 막막하여 keras 예제를 통해 역으로 이론을 이해하려 시도했습니다. 하지만 코드 자체가 이해가 되질 않고, 어떤 식으로 데이터가 흘러가지는에 대해서도 파악할 수가 없었습니다..
혼자서 해결해보려 했으나 며칠동안 해결되지 않고 오히려 이해가 되지 않는 부분이 많아져서 이렇게나마 질문을 드립니다...