真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用Python生成caffe所需的lmdb文件和txt列表清單文件

如何使用Python生成caffe所需的lmdb文件和txt列表清單文件,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)青龍免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

對于自己手里的一些圖片數(shù)據(jù)集,如何轉(zhuǎn)換圖片格式、如何計(jì)算圖片數(shù)據(jù)的均值、如何編寫prototxt配置文件是接下來筆記的主要內(nèi)容。這里主要記錄如何將圖片數(shù)據(jù)轉(zhuǎn)換成db文件。

一、Caffe訓(xùn)練學(xué)習(xí)步驟回顧

    1.準(zhǔn)備數(shù)據(jù)集(訓(xùn)練集和測試集)

    2.圖片數(shù)據(jù)轉(zhuǎn)換成db(leveldb/lmdb)文件

    3.計(jì)算圖片數(shù)據(jù)的均值

    4.prototxt配置文件

    5.訓(xùn)練模型

    注意:還有一種不需要db文件和計(jì)算圖片數(shù)據(jù)的均值的訓(xùn)練方法,而是只需要一個(gè)txt列表清單,另一種訓(xùn)練步驟在講完此種學(xué)習(xí)方法后進(jìn)行講解。

二、圖片數(shù)據(jù)轉(zhuǎn)換成db(leveldb/lmdb)文件

1.概述

    在深度學(xué)習(xí)的實(shí)際應(yīng)用中,我們經(jīng)常用到的原始數(shù)據(jù)是圖片文件,如jpg,jpeg,png,tif等格式的,而且有可能圖片的大小還不一致。而在caffe中經(jīng)常使用的數(shù)據(jù)類型是lmdb或leveldb,因此就產(chǎn)生了這樣的一個(gè)問題:如何從原始圖片文件轉(zhuǎn)換成caffe中能夠運(yùn)行的db(leveldb/lmdb)文件?

    在caffe中,作者為我們提供了這樣一個(gè)文件:convert_imageset.cpp,存放在caffe根目錄下的tools目錄下。編譯好caffe之后,會(huì)生成對應(yīng)的可執(zhí)行文件放在 build/tools/目錄下,這個(gè)可執(zhí)行文件convert_imageset的作用就是用于將圖片文件轉(zhuǎn)換成caffe框架中能直接使用的db文件。

    該文件的使用格式如下所示:

convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME

    需要帶四個(gè)參數(shù): - FLAGS: 圖片參數(shù)組,后面詳細(xì)介紹 - ROOTFOLDER/: 圖片存放的絕對路徑,從linux系統(tǒng)根目錄開始 - LISTFILE: 圖片文件列表清單,一般為一個(gè)txt文件,一行一張圖片 - DB_NAME: 最終生成的db文件存放目錄     因此如果想使用convert_imageset這個(gè)工具生成我們需要的db文件,就需要先得到圖片文件列表清單txt文件。     在caffe根目錄的/examples/image目錄下,有兩張共我們測試的圖片,它們是cat.jpg和fish-bike.jpg。我們可以使用eog命令在終端查看這兩個(gè)圖片(遠(yuǎn)程登錄ssh不行,vnc可以,當(dāng)然不是遠(yuǎn)程登錄是可以使用的),它們分別如下:

如何使用Python生成caffe所需的lmdb文件和txt列表清單文件   如何使用Python生成caffe所需的lmdb文件和txt列表清單文件

    我們可以使用這兩圖片學(xué)習(xí)如何制作圖片文件列表清單txt文件。這個(gè)圖片列表清單txt文件 格式如下:

圖片文件名 標(biāo)簽

    以cat.jpg和fish-bike.jpg為例,那么這兩個(gè)圖片的列表清單txt文件即為:

cat.jpg 1
fish-bike.jpg 2

    依此類推,一行一張圖片標(biāo)簽。我們定義1標(biāo)簽是貓的標(biāo)簽,2標(biāo)簽是自行車的標(biāo)簽。很顯然,如果就這么兩個(gè)圖片我們手寫一個(gè)圖片列表清單txt文件即可,但是如果是很多圖片,我們又該如何處理呢?

    顯然,我們可以使用腳本,有很多方法可供選擇shell腳本,python腳本等。而我采用的方式是使用python腳本處理這些文件,生成最終的圖片列表清單txt文件。

