YOLOX 학습할 때, Coco형식에서 자꾸 에러가 발생해서 VOC 형식으로 dataset을 바꿔서 사용하고 있었다.

분명 iteration이 109여야 하는데 238이라는 알 수 없는 숫자가 뜸
# exps/example/yolox_voc/yolox_voc_s.py
def get_data_loader(self, batch_size, is_distributed, no_aug=False, cache_img=False):
from yolox.data import (
VOCDetection,
# ... 생략
)
# ... 생략
with wait_for_the_master(local_rank):
dataset = VOCDetection(
data_dir=os.path.join(get_yolox_datadir(), "VOCdevkit"),
image_sets=[('2007', 'train')],
# before: [('2007', 'trainval'), ('2012', 'trainval')]
img_size=self.input_size,
preproc=TrainTransform(
max_labels=50,
flip_prob=self.flip_prob,
hsv_prob=self.hsv_prob),
cache=cache_img,
)
image_sets 부분을 데이터셋 구조에 맞게 [('20xx', 'train')] 로 바꿔줘야 한다!
현재는 trainval이 들어가니, val 이미지까지 전부 학습시키고 있었다ㅠ
def get_eval_loader(self, batch_size, is_distributed, testdev=False, legacy=False):
from yolox.data import VOCDetection, ValTransform
valdataset = VOCDetection(
data_dir=os.path.join(get_yolox_datadir(), "VOCdevkit"),
image_sets=[('2007', 'val')], # before: [('2007', 'test')]
img_size=self.test_size,
preproc=ValTransform(legacy=legacy),
)
마찬가지로, eval loader 부분도 val 이미지만 가져올 수 있게 바꿔줘야 한다
testset으로 validation하고 있었음ㅎㅎㅜ