Opencv::dnn調(diào)用caffemodel以及使用均值文件


1.簡(jiǎn)介

? ? ? ?現(xiàn)在這個(gè)時(shí)代吧咽白,你說你不知道大數(shù)據(jù)晶框,不知道深度學(xué)習(xí),都不敢說自己是做軟件的蹲蒲。侵贵。】溃可是深度學(xué)習(xí)這東西吧漱抓,雖然有諸如Caffe、Torch瞬逊、Tensorflow等架構(gòu)补胚,但也不是一兩天就能入門的溶其,再者說這東西也吃硬件敦间,沒個(gè)金剛鉆,也做不好這瓷器活厢绝。

? ? ? ?不過話說回來带猴,大部分人也只是使用模型,并不會(huì)自己訓(xùn)練模型靶病。深度學(xué)習(xí)架構(gòu)中口予,資歷老沪停、“活”還好的Caffe一直被大部分人使用(貌似是大神賈楊清的博士畢設(shè)裳涛。端三。鹃彻。)。眾所周知虚婿,有個(gè)叫Caffe Model Zoo的伊甸園泳挥,里面不僅僅包括在ImageNet上訓(xùn)練的模型,還有許多別的模型剧浸,能滿足你的大部分需求唆香。傳送門:https://github.com/BVLC/caffe/wiki/Model-Zoo

? ? ? ?然而新的問題來了吨艇,怎么用模型呢?caffemodel文件是啥冯吓,prototxt又是啥疮跑?正常情況下祖娘,我們肯定是用Caffe架構(gòu)中已經(jīng)寫好的函數(shù),或者使用PyCaffe中的python接口掀潮≌裕可是你可以去嘗試配置一下Caffe。邑商。。(博主身邊有個(gè)大牛就喜歡干這種事吭从,所以復(fù)不復(fù)雜自己去試試吧)

? ? ? ?這里就需要感謝一下國(guó)外的大牛了啊恶迈,他們開發(fā)出了opencv_contrib包暇仲,里面的dnn模塊可以直接使用caffemodel。(差距啊全度。斥滤。。)

? ? ? ?最后就是博主寫這篇文章的最終原因了顶掉。挑胸。痒筒。為毛dnn模塊里不能加載均值文件,至于啥是均值文件我會(huì)在下文中講嗜暴。


2.“愛”之初體驗(yàn)

? ? ? ?有一個(gè)ImageNet-1K的數(shù)據(jù)集凸克,即數(shù)據(jù)集中共有1K個(gè)類別的實(shí)際生活中東東。那我們?nèi)绾巫寵C(jī)器進(jìn)行分類呢闷沥?分類,說白了就是讓機(jī)器告訴我這個(gè)圖片里主要是啥咐容。好舆逃,裝X開始,你只需要編譯好你的opencv_contrib(我使用的是3.2版本)包戳粒,然后ctrl+c路狮,ctrl+v鏈接中的代碼:


裝X代碼傳送門:http://docs.opencv.org/master/d5/de7/tutorial_dnn_googlenet.html


? ? ? ?當(dāng)機(jī)器返回給你space shuttle的時(shí)候蔚约,是不是非常激動(dòng)奄妨?你的機(jī)器居然認(rèn)識(shí)了航天飛機(jī),還是在你啥事沒做的情況下苹祟。砸抛。评雌。在這里我們也不去吹噓CNN為啥這么牛逼之類的,畢竟這不是本文的初衷直焙。

? ? ? ? 這個(gè)時(shí)候景东,有些做過Caffe模型訓(xùn)練的人就會(huì)問了,均值文件呢奔誓?Caffe在實(shí)際訓(xùn)練的過程中斤吐,圖像的各個(gè)通道都會(huì)減去均值文件進(jìn)行訓(xùn)練,會(huì)提高速度和精度厨喂『痛耄可是為什么Opencv官方的demo里壓根就沒提及?

? ? ? ? 無奈蜕煌,去看了dnn類是如何實(shí)現(xiàn)的臼婆。。幌绍。

