**
**
事情是这样,听说谷歌GPU免费,想着自己电脑整夜跑模型太心疼了,所以就去试了试,
我是faster-rcnn-dbeker版
运行的时候一直报错
AssertionError: Path does not exist: /content/drive/My Drive/data/VOCdevkit2007/VOC2007/ImageSets/Main/trainval.txt
很纳闷,为什么路径不存在,开始以为是相对路径问题,尝试过直接在命令行输出
print(os.path.exists('/content/drive/My Drive/data/VOCDevkit2007/VOC2007/ImageSets/Main/trainval.txt'))
print(open("/content/drive/My Drive/data/VOCDevkit2007/VOC2007/ImageSets/Main/trainval.txt").readline())
结果还真出错了,不过最后查出来应该是路径太长,导致搜索堆栈溢出,这个应该不影响。
最后我去代码里面找出错的那段,发现是image_set_file的路径不对
触发了报错,如下
assert os.path.exists(image_set_file), \
'Path does not exist: {}'.format(image_set_file)
可是我对应输出了image_set_file的值,返回的为
image_set_file为: <class 'str'> /content/drive/My Drive/data/VOCdevkit2007/VOC2007/ImageSets/Main/trainval.txt
我瞅着也没啥啊,类型也为str,没毛病,应该不存在编码问题(为此还特意去查了下py3的字符串编码)
然后,百思不得其解,我为了防止编码的问题,我又定义了一个ii等于trainval.txt的路径
ii = '/content/drive/My Drive/data/VOCDevkit2007/VOC2007'+'/ImageSets/'+'Main/trainval.txt'
可以看到这个路径我是拼起来的,是因为开始不是拼起来的,我看image_set_file是拼起来的,本着严谨的科学精神,用了控制变量法做个测试,代码如下
输出如下
这他娘的。。。我眼瞎了吗,ii和image_set_file一模一样为什么会出现两个字符串不相等。
经过一大天的挣扎,最终在群里截图一问,同学让我写个diff判断两个字符串有什么不一样,我本来已经放弃了,最后还是写了一个。。。
如下(太激动了当时把第一个print里面的==写成了!=)
if len(ii) != len(image_set_file):
print(len(ii),len(image_set_file))
for _ in range(len(ii)):
print("第{}位对比结果{}".format(_,ii[_] != image_set_file[_]))
if(ii[_] != image_set_file[_]):
print("{}位对比失败{} {}".format(_,ii[_],image_set_file[_]))
然后,前方高能,,(因为==写成了!=,所以True和False反的)
我。。。真的醉了
结果是
Colab自动把大写的D变成了小写的d,什么情况???
至此结束