Caffe下Mobilenet SSD的一些奇葩冷門問題。
最近被Moilenet SSD虐的真的是不要不要的,花了兩週的時候才算是徹底跑通它的原始碼和訓練自己的資料集(雖然這摸摸那摸摸的時間佔了一大半),而且我以前基本是不用Caffe這個框架的,因為以前也是在編譯Caffe的時候被虐慘了,所以一直都是Tensorflow的忠實愛好者,但是上手之後(。。。真香)。廢話不多說,直接進入正題~~
博主在配置Mobilenet ssd的時候基本上是參考這兩位大神的步驟一步一步來的,但是裡面有幾點我碰到的奇葩問題:
.
奇葩問題一.針對make runtest 的問題。
在這裡面的第四步 make runtest不是必須的,但是我後面在mobilenet 跑訓練的時候碰到了如下的錯誤:
這個問題解決方法為:
輸入命令:sudo rm -rf ~/.nv/ 不行的話就用命令:sudo rm -rf .nv/ (此方法在caffe和tensorflow均能使用)
奇葩問題二:
這個問題針對於用window製作資料集,用ubuntu跑實驗的同學。
這個問題出現的原因是window的分行符和ubuntu的分行符不同,所以在Main資料夾下的txt文字會寫成一行,在執行create_lish.sh就會出現上面的問題,解決方法,在你自己的VOC資料集當前目錄執行如下程式碼:
import os
import random
trainval_percent = 0.7
train_percent = 0.8
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets/Main'
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
list = range(num)
tv = int(num*trainval_percent)
tr = int(tv*train_percent)
trainval = random.sample(list,tv)
train = random.sample(trainval,tr)
ftrainval = open(txtsavepath+'/trainval.txt', 'w',encoding="utf-8")
ftest = open(txtsavepath+'/test.txt', 'w',encoding="utf-8")
ftrain = open(txtsavepath+'/train.txt', 'w',encoding="utf-8")
fval = open(txtsavepath+'/val.txt', 'w',encoding="utf-8")
for i in list:
name = total_xml[i][:-4]+'\r\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest .close()
print('Well Done!!!')
執行後,就能生成正常的txt文字了。
再次說明此問題只會出現在用window 做資料集,ubuntu上做實驗的同學身上。
其他的問題基本上csdn的大神都可以解決了。