티스토리 뷰

제목에서 언급한 전처리 과정이란 학습과정에서 이미지를 배치데이터로 만들어주는, PyTorch 식 표현으로 collate 하는 과정을 의미한다.

 

학습 과정시에 transforms를 확인해보면, RandomResize Augmentation이 포함됨을 알 수 있다. 입력 이미지들을 하나의 배치 데이터로 만들어주기 위해서는 사이즈(c, h, w)가 같아야한다. 그런데 RandomResize가 들어가게되면 이 h, w 가 달라질 수 있다.

 

그래서, DETR에서는 배치 데이터로 만들어줄때, 하나의 배치내에서 가장 큰 h, w를 갖는 이미지를 찾고 그 이미지에 맞게 zero filled image 를 생성하고 거기에 이미지를 top-left 부터 복사한다. 그럼 max size보다 작은 이미지들은 right 과 bottom 부분이 padding된 이미지로 재생성되고 이 이미지가 모델로 들어간다.

 

여기서 생각해야할 부분이있다. DETR의 Bounding Box Regression Groudn Truth는 Normalized Bounding Box 이다. 이 Normalized Bounding Box는 padding되기전에 해상도를 기준으로 계산된다. 근데, padding되면 이미지의 해상도가 바뀌고 Normalized Bounding Box의 값도 재조정돼야 하는게 맞지 않나 싶었다. 근데 아무리 찾아봐도 padding 후에 Normalized Bounding Box를 후처리 해주는 부분이 없어보였다.

 

이슈를 찾아보니 나와 같은 생각을 한 사람들이 이미 있었다.

https://github.com/facebookresearch/detr/issues/286

 

BUG: when calculate box loss · Issue #286 · facebookresearch/detr

When form batch, all images will pad zeros to the maximal width and height among the batch. So, the relative value of target bounding box which vary from 0 to 1 should be corrected when calculate b...

github.com

https://github.com/facebookresearch/detr/issues/70

 

Strage behavior potententially bug. · Issue #70 · facebookresearch/detr

I am trying to adopt this repository to OCR task and facing same dilemma While training you have 3 different sizes of image encoded in dataset Actual tensor size filed 'size' - which means what? fi...

github.com

이슈에서 트랜스포머의 특성을 살려 masking된 부분(=padded area)을 연산에 포함시키지 않게 하여 패딩된 부분을 어차피 모델이 보지않아서 큰 문제될게 없다고 말하고 있다. 그치만 앞에 Convolutional Layer를 포함하는 ResNet을 백본으로 쓰는이상 padded area에 의한 영향이 있는게 아니냐고도 누군가 의견을 제시했다. 영향은 있는게 맞는 거 같다.

 

좀 만 더 봐보고 DETR의 후속 연구로 나온 모델들은 이러한 처리를 어떻게 해줬는지도 확인해봐야겠다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함