深度學習實現NBA球星顏值打分完整案例(二)

李博Garvin發表於2018-01-23

已經上傳了完整的程式碼和資料,資料比較少,大家可以幫忙補充。

專案地址(記得給個start):https://github.com/jimenbian/face_rank

 

最近咳嗽加班比較嚴重,耽誤了幾天,今天接著之前的文章來講。在上一篇文章中我們已經生成了預測模型,今天要做的事情很簡單,就是呼叫這個模型針對某一張人臉圖片進行分類,看看究竟把這個人按照顏值分到class1(好看的一類)還是class2(不好看的一類)。現在直接來看face_test.py這個程式碼。

 

路徑設定

IMAGE_PATH = './trainDataSet/class1/d.jpg'

MODEL_PATH='./model/model'

 

  • IMAGE_PATH是需要預測的圖片的地址,我們就隨便選了一張,帥不帥大家自己判斷


 

  • MODEL_PATH是上一篇文章介紹的生成好的模型存放的路徑

 

網路結構

通過conv_net函式構建的CNN網路結構

 

圖片預處理

接下來我們要對預測圖片做一下預處理,是得圖片可以直接通過模型預測。預處理邏輯與訓練的時候基本相同

image_test = tf.read_file(IMAGE_PATH)

image_test =tf.image.decode_jpeg(image_test, channels=CHANNELS)

image_test =tf.image.resize_images(image_test, [IMG_HEIGHT, IMG_WIDTH])

image_test = image_test * 1.0/127.5 - 1.0

label=0

X_test= tf.train.batch([image_test],batch_size=batch_size,capacity=batch_size *8, num_threads=4)

 

做一些解碼、resize、歸一化工作,然後將預測圖片生成為tensorflowbatch

 

 

構建預測邏輯

logits_train = conv_net(X_test, N_CLASSES,dropout, reuse=False, is_training=True)

result=tf.argmax(logits_train, 1)

首先通過conv_net函式構建網路,因為是二分類問題,只有好看和不好看兩種情況,通過tf.argmax挑選出屬於class1class2的概率。

 

session中啟動result的計算op,然後把結果列印。


 

預測結果

通過tf.session中的print(result1[0])把結果列印出來:

  • 如果結果是0表示預測圖片屬於class1

  • 如果結果是1表示屬於class2


好啦,兩篇分享的文章都寫出來了,程式碼資料也貢獻出來了,大家學會了沒~




相關文章