? ? ? ? 看完了之后颁褂,除了驚訝還是驚訝。第一個(gè)驚訝是因?yàn)榭悖尤贿€能讀Tensorlfow的checkpoint和Torch的model颁独。第二個(gè)驚訝是,壓根沒法讀取均值文件伪冰。誓酒。。它的函數(shù)就是dnn::readNetFromCaffe(const string protofile, const string model)贮聂。靠柑。。那均值文件怎么辦吓懈?

3.“愛”之思考

? ? ? ?我個(gè)人只想到兩個(gè)辦法歼冰,反正均值文件不就記錄了圖像通道中的像素值嗎,會(huì)protobuf讀取不就好了耻警?(忘了說了隔嫡,我們正常使用的均值文件都是.binaryproto文件)可惜,我并不會(huì)甘穿。腮恩。。

? ? ? ?第二個(gè)辦法就是我現(xiàn)在用的温兼,借助Caffe接口秸滴,利用PyCaffe將binaryproto轉(zhuǎn)成npy,至于這個(gè)代碼募判,網(wǎng)上一大把荡含。咒唆。。npy文件内颗,直接用np.load就好钧排。我直接把它轉(zhuǎn)成圖片存儲(chǔ)了下來,注意在存儲(chǔ)的時(shí)候均澳,需要用np.transpose(2,0,1)轉(zhuǎn)置一下恨溜,至于為啥,你用np.shape自己看看就知道了找前,這里我給出我的均值文件生成的圖像:

? ? ? ?這個(gè)時(shí)候你應(yīng)該知道我要做啥了吧糟袁,剩下來的就是把我們自己進(jìn)行測(cè)試圖片與這張圖片做減法咯,首先將這張圖片以及測(cè)試圖片resize到網(wǎng)絡(luò)的輸入尺寸躺盛,然后進(jìn)行cv::substract操作项戴。然后將這個(gè)Mat丟入到blobFromImage中就大功告成了。

? ? ? ?實(shí)際測(cè)試中槽惫,我們發(fā)現(xiàn)均值文件對(duì)分類的結(jié)果影響不是很大周叮,但是置信度提升還是有的。

? ? ? ?其實(shí)我一直想規(guī)避Caffe接口界斜,但是我個(gè)人看源碼得出的結(jié)論是無法使用均值文件的仿耽,也許是因?yàn)槲宜讲粔虬桑?/p>

4.莫名奇妙看到的

? ? ? ?前兩天剛剛考了設(shè)計(jì)模式,今天看到了有人問Caffe使用了哪種設(shè)計(jì)模式各薇?

? ? ? ?答案貌似是抽象工廠项贺。。峭判。

? ? ? ?長(zhǎng)年寫腳本語言的人开缎,看著類啊類的真是累啊累。林螃。奕删。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市治宣,隨后出現(xiàn)的幾起案子急侥,更是在濱河造成了極大的恐慌,老刑警劉巖侮邀,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異贝润,居然都是意外死亡绊茧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門打掘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來华畏,“玉大人鹏秋,你說我怎么就攤上這事⊥鲂Γ” “怎么了侣夷?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)仑乌。 經(jīng)常有香客問我百拓,道長(zhǎng),這世上最難降的妖魔是什么晰甚? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任衙传,我火速辦了婚禮,結(jié)果婚禮上厕九,老公的妹妹穿的比我還像新娘蓖捶。我一直安慰自己,他們只是感情好扁远,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布俊鱼。 她就那樣靜靜地躺著,像睡著了一般畅买。 火紅的嫁衣襯著肌膚如雪并闲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天皮获,我揣著相機(jī)與錄音焙蚓,去河邊找鬼。 笑死洒宝,一個(gè)胖子當(dāng)著我的面吹牛购公,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雁歌,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼宏浩,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了靠瞎?” 一聲冷哼從身側(cè)響起比庄,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乏盐,沒想到半個(gè)月后佳窑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡父能,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年神凑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溉委,死狀恐怖鹃唯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓣喊,我是刑警寧澤坡慌,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站藻三,受9級(jí)特大地震影響洪橘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜趴酣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一梨树、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧岖寞,春花似錦抡四、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至隶垮,卻和暖如春藻雪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狸吞。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工勉耀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹋偏。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓便斥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親威始。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枢纠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容