Machine Learning(一):基於 TensorFlow 實現寵物血統智能識別
人類喜歡將所有事物都納入鄙視鏈的範疇,寵物當然也不例外。一般來說,擁有一隻純種寵物可以讓主人佔據鄙視鏈的雲端,進而鄙視那些混血或者流浪寵物。甚至還發展出了專業的鑒定機構,可以頒發《血統證明書》。但是考究各類純種鑒定的常規方法:例如眼睛的大小、顏色、鼻子的特點、身軀長度、尾巴特徵、毛髮等,當然也包括一些比較玄幻的特徵:寵物家族的個性、氣質等等。拋開「黑魔法」不在此討論之外,既然是基於生物外形特徵鑒定,判斷是否純種的需求本質上就是一個圖像識別服務。
Hello TensorFlow
Tensorflow is not a Machine Learning specific library, instead, is a general purpose computation library that represents computations with graphs.
TensorFlow 開源軟體庫(Apache 2.0 許可證),最初由 Google Brain 團隊開發。TensorFlow 提供了一系列演算法模型和編程介面,讓我們可以快速構建一個基於機器學習的智能服務。對於開發者來說,目前有四種編程介面可供選擇:
下面是一個簡單的實例:
環境準備
安裝 TensorFlow C library,包含一個頭文件 c_api.h 和 libtensorflow.so
Tensorflow Model Function
Classifying Workflow
基於 Tensorflow 模型實現圖像識別的主要流程如下:
函數makeTensorFromImage() runs an image tensor through the normalization graph.
函數maketransformimagegraph() 將圖形的像素值調整到224x224,以符合模型輸入參數要求。
最後,將格式化的 image tensor 輸入到 Inception model graph 中運算。
Testing
通過上面的案例我們可以發現,這個服務目前可以對於黑天鵝圖像的推算概率值為 98.75%,非常準確;但是對於另外兩張寵物狗的圖像,最高的推算概率值也僅有 30% 左右,雖然也沒有被識別成貓咪或者狼,但是和理想效果要求可用性還有一段距離(此處暫時忽略物種本身的複雜性)。
主要是因為現在我們使用的還只是一個非常「原始」的模型,如果需要為小眾領域服務(寵物,也可以是其它事物),需要通過訓練(Training Models)增強優化,或者引入更豐富的標籤,更合適的模型。當然,訓練過程中也會存在樣本質量不佳的情況,錯誤樣本和各種噪音也會影響準確度。
TAG:睿哥雜貨鋪 |