Open Sai-Manikantha opened 8 years ago
You probably need to write some line of codes to ignore any objects with classes except the classes you are looking for when you are loading the annotation _load_pascal_annotation. Something like cls_objs = [ obj for obj, clas in objs, self._classes if obj.find('name').text== clas]
@Sai-Manikantha Did you solve your error? Hi, I'm also trying to train only 5 classes in PASCAL VOC 2007 dataset. Exactly same error occured here. Can anybody please give me a advice? I modified /lib/datasets/pascal_voc.py and proper prototext files. Both faster_rcnn_alt_opt and faster_rcnn_end2end produce same error.
Modifications I made is below: /lib/datasets/pascal_voc.py , line 31) self._classes = ('background', # always index 0 bicycle', 'cat', 'dog', 'person')
(in case of using faster_rcnn_end2end and ZF network) /models/pascal_voc/ZF/faster_rcnn_end2end/train.prototxt num_classes in "input-data" : 21 to 5 num_output in "cls_score" : 21 to 5 num_output in "bbox_pred" : 84 to 20 (same modification applied to test.prototxt)
Command I used : "./experiments/scripts/faster_rcnn_end2end.sh 0 ZF pascal_voc" Log is below:
voc_2007_trainval
for training
Set proposal method: gt
Appending horizontally-flipped training examples...
Traceback (most recent call last):
File "./tools/train_net.py", line 104, in Stuck this error more than a week.. Any kind of help would be appreciated. Thanks!
@karaspd I'm sorry for the late reply. Thank you so much for your help. I added some code as you suggested. Now I am able to train PASCAL VOC dataset on 4 classes.
@jhsonn Hi !! You can follow the steps suggested by @karaspd. Please feel free to post if it doesn't work for you.
cls_objs = [obj for obj, clas in objs, self._classes if obj.find('name').text== clas]
objs = cls_objs
@Sai-Manikantha Hi, I modified pascal_voc.py as you posted but it still doesn't work..
File "./tools/train_net.py", line 104, in
Above is my error message. Can you tell me more detail about modification you made? (like which line of code you modified and how) I'm not sure where to put "cls_objs=[obj for....]" and what to delete. Thanks in advance! I really hope someday I can train this model without any error..
Hi @jhsonn, when you are loading the annotation in _load_pascal_annotation method, look for something like
objs = diff_objs (or non_diff_objs)
After that line insert something similar to below code
cls_objs = [obj for obj in objs if obj.find('name').text in self._classes]
objs = cls_objs
Hope this helps.
@Sai-Manikantha Thank you so much for your help! I've done training without any error. Thanks again.
@jhsonn
I think your first problem is that you forgot to delete the plk file in /data/cache folder. The program reads the already generated data table from cache to increase speed. That is the only reason I can think of why you get a class that is not in self._classes.
@karaspd
cls_objs = [obj for obj in objs if obj.find('name').text in self._classes] objs = cls_objs
Only returns cls_objs in self._classes. What causes ojbs get classes not defined in self._classes ?
Thanks
@jhsonn Hi friend, can you tell me how do you debug your error? thanks so much
Hi
guys
I have the same problem but for test data set. Can anybody help me how to solve it?
VOC07 metric? Yes Traceback (most recent call last): File "./tools/test_net.py", line 120, in <module> test_net(sess, net, imdb, filename, max_per_image=args.max_per_image) File "/home/zhila/Seal_detection/tf-faster-rcnn/tools/../lib/model/test.py", line 192, in test_net imdb.evaluate_detections(all_boxes, output_dir) File "/home/zhila/Seal_detection/tf-faster-rcnn/tools/../lib/datasets/pascal_voc.py", line 279, in evaluate_detections self._do_python_eval(output_dir) File "/home/zhila/Seal_detection/tf-faster-rcnn/tools/../lib/datasets/pascal_voc.py", line 242, in _do_python_eval use_07_metric=use_07_metric, use_diff=self.config['use_diff']) File "/home/zhila/Seal_detection/tf-faster-rcnn/tools/../lib/datasets/voc_eval.py", line 137, in voc_eval R = [obj for obj in recs[imagename] if obj['name'] == classname] KeyError: '0802_100_Seal__PB_003' Command exited with non-zero status 1 48.71user 10.26system 1:15.89elapsed 77%CPU (0avgtext+0avgdata 3046436maxresident)k 99264inputs+3376outputs (0major+715410minor)pagefaults 0swaps
@zhilaAI Hi, I have encountered the same error as yours. Have you solved this problem? could you tell me how to ?
Hi all, I am trying to train py-faster-rcnn network on PASCAL VOC 2007 dataset on 4 classes. I have changed the classes variable in pascal_voc.py and I have also made proper changes in train and test prototxt files. But I am getting the following error while training. Did anyone encounter a similar problem? Any help would be appreciated.
Log is as below:
Number of classes : 4 Loaded dataset
imdb, roidb = combined_roidb(args.imdb_name)
File "./tools/train_net.py", line 69, in combined_roidb
roidbs = [get_roidb(s) for s in imdb_names.split('+')]
File "./tools/train_net.py", line 66, in get_roidb
roidb = get_training_roidb(imdb)
File "/home/sai/py-faster-rcnn/tools/../lib/fast_rcnn/train.py", line 118, in get_training_roidb
imdb.append_flipped_images()
File "/home/sai/py-faster-rcnn/tools/../lib/datasets/imdb.py", line 106, in append_flipped_images
boxes = self.roidb[i]['boxes'].copy()
File "/home/sai/py-faster-rcnn/tools/../lib/datasets/imdb.py", line 67, in roidb
self._roidb = self.roidb_handler()
File "/home/sai/py-faster-rcnn/tools/../lib/datasets/pascal_voc.py", line 111, in gt_roidb
for index in self.image_index]
File "/home/sai/py-faster-rcnn/tools/../lib/datasets/pascal_voc.py", line 217, in _load_pascal_annotation
cls = self._class_to_ind[obj.find('name').text.lower().strip()]
KeyError: 'chair'
voc_2007_trainval
for training Set proposal method: gt Appending horizontally-flipped training examples... objs : [<Element 'object' at 0x7fe2660a85d0>, <Element 'object' at 0x7fe2660a8850>, <Element 'object' at 0x7fe2660a8d50>] Traceback (most recent call last): File "./tools/train_net.py", line 104, in