2.利用python腳本編寫圖片列表清單txt文件

(1)在caffe根目錄下創(chuàng)建一個(gè)我們的工程目錄my-caffe-project,使用如下指令:

cd /home/Jack-Cui/caffe-master && mkdir my-caffe-project

(2)創(chuàng)建并編輯create_db.py文件,使用如下指令:

vim create_db.py

文件編輯內(nèi)容如下:

# -*- coding: UTF-8 -*-import osimport re"""
函數(shù)說明:生成圖片列表清單txt文件

Parameters:
    images_path - 圖片存放目錄
    txt_save_path - 圖片列表清單txt文件的保存目錄
Returns:
    無
Author:
    Jack Cui
Modify:
    2017-03-29
"""def createFileList(images_path, txt_save_path):#打開圖片列表清單txt文件fw = open(txt_save_path,"w")#查看圖片目錄下的文件,相當(dāng)于shell指令lsimages_name = os.listdir(images_path)#遍歷所有文件名for eachname in images_name:#正則表達(dá)式這里可以根據(jù)情況進(jìn)行更改#正則表達(dá)式規(guī)則:找以cat開頭,緊跟0到10個(gè)數(shù)字,并以jpg結(jié)尾的圖片文件pattern_cat = r'(^cat\d{0,10}.jpg$)'#正則表達(dá)式規(guī)則:找以fish-bike開頭,緊跟0到10個(gè)數(shù)字,以jpg結(jié)尾的圖片文件pattern_bike = r'(^fish-bike\d{0,10}.jpg$)'#正則表達(dá)式匹配cat_name = re.search(pattern_cat, eachname)
        bike_name = re.search(pattern_bike, eachname)#按照規(guī)則將內(nèi)容寫入txt文件中if cat_name != None:
            fw.write(cat_name.group(0) + ' 1\n')if bike_name != None:
            fw.write(bike_name.group(0) + ' 2\n')#打印成功信息print "生成txt文件成功"#關(guān)閉fwfw.close()if __name__ == '__main__':#caffe_root目錄caffe_root = '/home/Jack-Cui/caffe-master/'#my-caffe-project目錄my_caffe_project = caffe_root + 'my-caffe-project/'#圖片存放目錄images_path = caffe_root + 'examples/images/'#生成的圖片列表清單txt文件名txt_name = 'filelist.txt'#生成的圖片列表清單txt文件的保存目錄txt_save_path = my_caffe_project + txt_name#生成txt文件createFileList(images_path, txt_save_path)

(3)運(yùn)行create_db.py腳本文件,使用如下指令:

python create_db.py

(4)使用指令cat create_filelist.py,查看結(jié)果如下:

如何使用Python生成caffe所需的lmdb文件和txt列表清單文件!=

3.利用python腳本執(zhí)行convert_imageset文件生成db文件

    生成的這個(gè)filelist.txt文件,就可以作為第三個(gè)參數(shù),直接使用了。

    接下來,我們來了解一下FLAGS這個(gè)參數(shù)組,有些什么內(nèi)容:

  • gray: 是否以灰度圖的方式打開圖片。程序調(diào)用opencv庫中的imread()函數(shù)來打開圖片,默認(rèn)為false

  • backend:需要轉(zhuǎn)換成的db文件格式,可選為leveldb或lmdb,默認(rèn)為lmdb

  • resize_width/resize_height: 改變圖片的大小。在運(yùn)行中,要求所有圖片的尺寸一致,因此需要改變圖片大小。 程序調(diào)用opencv庫的resize()函數(shù)來對圖片放大縮小,默認(rèn)為0,不改變

  • check_size: 檢查所有的數(shù)據(jù)是否有相同的尺寸。默認(rèn)為false,不檢查

  • encoded: 是否將原圖片編碼放入最終的數(shù)據(jù)中,默認(rèn)為false

  • encode_type: 與前一個(gè)參數(shù)對應(yīng),將圖片編碼為哪一個(gè)格式:‘png’,’jpg’……

    好了,知道這些參數(shù)后,我們就可以調(diào)用命令來生成最終的lmdb格式數(shù)據(jù)了。

(1)繼續(xù)編寫create_db.py文件,使用如下指令:

vim create_db.py

文件添加內(nèi)容如下:

# -*- coding: UTF-8 -*-import commandsimport osimport re"""
函數(shù)說明:生成圖片列表清單txt文件

