AlexeyAB / darknet

YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet )
http://pjreddie.com/darknet/
Other
21.65k stars 7.95k forks source link

Run reval_voc.py and occured KeyError:000001 #1487

Open FelixCaae opened 6 years ago

FelixCaae commented 6 years ago

I'm doing mAP test on jetson tx2. And I use pjreddies fork. These are what I run.And Im SURE I have difficult.txt 2007_.txt and 2012_*.txt

./darknet detector valid cfg/voc.data cfg/yolov2-voc.cfg yolov2-voc.weights
python reval_voc.py --voc_dir VOCdevkit --year 2007 --image_set test --classes data/voc.names results

This is how it went wrong.

nvidia@tegra-ubuntu:~/darknet$ python reval_voc.py --voc_dir VOCdevkit --year 2007 --image_set test --classes data/voc.names results
Evaluating detections
VOC07 metric? Yes
Traceback (most recent call last):
  File "reval_voc.py", line 101, in <module>
    do_python_eval(args.voc_dir, args.year, args.image_set, classes, output_dir)
  File "reval_voc.py", line 70, in do_python_eval
    use_07_metric=use_07_metric)
  File "/home/nvidia/darknet/voc_eval.py", line 126, in voc_eval
    R = [obj for obj in recs[imagename] if obj['name'] == classname]
KeyError: '000001'

My voc.data

classes= 20
train  = /home/nvidia/darknet/train.txt
valid  = /home/nvidia/darknet/2007_test.txt
difficult = /home/nvidia/darknet/difficult_2007_test.txt
names = data/voc.names
backup = backup

Part of my yolov2-voc.cfg

classes= 20
train  = /home/nvidia/darknet/train.txt
valid  = /home/nvidia/darknet/2007_test.txt
difficult = /home/nvidia/darknet/difficult_2007_test.txt
names = data/voc.names
backup = backup

Anyone can help? Thank you very much!

YinRui1991 commented 5 years ago

@FelixCaae Hi~, I meet the same error, do you solve this?

AlexeyAB commented 5 years ago

@FelixCaae @YinRui1991 If you use Python3 then try to run reval_voc_py3.py --year 2007 --classes data\voc.names --image_set test --voc_dir E:\VOC2007_2012\VOCtrainval_11-May-2012\VOCdevkit results

YinRui1991 commented 5 years ago

@AlexeyAB Thanks. I have found the reason. I generated annots.pkl with my dataset (Not PascalVOC) in annotations_cache long time ago. There is no error when I deleted annots.pkl of my dataset or replaced it with annots.pkl of PascalVOC.

FelixCaae commented 5 years ago

@AlexeyAB I have tried it, it doesn't work.Some statements are written in python2 style which are not supported by python3, but I have bypassed this method with directly using ./darknet map xxx.

jordanlai commented 4 years ago

I have the following questions: python3 reval_voc_py3.py --year 2007 --classes /home/autumn/darknet-master/build/darknet/x64/data/obj.names --image_set test --voc_dir /home/autumn/darknet-master/build/darknet/x64/data/VOCdevkit/ voc_out Evaluating detections VOC07 metric? Yes devkit_path= /home/autumn/darknet-master/build/darknet/x64/data/VOCdevkit/ , year = 2007 Traceback (most recent call last): File "reval_voc_py3.py", line 104, in do_python_eval(args.voc_dir, args.year, args.image_set, classes, output_dir) File "reval_voc_py3.py", line 73, in do_python_eval use_07_metric=use_07_metric) File "/home/autumn/darknet-master/scripts/voc_eval_py3.py", line 157, in voc_eval R = class_recs[image_ids[d]] KeyError: '001144'

My obj.data classes= 4 train = /home/autumn/darknet-master/build/darknet/x64/data/train.txt valid = /home/autumn/darknet-master/build/darknet/x64/data/test.txt

difficult = data/difficult_2007_test.txt

names = /home/autumn/darknet-master/build/darknet/x64/data/obj.names backup = backup/

How to solve, thank you!