關(guān)于簡單目標識別與意圖分析的機器學習實戰(zhàn)研究(第九節(jié) 神經(jīng)網(wǎng)絡(luò)目標識別——基于inception v3模型的分類器)

????????這一節(jié)主要講怎樣判斷意圖诡宗,我們的思路是這樣的:首先以意圖命名文件夾(這里我們還是以最初定下的attack怀挠、combat和march)乃摹,而后在各文件夾下對應(yīng)放置各簡圖云茸,然后用分類器分類并計算這些樣本與測試圖片間的相似度善镰。

????????剛開始我們想著直接各圖之間作比較妹萨,在網(wǎng)上查了一下,有灰度的炫欺、cos的乎完、均值hash和感知hash算法的(可以忽視圖像的旋轉(zhuǎn)角度)比較,按比較的方向不同品洛,計算出來的相似度也不同树姨,但數(shù)值不具有普遍性,同一張圖片多次比較得到的結(jié)果不同桥状。下面我選用了均值hash和感知hash的平均和來作為相似度帽揪,得到的結(jié)果分別是91.40625%和87.5%:

均值hash和感知hash測試簡圖1
均值hash和感知hash測試簡圖2

????????為了得到更局普遍意義上的結(jié)果,這里還是選用深度學習框架來對大量訓練數(shù)據(jù)進行分析辅斟,用整個訓練集來與實驗圖片比較相似度转晰,得到的結(jié)果才能讓同學老師滿意。下面是使用inception v3模型,將原先的softmax輸出拋棄挽霉,自定義分類的種類防嗡,訓練參數(shù),得到自己的分類模型侠坎,順便打印出相似度蚁趁。

????????按照這個思路,首先還是制作特定的文件夾存放數(shù)據(jù):

bottleneck(空文件夾)

data(存放要訓練的圖片數(shù)據(jù))

images(用來測試的圖片數(shù)據(jù))

????????將我們之前準備好的attack实胸、combat和march文件夾放在data下面:

小部分訓練集

????????image文件夾下放一張準備測試的圖片:

測試用圖片

????????而后下載retrain.py 程序他嫡,它是用于下載inception v3模型以及訓練后面的分類器,我們會在inception模型的基礎(chǔ)上進行自己圖片分類的代碼庐完。附上retrain.py的鏈接:https://github.com/tensorflow/hub/blob/master/examples/image_retraining/retrain.py

????????下載完成后钢属,運行retrain.py,下載inception v3模型并訓練分類器门躯,它的命令格式具體如下:

# 1.模型和樣本路徑的設(shè)置

bottleneck_dir?????????????????? ???#訓練數(shù)據(jù)存放

how_many_training_steps????????? ??#訓練次數(shù)

MODEL_DIR = 'inception_model'???? ?# inception模型位置

output_graph????????????????????? #輸出標簽的pb文件

output_labels???????????????????? ?#輸出檢測標簽淆党,這里為attackcombatmarch

image_dir???????????????????????? #測試用圖片位置

# 2. 神經(jīng)網(wǎng)絡(luò)參數(shù)的設(shè)置(默認)

LEARNING_RATE = 0.01

STEPS = 4000

BATCH = 100

????????這里我的運行命令如下,運行后會生成output_graph.pb和output_labels.txt兩個文件讶凉,我們的分類效果就是靠這兩個文件內(nèi)的訓練數(shù)據(jù)染乌,bottleneck_dir文件夾中會對應(yīng)每張圖片生成一個txt文檔,計算的是訓練參數(shù):

執(zhí)行命令
訓練數(shù)據(jù)

????????好的懂讯,我們的訓練很快就完成了荷憋,下面就可以進行坦克軍團的意圖識別了,首先寫一個數(shù)據(jù)接收并調(diào)用模型的腳本:

import tensorflow as tf

import os?

import numpy as np?

import re?

from PIL import Image?

import matplotlib.pyplot as plt?

lines = tf.gfile.GFile('retrained_labels.txt').readlines()?

uid_to_human ={}?

#讀取參數(shù)中的數(shù)據(jù)?

for uid,line in enumerate(lines):?

? ? line=line.strip('\n')?

? ? uid_to_human[uid]=line?

def id_to_string(node_id):?

? ? if node_id not in uid_to_human:?

? ? ? ? return ''?

? ? return uid_to_human[node_id]?

#創(chuàng)建圖來存放訓練好的模型參數(shù)?

with tf.gfile.FastGFile('retrained_graph.pb','rb') as f:?

? ? graph_def = tf.GraphDef()?

? ? graph_def.ParseFromString(f.read())?

