1. 程式人生 > >Caffe下Mobilenet SSD的一些奇葩冷門問題。

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的大神都可以解決了。