第1个报错:
读取文件时出现UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position xx: 解决方案
解决方案:
with open(config_output_filename, 'r') as f_in:
C = pickle.load(f_in)
改为
with open(config_output_filename, '**rb**') as f_in:
C = pickle.load(f_in)
第2个报错:
AttributeError: 'dict' object has no attribute 'iteritems'
解决方案:
将出错地方的iteritems变为items
第3个报错:
数据集出错
解决方案:
我没有按照如下的步骤
measure_map.py的使用与test.py相似,但是因为VOC2012的测试集没有标注数据,只有图片数据。为了计算mAP,可以将measure_map.py中test_imgs = [s for s in all_imgs if s[‘imageset’] == ‘test’]改成验证集中的数据test_imgs = [s for s in all_imgs if s[‘imageset’] == ‘val’],这个也需要在pascal_voc_parser.py简单修改代码,将imgsets_path_test = os.path.join(data_path, ‘ImageSets’,‘Main’,‘test.txt’)改为imgsets_path_test = os.path.join(data_path, ‘ImageSets’,‘Main’,‘val.txt’),还有一部分简要修改即可。然后再按照运行test.py的方法运行measure_map.py。
个人觉得,measure_map适用的必须是官方VOC测试集格式,所以我将test下面的又换成自己的测试集。
结果如下: