cs
[GNN] Visual genome dataset
DL·ML

[GNN] Visual genome dataset

 

visual genome dataset은 문제가 많다. . API 지원도 2023년부로 중단되었다. 

 

relationship의 index가 밀리는 문제

이거 때문에 학습이 잘 안 됐었는데 뒤쪽으로 갈 수록 VG-SGG.h5에서 얻은 vg-sgg['img_to_first_rel'][img_idx]와 vg_sgg['img_to_last_rel'][img_idx]의 relation list와 img_idx가 안 맞기 시작해서 나중엔 4개까지 차이가 난다. 

 

이거 때문에 학습이 잘 안 되어서 고민이 많았는데, 이런 식이다. 

Figure 1: 잘못된 bounding box

하나의 relationship의 두 개의 bounding box를 그리라고 한 건데, 뭘 그린 box인지 알 수 없다. 각각 label은 813158 cup과 813164 plate로 출력된다. 위치 상 bounding box를 잘못 그린 것 같지는 않으므로 이게 맞는 이미지를 찾아보면 이 이미지의 index보다 4개 전에 있다. 

 

이 이미지는  

 

img idx : 77257 img data {'width': 500, 'url': 'https://cs.stanford.edu/people/rak248/VG_100K/2342046.jpg', 'height': 375, 'image_id': 2342046, 'coco_id': None, 'flickr_id': 8991582172}

Figure 2: 2342046.jpg

 

인데, 이 이미지의 4번째 전 이미지인 2342041 이미지를 확인해보면(2342043.jpg는 데이터셋에 없다)

Figure 3. 2342041.jpg

와 같이 위의 bounding box에 맞는 이미지이다.

 

그런데 이게 다 4칸씩 밀린 게 아니라 앞쪽은 괜찮다. 왜 그런가 봤더니,

 

corrupted image가 있다. 이 이미지들은 왜인지는 알 수 없으나 relation을 매길 때 빠져있다.

 

이걸 만드는 코드에서 빼놨는데, 다른 이미지들보다 크기가 작으나 왜 corrupted인지는 알 수 없다. corrupted image들은 다음과 같다 :

 

Figure 4. corrupted images : 좌측부터 1592.jpg, 1722.jpg, 4616.jpg, 4617.jpg

 

따라서 img_idx가 이 이미지들보다 뒤쪽이면 relation을 계산할 때 그만큼 빼 주어야 하는 과정이 좀 더 필요하다. 

 

for cor_idx in corrupted_ims :
if cor_idx <= img_idx :
img_idx+=1

위와 같이 해결할 수 있다. 

 

Figure 5: 올바르게 그려진 bounding box

잘 그려지는 것을 볼 수 있다. 

 

 


References

 

Footnotes

'DL·ML' 카테고리의 다른 글

[GNN] GNN Model  (0) 2023.11.07
[DL] RLHF (Reinforcement Learning from Human Feedback)  (0) 2023.11.02
[GNN] GCN을 이용한 Image Captioning 구현  (0) 2023.08.24
[DL] Vision Transformer (ViT)  (0) 2023.08.17
[GNN] GCN을 이용한 Image Captioning  (0) 2023.08.14