生成caffe所用的lmdb資料

2021-09-29 04:30:19 字數 2431 閱讀 6425

本文只介紹在caffe框架下生成lmdb格式的資料,因為在caffe框架下訓練和測試都只能用lmdb格式的資料:

準備:1、ubuntu 18.04

2、新建data資料夾,內含train和test兩個資料夾

3、train資料夾和test資料夾裡面分別含img和xml兩個資料夾,裡面分別是原影象(.jpg格式)和標籤(.xml格式,用labelimage標註工具生成)

4、在train資料夾裡,通過命令列敲入:ls img/* > img.txt 生成乙個包含影象路徑的txt文字檔案,再次通過命令列敲入:ls xml/* > xml.txt;test資料夾同樣如此。

5、編寫指令碼檔案(根據4中生成的兩個txt文字檔案),這裡用的是python指令碼(也可以編寫shell指令碼)生成乙個train.txt文字檔案,裡面一行對應一張的路徑和對應一張的標註,指令碼如下:

text1=open("/data_1/chepai_detection_ssd/train/img.txt","r")

text2=open("/data_1/chepai_detection_ssd/train/xml.txt","r")

new_text=open("/data_1/chepai_detection_ssd/train/train.txt","w")

text1_context=text1.readlines()

text2_context=text2.readlines()

for each_line1 in text1_context:

each_line1=each_line1.strip()

common_part=each_line1.split('/')[3].split('.')[0]

for each_line2 in text2_context:

each_line2 = each_line2.strip()

common_part2=each_line2.split('/')[3].split('.')[0]

if common_part2==common_part:

new_text.write(each_line1+' '+each_line2+'\n')

new_text.close()

text1.close()

text2.close()

6、根據5中生成好的train.txt文字檔案,編寫指令碼(這裡用的是shell指令碼)呼叫caffe中自帶的create_annoset.py指令碼檔案生成lmdb格式的資料。

#!/bin/bash

caffe_dir="/home/sjw/ssd/caffe" #修改到自己的caffe目錄

export pythonpath=$pathonpath:/home/sjw/ssd/caffe/python    

#create_list.sh

dataset_name="lmdb_data" #生成的lmdb名稱

data_root_dir="/data_1/chepai_detection_ssd/data"  #資料主目錄,其中包含train和test兩個資料夾

data_list_dir="/data_1/chepai_detection_ssd/ssd/" #儲存生成的檔案列表txt的地方

mapfile="$labelmap_voc.prototxt"#標籤分為幾類的配置檔案

redo=1

anno_type="detection"

db="lmdb"

min_dim=0

max_dim=0

width=0

height=0

extra_cmd="--encode-type=png --encoded"

echo "********** beging create data... **********"

if [ $redo ]

then

extra_cmd="$extra_cmd --redo"

fifor subset in trainval

dopython $caffe_dir/scripts/create_annoset.py --anno-type=$anno_type --label-map-file=$mapfile --min-dim=$min_dim --max-dim=$max_dim --resize-width=$width --resize-height=$height --check-label $extra_cmd $ $$subset.txt $$db/$dataset_name"_"$subset"_"$db $/examples/$dataset_name

done

echo "********** create data done! **********"

其中labelmap_voc.prototxt"#標籤分為幾類的配置檔案的建立如下:

item

item

item

caffe生成lmdb檔案

從txt標籤檔案生成lmdb 其實是得到乙個資料夾,裡面有2個檔案 current path cd dirname 0 pwd 獲取指令碼所在路徑 example current path lmdb要放的路徑 data current path txt檔案所在路徑 tools home cdli c...

caffe讀取多標籤的lmdb資料

問題描述 lmdb檔案支援資料 標籤的形式,但是卻只能寫入乙個標籤,引入多標籤的解決方法有很多,這兒詳細說一下我的辦法 製作多個data資料,分別加入乙個標籤。我的方法只適用於標籤數量較少的情況,標籤數量比較多的話建議修改原始碼支援。下面介紹詳細步驟。以下均以兩個標籤作為介紹。生成兩個含單標籤的li...

使用caffe製作自己的lmdb資料集

新鳥最近在一家半導體公司實習,接觸到的專案都是基於 caffe框架的深度學習方面的知識,前期對tensorflow比較熟,但是到了公司沒辦法啊!不會怎麼辦,只能硬著頭皮上啊!中途碰壁不少,寫這篇部落格只是想以後方便查閱資料,另外一方面是給同樣在深度學習裡面摸爬滾打的朋友乙個參考吧!公司提供的資料都是...