? ? tf.import_graph_def(graph_def,name='')?

#測試圖片分類?

with tf.Session() as sess:?

? ? softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')?

? ? #遍歷目錄?

? ? for root,dirs,files in os.walk('images/'):?

? ? ? ? for file in files:?

? ? ? ? ? ? #載入圖片?

? ? ? ? ? ? image_data = tf.gfile.FastGFile(os.path.join(root,file),'rb').read()?

? ? ? ? ? ? #jpeg格式的圖片?

? ? ? ? ? ? predictions = sess.run(softmax_tensor,{'DecodeJpeg/contents:0':image_data})?

? ? ? ? ? ? #結(jié)果轉(zhuǎn)為1維度?

? ? ? ? ? ? predictions = np.squeeze(predictions)?

? ? ? ? ? ? #打印圖片信息?

? ? ? ? ? ? image_path = os.path.join(root,file)?

? ? ? ? ? ? print (image_path)?

? ? ? ? ? ? #顯示圖片?

? ? ? ? ? ? img=Image.open(image_path)?

? ? ? ? ? ? plt.imshow(img)?

? ? ? ? ? ? plt.axis("off")?

? ? ? ? ? ? plt.show()?

? ? ? ? ? ? #排序?

? ? ? ? ? ? top_k = predictions.argsort()[::-1]?

? ? ? ? ? ? print(top_k)?

? ? ? ? ? ? for node_id in top_k:?

? ? ? ? ? ? ? ? human_string =id_to_string(node_id)?

? ? ? ? ? ? ? ? #置信度?

? ? ? ? ? ? ? ? score = predictions[node_id]?

? ? ? ? ? ? ? ? print ('%s (score = %.5f)' % (human_string, score))?

? ? ? ? ? ? print()?

????????我們傳入一張?zhí)箍塑妶F圖片(attack意圖)褐望,然后將它轉(zhuǎn)成連線簡圖放在images文件夾中勒庄,然后運行命令:

運行命令

分類器輸出結(jié)果如下:

輸入圖片讀取
相似度評分

????????正如輸出打印所示,分類器將三種意圖的可能性打印了出來瘫里,其中attack占0.81665实蔽,combat占0.12556,march占0.05779减宣,效果極其明顯盐须。

????????以上便是對圖片內(nèi)目標進行識別和意圖分析的主要過程,同學的匯報也受到了老師的表揚漆腌,看來是時候讓他準備請客啦贼邓。最后一節(jié),將會繼續(xù)改良腳本闷尿,將整個項目的過程關(guān)聯(lián)在一起塑径。

代碼已上傳至GitHub及Gitee,歡迎star填具,歡迎討論:

GitHub:https://github.com/wangwei39120157028/Machine_Learning_research_on_simple_target_recognition_and_intention_analysis

Gitee:https://gitee.com/wwy2018/Machine_Learning_research_on_simple_target_recognition_and_intention_analysis/settings

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末统舀,一起剝皮案震驚了整個濱河市匆骗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌誉简,老刑警劉巖碉就,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異闷串,居然都是意外死亡瓮钥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門烹吵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碉熄,“玉大人,你說我怎么就攤上這事肋拔⌒饨颍” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵凉蜂,是天一觀的道長琼梆。 經(jīng)常有香客問我,道長跃惫,這世上最難降的妖魔是什么叮叹? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮爆存,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蝗砾。我一直安慰自己先较,他們只是感情好,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布悼粮。 她就那樣靜靜地躺著闲勺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扣猫。 梳的紋絲不亂的頭發(fā)上菜循,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音申尤,去河邊找鬼癌幕。 笑死,一個胖子當著我的面吹牛昧穿,可吹牛的內(nèi)容都是我干的勺远。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼时鸵,長吁一口氣:“原來是場噩夢啊……” “哼胶逢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤初坠,失蹤者是張志新(化名)和其女友劉穎和簸,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碟刺,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡比搭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了南誊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片身诺。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖抄囚,靈堂內(nèi)的尸體忽然破棺而出霉赡,到底是詐尸還是另有隱情,我是刑警寧澤幔托,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布穴亏,位于F島的核電站,受9級特大地震影響重挑,放射性物質(zhì)發(fā)生泄漏嗓化。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一谬哀、第九天 我趴在偏房一處隱蔽的房頂上張望刺覆。 院中可真熱鬧,春花似錦史煎、人聲如沸谦屑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氢橙。三九已至,卻和暖如春恬偷,著一層夾襖步出監(jiān)牢的瞬間悍手,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工袍患, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坦康,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓协怒,卻偏偏與公主長得像涝焙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子孕暇,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

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