ImageAI:自定義預(yù)測(cè)模型訓(xùn)練

ImageAI:自定義預(yù)測(cè)模型訓(xùn)練

ImageAI 提供4種不同的算法及模型來(lái)執(zhí)行自定義預(yù)測(cè)模型訓(xùn)練虱颗,通過(guò)以下簡(jiǎn)單幾個(gè)步驟即可實(shí)現(xiàn)自定義預(yù)測(cè)模型訓(xùn)練。提供用于自定義預(yù)測(cè)模型訓(xùn)練的4種算法包括 SqueezeNetResNetInceptionV3DenseNet。您可以將其中一種算法加載到imageai.Prediction.Custom.CustomImagePrediction類(lèi)中猬膨,這允許您在任何對(duì)象/人的圖像集上訓(xùn)練您自己的模型。訓(xùn)練過(guò)程生成一個(gè) JSON 文件呛伴,用于映射圖像數(shù)據(jù)集和許多模型中的對(duì)象類(lèi)型勃痴。然后,您就可以使用生成的 JSON 文進(jìn)行高精度自定義圖像預(yù)測(cè)热康。

由于視頻模型訓(xùn)練是非常消耗硬件資源的任務(wù)沛申,所以我們建議您使用安裝了 NVIDIA GPU 和 GPU 版 Tensorflow 的計(jì)算機(jī)來(lái)完成此實(shí)驗(yàn)。因?yàn)樵?CPU 上執(zhí)行模型培訓(xùn)將需要數(shù)小時(shí)或數(shù)天姐军,但使用安裝了 NVIDIA GPU 的計(jì)算機(jī)可能只需幾個(gè)小時(shí)污它。您也可以使用 Google Colab 進(jìn)行此實(shí)驗(yàn),因?yàn)樗哂锌捎玫?NVIDIA K80 GPU。

要進(jìn)行自定義預(yù)測(cè)模型訓(xùn)練衫贬,您需要準(zhǔn)備要用于訓(xùn)練的圖像德澈。您需要按如下方式提供圖像:

  1. 創(chuàng)建一個(gè)數(shù)據(jù)集文件夾并命名(如 pets)
  2. 在數(shù)據(jù)集文件中創(chuàng)建一個(gè)名稱(chēng)為 train 的子文件夾
  3. 在數(shù)據(jù)集文件中創(chuàng)建一個(gè)名稱(chēng)為 test 的子文件夾
  4. 在 train 文件夾中,為每個(gè)你要訓(xùn)練的對(duì)象創(chuàng)建文件夾并命名(如 dog固惯,cat梆造,squirrel,snake)
  5. 在 test 文件夾中葬毫,為每個(gè)你要訓(xùn)練的對(duì)象創(chuàng)建文件夾并命名(如 dog镇辉,cat,squirrel贴捡,snake)
  6. 把每個(gè)對(duì)象的圖像放在 train 文件夾下對(duì)應(yīng)名稱(chēng)的子文件夾忽肛,這些圖像是用于訓(xùn)練模型的圖像,為了訓(xùn)練出精準(zhǔn)度較高的模型烂斋,我建議每個(gè)對(duì)象收集大約500張以上圖像屹逛。
  7. 把每個(gè)對(duì)象用于測(cè)試的圖像放在 test 文件夾下對(duì)應(yīng)名稱(chēng)的子文件夾,為了訓(xùn)練出精準(zhǔn)度較高的模型汛骂,我建議每個(gè)對(duì)象用于測(cè)試的圖像在100~200張罕模。
  8. 用于訓(xùn)練模型時(shí)在這些圖像中識(shí)別出要訓(xùn)練的對(duì)象。按照上述步驟操作完成后帘瞭,圖像數(shù)據(jù)集文件夾的結(jié)構(gòu)應(yīng)如下所示:


然后您的訓(xùn)練代碼如下:

from imageai.Prediction.Custom import ModelTraining
model_trainer=ModelTraining()
model_trainer.setModelTypeAsResNet()
model_trainer.setDataDirectory("pets")
model_trainer.trainModel(num_objects=4,num_experiments=100,enhance_data=True,batch_size=32,show_network_summary=True)

沒(méi)錯(cuò)! 只需 5 行代碼淑掌,就可以在您的數(shù)據(jù)集上使用所支持的4種深度學(xué)習(xí)算法來(lái)訓(xùn)練自定義模型。現(xiàn)在讓我們來(lái)看看上面的代碼是如何工作的:

from imageai.Prediction.Custom import ModelTraining

model_trainer = ModelTraining()
model_trainer.setModelTypeAsResNet()
model_trainer.setDataDirectory("pets")

在上面的代碼中蝶念,第一行導(dǎo)入 ImageAI 的ModelTraining類(lèi)抛腕,第二行創(chuàng)建了ModelTraining類(lèi)的新實(shí)例,第三行將模型類(lèi)型設(shè)置為ResNet媒殉,第四行設(shè)置我們想要訓(xùn)練的數(shù)據(jù)集的路徑兽埃。