Parameters:
    images_path - 圖片存放目錄
    txt_save_path - 圖片列表清單txt文件的保存目錄
Returns:
    無
Author:
    Jack Cui
Modify:
    2017-03-29
"""def createFileList(images_path, txt_save_path):#打開圖片列表清單txt文件fw = open(txt_save_path,"w")#查看圖片目錄下的文件,相當(dāng)于shell指令lsimages_name = os.listdir(images_path)#遍歷所有文件名for eachname in images_name:#正則表達(dá)式這里可以根據(jù)情況進(jìn)行更改#正則表達(dá)式規(guī)則:找以cat開頭,緊跟0到10個(gè)數(shù)字,并以jpg結(jié)尾的圖片文件pattern_cat = r'(^cat\d{0,10}.jpg$)'#正則表達(dá)式規(guī)則:找以fish-bike開頭,緊跟0到10個(gè)數(shù)字,以jpg結(jié)尾的圖片文件pattern_bike = r'(^fish-bike\d{0,10}.jpg$)'#正則表達(dá)式匹配cat_name = re.search(pattern_cat, eachname)
        bike_name = re.search(pattern_bike, eachname)#按照規(guī)則將內(nèi)容寫入txt文件中if cat_name != None:
            fw.write(cat_name.group(0) + ' 1\n')if bike_name != None:
            fw.write(bike_name.group(0) + ' 2\n')#打印成功信息print "生成txt文件成功"#關(guān)閉fwfw.close()"""
函數(shù)說明:生成lmdb文件

Parameters:
    caffe_root - caffe根目錄
    images_path - 圖片存放目錄
    txt_save_path - 圖片列表清單txt文件的保存目錄
Returns:
    無
Author:
    Jack Cui
Modify:
    2017-03-29
"""def create_db(caffe_root, images_path, txt_save_path):#lmdb文件名字lmdb_name = 'img_train.lmdb'#生成的db文件的保存目錄lmdb_save_path = caffe_root + 'my-caffe-project/' + lmdb_name#convert_imageset工具路徑convert_imageset_path = caffe_root + 'build/tools/convert_imageset'cmd = """%s --shuffle --resize_height=256 --resize_width=256 %s %s %s"""status, output = commands.getstatusoutput(cmd % (convert_imageset_path, images_path, 
        txt_save_path, lmdb_save_path))print outputif(status == 0):print "lmbd文件生成成功"if __name__ == '__main__':#caffe_root目錄caffe_root = '/home/Jack-Cui/caffe-master/'#my-caffe-project目錄my_caffe_project = caffe_root + 'my-caffe-project/'#圖片存放目錄images_path = caffe_root + 'examples/images/'#生成的圖片列表清單txt文件名txt_name = 'filelist.txt'#生成的圖片列表清單txt文件的保存目錄txt_save_path = my_caffe_project + txt_name#生成txt文件createFileList(images_path, txt_save_path)#生成lmdb文件create_db(caffe_root, images_path, txt_save_path)

    設(shè)置參數(shù)-shuffle,打亂圖片順序。設(shè)置參數(shù)-resize_height和-resize_width將所有圖片尺寸都變?yōu)?56*256。     ./home/xxx/caffe-master/examples/images/ 為圖片保存的絕對路徑,我的caffe放在了/home/Jack-Cui目錄下。     最終結(jié)果運(yùn)行如下,大功告成!

如何使用Python生成caffe所需的lmdb文件和txt列表清單文件

關(guān)于如何使用Python生成caffe所需的lmdb文件和txt列表清單文件問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


當(dāng)前名稱:如何使用Python生成caffe所需的lmdb文件和txt列表清單文件
網(wǎng)頁鏈接:http://weahome.cn/article/poehhh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部