게시글
질문&답변
Train시에 GT데이터들의 Annotation이 어떻게 각 피처맵을 거친 값들에 적용되는지 궁금합니다!
자세한 설명 감사드립니다! 추가적으로 말씀해주신 layers.py에서 bbox_transform_inv() 부분이 잘 모르겠어서 설명 한 번 부탁드립니다! def bbox_transform_inv(boxes, deltas, scale_factors=None): cxa = (boxes[..., 0] + boxes[..., 2]) / 2 cya = (boxes[..., 1] + boxes[..., 3]) / 2 wa = boxes[..., 2] - boxes[..., 0] ha = boxes[..., 3] - boxes[..., 1] ty, tx, th, tw = deltas[..., 0], deltas[..., 1], deltas[..., 2], deltas[..., 3] if scale_factors: ty *= scale_factors[0] tx *= scale_factors[1] th *= scale_factors[2] tw *= scale_factors[3] w = tf.exp(tw) * wa h = tf.exp(th) * ha cy = ty * ha + cya cx = tx * wa + cxa ymin = cy - h / 2. xmin = cx - w / 2. ymax = cy + h / 2. xmax = cx + w / 2. return tf.stack([xmin, ymin, xmax, ymax], axis=-1) 이 부분이 제가 보기엔 수업 때 알려주신 BBox Regression과 유사해 보여서요. 각 head layer에서 feature map 별 grid 형태로 좌표를 정하는 것 같고, 이 말씀이 bbox좌표들을 개별 feature map 의 grid 형태에 따른 좌표로 변환해준다는 것으로 해석하면 될까요?? 마지막으로 하나만 더 질문드립니다 common.py에서 def preprocess_group_entry(self, image, annotations): 여기서 annotation을 scale 값으로 조정하는 것 외에 피처맵에 따른 annotation 조정은 찾기 어려운 것 같아서 혹시 어떤 함수들을 조합하는건지 알려주실 수 있으신가요? 제가 코드보는게 익숙치 않아서 ㅠㅠ 제 역량으로는 알기 힘들어서 이렇게 부탁드려요!
- 0
- 2
- 237
질문&답변
Neck에서 Head 부분을 연결할 때 어떤 연산을 거치는지 궁금합니다!
제가 질문을 잘 못 드린 것 같네요ㅠㅠ 제가 궁금했던 부분은 BI-FPN을 거치고 서로 다른 사이즈의 5가지 최종 피처값이 나오는데 이들이 Class Prediction과 Box Prediction으로 통과 될 때 어떤 식으로 합쳐지는지였습니다. 크기가 다른 5가지의 피처들이 업샘플링 혹은 다운샘플링으로 크기를 같게하고 합쳐지는 것인지.. https://github.com/xuannianz/EfficientDet/blob/030fb7e10ab69a297c7723120c2d1be856a852c0/model.py#L305 여기 174 line에서 return P3_out, P4_td, P5_td, P6_td, P7_out 라고 나오는데 그 다음 어떻게 되는지 찾기가 힘드네요ㅜㅜ 혹시 첨부해주신 깃헙 코드에서 (https://github.com/google/automl/blob/5b2b61005c54efe72f97cf7d0e924afed6a62a60/efficientdet/tf2/efficientdet_keras.py) 700 line에 FPNCells 가 관련된 내용인가 싶기도 합니다만... 답변 부탁드립니다ㅠㅠ 귀찮게 해드려서 죄송합니다..
- 0
- 2
- 127