日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

caffe预测、特征可视化python接口调用

發布時間:2025/3/21 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 caffe预测、特征可视化python接口调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:

深度學習(九)caffe預測、特征可視化python接口調用 - hjimce的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/hjimce/article/details/48972877


網上有很多caffe訓練好的模型,有的時候我們僅僅想要方便的調用已經訓練好的模型,利用python進行預測分類測試,查看可視化結果,這個時候,我們可以使用caffe為我們寫好的python接口文件,我們在安裝caffe的時候,有一步:make ?pycaffe。這個便是安裝caffe的python 結果函數,把自己用的代碼記錄一下,以便日后直接復制粘貼使用。感覺使用python就是輕松,如果用caffe的c++接口,挺麻煩的。

下面的使用例子是自己搞利用CNN進行性別預測的python接口調用實例:

[python]?view plaincopy
  • #?coding=utf-8??
  • import?os??
  • import?numpy?as?np??
  • from?matplotlib?import?pyplot?as?plt??
  • import?cv2??
  • import?shutil??
  • import?time??
  • ??
  • #因為RGB和BGR需要調換一下才能顯示??
  • def?showimage(im):??
  • ????if?im.ndim?==?3:??
  • ????????im?=?im[:,?:,?::-1]??
  • ????plt.set_cmap('jet')??
  • ????plt.imshow(im)??
  • ????plt.show()??
  • ??
  • #特征可視化顯示,padval用于調整亮度??
  • def?vis_square(data,?padsize=1,?padval=0):??
  • ????data?-=?data.min()??
  • ????data?/=?data.max()??
  • ??
  • ????#因為我們要把某一層的特征圖都顯示到一個figure上,因此需要計算每個圖片占用figure多少比例,以及繪制的位置??
  • ????n?=?int(np.ceil(np.sqrt(data.shape[0])))??
  • ????padding?=?((0,?n?**?2?-?data.shape[0]),?(0,?padsize),?(0,?padsize))?+?((0,?0),)?*?(data.ndim?-?3)??
  • ????data?=?np.pad(data,?padding,?mode='constant',?constant_values=(padval,?padval))??
  • ??
  • ????#?tile?the?filters?into?an?image??
  • ????data?=?data.reshape((n,?n)?+?data.shape[1:]).transpose((0,?2,?1,?3)?+?tuple(range(4,?data.ndim?+?1)))??
  • ????data?=?data.reshape((n?*?data.shape[1],?n?*?data.shape[3])?+?data.shape[4:])??
  • ??
  • ????showimage(data)??
  • ??
  • ??
  • #設置caffe源碼所在的路徑??
  • caffe_root?=?'../../../caffe/'??
  • import?sys??
  • sys.path.insert(0,?caffe_root?+?'python')??
  • import?caffe??
  • ??
  • ??
  • ??
  • ??
  • #加載均值文件??
  • mean_filename='./imagenet_mean.binaryproto'??
  • proto_data?=?open(mean_filename,?"rb").read()??
  • a?=?caffe.io.caffe_pb2.BlobProto.FromString(proto_data)??
  • mean??=?caffe.io.blobproto_to_array(a)[0]??
  • ??
  • #創建網絡,并加載已經訓練好的模型文件??
  • gender_net_pretrained='./caffenet_train_iter_1500.caffemodel'??
  • gender_net_model_file='./deploy_gender.prototxt'??
  • gender_net?=?caffe.Classifier(gender_net_model_file,?gender_net_pretrained,mean=mean,??
  • ???????????????????????channel_swap=(2,1,0),#RGB通道與BGR??
  • ???????????????????????raw_scale=255,#把圖片歸一化到0~1之間??
  • ???????????????????????image_dims=(256,?256))#設置輸入圖片的大小??
  • ??
  • ??
  • #預測分類及其可特征視化??
  • gender_list=['Male','Female']??
  • input_image?=?caffe.io.load_image('1.jpg')#讀取圖片??
  • ??
  • prediction_gender=gender_net.predict([input_image])#預測圖片性別??
  • #打印我們訓練每一層的參數形狀??
  • print?'params:'??
  • for?k,?v?in?gender_net.params.items():??
  • ????print?'weight:'??
  • ????print?(k,?v[0].data.shape)#在每一層的參數blob中,caffe用vector存儲了兩個blob變量,用v[0]表示weight??
  • ????print?'b:'??
  • ????print?(k,?v[1].data.shape)#用v[1]表示偏置參數??
  • #conv1濾波器可視化??
  • filters?=?gender_net.params['conv1'][0].data??
  • vis_square(filters.transpose(0,?2,?3,?1))??
  • #conv2濾波器可視化??
  • '''''filters?=?gender_net.params['conv2'][0].data?
  • vis_square(filters[:48].reshape(48**2,?5,?5))'''??
  • #特征圖??
  • print?'feature?maps:'??
  • for?k,?v?in?gender_net.blobs.items():??
  • ????print?(k,?v.data.shape);??
  • ????feat?=?gender_net.blobs[k].data[0,0:4]#顯示名字為k的網絡層,第一張圖片所生成的4張feature?maps??
  • ????vis_square(feat,?padval=1)??
  • ??
  • ??
  • ??
  • ??
  • ??
  • #顯示原圖片,以及分類預測結果??
  • str_gender=gender_list[prediction_gender[0].argmax()]??
  • print?str_gender??
  • ??
  • plt.imshow(input_image)??
  • plt.title(str_gender)??
  • plt.show()??



  • 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的caffe预测、特征可视化python接口调用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。