simple-faster-rcnn-pytorch icon indicating copy to clipboard operation
simple-faster-rcnn-pytorch copied to clipboard

input image with no bounding box

Open hank08tw opened this issue 5 years ago • 2 comments
trafficstars

How to change the code to enable input image without bounding box in annotation? I face the following error:

Traceback (most recent call last): File "train.py", line 133, in fire.Fire() File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/fire/core.py", line 138, in Fire component_trace = _Fire(component, args, parsed_flag_args, context, name) File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/fire/core.py", line 468, in Fire target=component.name) File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/fire/core.py", line 672, in CallAndUpdateTrace component = fn(*varargs, **kwargs) File "train.py", line 76, in train for ii, (img, bbox, label, scale) in tqdm(enumerate(dataloader)): File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/tqdm/std.py", line 1133, in iter for obj in iterable: File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 363, in next data = self._next_data() File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 971, in _next_data return self._process_data(data) File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1014, in _process_data data.reraise() File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/torch/_utils.py", line 395, in reraise raise self.exc_type(msg) ValueError: Caught ValueError in DataLoader worker process 2. Original Traceback (most recent call last): File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/torch/utils/data/_utils/worker.py", line 185, in _worker_loop data = fetcher.fetch(index) File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in data = [self.dataset[idx] for idx in possibly_batched_index] File "/home/zhanshihan/simple-faster-rcnn-pytorch/data/dataset.py", line 107, in getitem ori_img, bbox, label, difficult = self.db.get_example(idx) File "/home/zhanshihan/simple-faster-rcnn-pytorch/data/voc_dataset.py", line 126, in get_example bbox = np.stack(bbox).astype(np.float32) File "<array_function internals>", line 6, in stack File "/home/zhanshihan/miniconda3/envs/simplefasterrcnn/lib/python3.7/site-packages/numpy/core/shape_base.py", line 423, in stack raise ValueError('need at least one array to stack') ValueError: need at least one array to stack

hank08tw avatar Sep 20 '20 09:09 hank08tw

I added following codes in voc_dataset.py, line 76, if there is no object in xml file, it won't be read: id_list_file = os.path.join( data_dir, 'ImageSets/Main/{0}.txt'.format(split)) id_list_read = [id_.strip() for id_ in open(id_list_file)] id_list = list() for i in id_list_read: obj = ET.parse(os.path.join(data_dir, 'Annotations', i + '.xml')) if obj.findall('object'): id_list.append(i) self.ids = id_list

BreezeHavana avatar Sep 27 '20 11:09 BreezeHavana

Thanks for your help! But this piece of code ignores all images with no bbox on them. Is it possible to train on some images with no bbox as ground truth for fasterrcnn?

hank08tw avatar Sep 27 '20 13:09 hank08tw