1. 程式人生 > >Caffe學習筆記10:影象資料生成caffe需要的(laveldb和lmdb)資料檔案

Caffe學習筆記10:影象資料生成caffe需要的(laveldb和lmdb)資料檔案

        在深度學習的實際應用中,我們經常用到的原始資料是圖片檔案,如jpg,jpeg,png,tif等格式的,而且有可能圖片的大小還不一致。而在caffe中經常使用的資料型別是lmdb或leveldb,因此就產生了這樣的一個問題:如何從原始圖片檔案轉換成caffe中能夠執行的db(leveldb/lmdb)檔案?

        在caffe中,作者為我們提供了這樣一個檔案:convert_imageset.cpp,存放在根目錄下的tools資料夾下。編譯之後,生成對應的可執行檔案放在 Buile/x64/Release下面,這個檔案的作用就是用於將圖片檔案轉換成caffe框架中能直接使用的db檔案。

        小菜在這一步中吃了不少苦,主要是小菜不熟悉sh的指令碼檔案的編寫和linux的指令。使得小菜在生成db檔案後的是錯誤的,自己還不知道,直接就利用生成的db檔案去生成均值檔案,結果老是出錯不能生成均值檔案,一開始還以為是生成均值檔案這一步哪裡出錯了,找了半天也沒找出來,最後在大牛的幫助下,才知道是我生成的db檔案錯了,生成的db檔案大小很小。

小菜將介紹db檔案的生成的步驟:

        Ø  首先準本影象資料集(train和test)

        Ø  然後需要生成影象對應的列表清單,儲存為txt檔案(train.txt和test.txt),這裡小菜編寫了一個sh指令碼檔案直接生成,指令碼檔案的程式碼如下圖所示。


        要想在cygwin中執行sh指令碼檔案,還需要將指令碼檔案的格式換成Unix格式也就是LF格式,小菜當時在這上面吃了苦,後來是我的實習老師張xx跟我說的。生成txt中對應的ID號一定要是從0開始,依次遞增。

在cygwin中直接執行這個sh指令碼檔案,會在你指定的路徑生成兩個文字檔案,分別是train.txt和test.txt。一般生成的效果如下:

                                              

       好了,到這裡影象列表生成完了。接下來就是生成db檔案了,小菜是生成了lmdb資料檔案,小菜把生成的程式碼寫到一個指令碼檔案中,程式碼如下:

                                 

         小菜當時在紅色標記的地方廢了很大勁,要改為自己的資料路徑,一開始程式碼是從網上下載的,後來在牛人的指導下進行了修改。這裡將修改完的程式碼直接放出來,是希望你不要走小菜走的彎路,希望對你有幫助。在cygwin中執行此指令碼檔案,最後在你指定的檔案路徑下生成兩個你命名的lmdb檔案,小菜這裡提醒一下,生成了lmdb後一定要看看檔案的大小,一般生成的lmdb檔案會比原始的影象集的大小要大。