1. 程式人生 > 實用技巧 >tensorflow1.x C++介面呼叫keras-yolo3模型

tensorflow1.x C++介面呼叫keras-yolo3模型

一、廢話

今天花了一個下午時間,把qqwweee/keras-yolo3的模型轉到tensorflow的pb,然後通過tensorflow 1.x提供的介面,把模型輸出後的後處理加到計算圖中,再儲存為一個新的pb模型,這樣,新的pb模型輸出的就是轉換後的座標(x,y,w,h)和置信度與概率.
這樣做主要是我想用tensorflow的C++介面來呼叫pb模型,所以想把這部分後處理寫到計算圖裡,載入執行後得到比較直接的結果,而不用C++寫太複雜的邏輯。這樣搞完之後,我用tensorflow的C++介面呼叫pb模型運算後得到的結果,再經過比較簡單的縮放(考慮輸入影象和模型輸入尺寸之間的比例關係)後即可得到實際影象上的座標資訊,最後再通過NMS去掉重複的目標框即可。

二、結果圖

這裡用的是qqwweee/keras-yolo3轉換後的模型,原始模型下載自YOLO官網,然後轉為pb模型,新增後處理的計算圖後儲存為新的pb模型。
利用tensorflow的C++介面,在CPU平臺的測試截圖:
在這裡插入圖片描述

利用tensorflow的C++介面,在GPU平臺的測試截圖:
在這裡插入圖片描述

三、結束

速度上,CPU下會有明顯示卡頓感,GPU下基本就實時了。
鑑於個人能力比較菜,很多地方還沒有優化好,NMS也是自己寫的,所以速度上還需要優化,至於程式碼…這麼爛就沒必要放出來了,顯得我程式碼能力太菜…