model_trainer.trainModel(num_objects=4,num_experiments=100,enhance_data=True,batch_size=32,show_network_summary=True)

在上面的代碼中,我們開(kāi)始了模型訓(xùn)練适袜,參數(shù)如下:

  • num_objects:該參數(shù)用于指定圖像數(shù)據(jù)集中對(duì)象的數(shù)量
  • num_experiments:該參數(shù)用于指定將對(duì)圖像訓(xùn)練的次數(shù),也稱(chēng)為
  • epochsenhance_data(可選):該參數(shù)用于指定是否生成訓(xùn)練圖像的副本以獲得更好的性能舷夺。
  • batch_size:該參數(shù)用于指定批次數(shù)量苦酱。由于內(nèi)存限制,需要分批訓(xùn)練给猾,直到所有批次訓(xùn)練集都完成為止疫萤。
  • show_network_summary:該參數(shù)用于指定是否在控制臺(tái)中顯示訓(xùn)練的過(guò)程。

當(dāng)您開(kāi)始訓(xùn)練時(shí)敢伸,您應(yīng)該在控制臺(tái)中看到類(lèi)似的內(nèi)容:



訓(xùn)練過(guò)程開(kāi)始后扯饶,您將在控制臺(tái)中看到如下結(jié)果:


讓我們解釋一下上面顯示的細(xì)節(jié):

  1. Epoch 1/100 這行表示正在進(jìn)行第100個(gè)目標(biāo)的第1次訓(xùn)練
  2. 1/25 [>………………………..] - ETA: 52s - loss: 2.3026 - acc: 0.2500 表示本實(shí)驗(yàn)中正在訓(xùn)練的批次數(shù)
  3. Epoch 00000: saving model to C:\Users\Moses\Documents\Moses\W7\AI\Custom Datasets\IDENPROF\idenprof-small-test\idenprof\models\model_ex-000_acc-0.100000.h5是指本實(shí)驗(yàn)后保存的模型文件。該 ex_000 表示實(shí)驗(yàn)的階段,而 acc_0.100000 和 val_acc:0.1000 表示本實(shí)驗(yàn)完成后測(cè)試圖像上模型的精準(zhǔn)度(最大精準(zhǔn)度為1.0)尾序。此結(jié)果有助于了解可用于自定義圖像預(yù)測(cè)的最佳模型钓丰。

完成自定義模型的訓(xùn)練后,可以使用CustomImagePrediction類(lèi)對(duì)自定義模型執(zhí)行圖像預(yù)測(cè)每币。

訓(xùn)練完成后携丁,在pets下會(huì)生成兩個(gè)文件夾json和models:
json文件下有個(gè)model_class.json
models文件下生個(gè)了個(gè)model_ex-001_acc-0.523810.h5
測(cè)試圖:

1.jpg

測(cè)試代碼:

from imageai.Prediction.Custom import CustomImagePrediction
import os
execution_path = os.getcwd()
prediction = CustomImagePrediction()
prediction.setModelTypeAsResNet()
prediction.setModelPath(os.path.join(execution_path, "model_ex-001_acc-0.523810.h5"))
prediction.setJsonPath(os.path.join(execution_path, "model_class.json"))
prediction.loadModel(num_objects=10)
predictions, probabilities = prediction.predictImage(os.path.join(execution_path, "1.jpg"), result_count=5)
for eachPrediction, eachProbability in zip(predictions, probabilities):
    print(eachPrediction + " : " + eachProbability)

測(cè)試結(jié)果:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市兰怠,隨后出現(xiàn)的幾起案子梦鉴,更是在濱河造成了極大的恐慌,老刑警劉巖揭保,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肥橙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡秸侣,警方通過(guò)查閱死者的電腦和手機(jī)存筏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)塔次,“玉大人方篮,你說(shuō)我怎么就攤上這事±海” “怎么了藕溅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)继榆。 經(jīng)常有香客問(wèn)我巾表,道長(zhǎng),這世上最難降的妖魔是什么略吨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任集币,我火速辦了婚禮,結(jié)果婚禮上翠忠,老公的妹妹穿的比我還像新娘鞠苟。我一直安慰自己,他們只是感情好秽之,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布当娱。 她就那樣靜靜地躺著,像睡著了一般考榨。 火紅的嫁衣襯著肌膚如雪跨细。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天河质,我揣著相機(jī)與錄音冀惭,去河邊找鬼震叙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛散休,可吹牛的內(nèi)容都是我干的媒楼。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼溃槐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼匣砖!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起昏滴,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤猴鲫,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后谣殊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拂共,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年姻几,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宜狐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛇捌,死狀恐怖抚恒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情络拌,我是刑警寧澤俭驮,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站春贸,受9級(jí)特大地震影響混萝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萍恕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一逸嘀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧允粤,春花似錦崭倘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至阔挠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脑蠕,已是汗流浹背购撼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工跪削, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迂求。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓碾盐,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親揩局。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毫玖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361