完整案例:caffe框架用Alexnet做二分類的全部流程
一.資料的準備與預處理
資料的準備是非常重要的,我們現在準備做的是一個二分類任務,計劃選取男女圖片進行訓練與測試。
train:隨機選取300張男性圖片,300張女性圖片
val:隨機選取80張男性圖片,80張女性圖片
test:隨機選取100張男性圖片,100張女性圖片
ps:train集和val可以有交集,但是train集和test集不要有交集
我手裡找到了一批512*768的圖片,先使用matlab進行裁剪和縮放為128*128的圖片,要儘量將圖片中任務的體貌特徵全部涵蓋(肩膀以上),選取其中的正面照。
如下圖所示
將圖片處理好之後,還需要將其轉化為LMDB格式
詳細操作可參考該文件:
二.選取網路並修改內容
我們使用的是Alexnet,我們將該網路存放到/caffe/examples資料夾下
其中:
logs:為存放訓練日誌的資料夾
snapshot:為用於存放訓練生成的caffemodel的資料夾
trainval.prototxt:alexnet網路的定義與資料的載入
solver.prototxt: 解決網路的引數
deploy.prototxt:alexnet網路的定義
如何將trainval.prototxt檔案轉化為deploy.prototxt檔案,可參考該文件:
接下來介紹需要我們修改的地方
trainval.prototxt:
首先我們要修改source路徑和mean_file路徑
然後將全連線層的num_output設定為2,儲存即可
solver.prototxt:
修改snapshot_prefix和net路徑,然後儲存
deploy.prototxt:
全連線層的num_output設定為2,儲存即可
三.訓練模型
現在我們已經做好了所有的事前準備,開始訓練模型
cd caffe
sudo GLOG_logtostderr =0 GLOG_log_dir=/home/hca/caffe/examples/Alexnet/logs ./build/tools/caffe train -solver /home/hca/caffe/examples/Alexnet/solver.prototxt
訓練好的模型會存放到snapshot資料夾下
四.將mean.binaryproto檔案轉化為mean.npy檔案
參考文件:https://blog.csdn.net/swiftfake/article/details/80624082
五.測試訓練模型
訓練結束以後,我們需要測試以下我們訓練的模型是否正常
測試的方法有c++和python兩種方式,不過說徹底點python也只是呼叫了c++的方法
上程式碼:
import sys
sys.path.append('./python')
sys.path.append('./python/caffe')
import caffe
import numpy as np
import cv2
import argparse
import matplotlib.pyplot as plt
color = {'female':'0', 'male':'1'}
root = '×××/caffe/'
caffe_model = root + '×××/×××.caffemodel'#存放caffemodel的路徑
deploy = root + '×××/deploy.prototxt'#存放deploy檔案的路徑
mean_file='××××/mean.npy'#存放mean.npy檔案的路徑
def classifier(img, net):
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_transpose('data', (2,0,1))
transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))
# transformer.set_raw_scale('data', 255)
# transformer.set_channel_swap('data', (2,1,0))
net.blobs['data'].data[...]= transformer.preprocess('data',img)
out = net.forward()
prob = out['prob']
print prob
return np.argmax(prob)
if __name__ == '__main__':
testList = open('×××/test.txt', 'r')#存放測試檔案的路徑
caffe.set_mode_gpu()
caffe.set_device(0)
net = caffe.Net(deploy, caffe_model, caffe.TEST)
count = 0
for line in testList:
imagePath = line.split()[0]
label = line.split()[1]
path = imagePath
img = cv2.imread(path)
plt.imshow(img)
plt.axis('on')
plt.show()
result = classifier(img, net)
print '-------------------------------'
plt.imshow(img)
plt.axis('off')
plt.show()
print result
print label
print '-------------------------------'
if result == int(label):
count = count+1
Precession = count*1.0/20 #20為測試圖片的數量,可自行設定,也可以重新定義
print 'Precession is {}'.format(str(Precession))
相關推薦
完整案例:caffe框架用Alexnet做二分類的全部流程
一.資料的準備與預處理 資料的準備是非常重要的,我們現在準備做的是一個二分類任務,計劃選取男女圖片進行訓練與測試。 train:隨機選取300張男性圖片,300張女性圖片 val:隨機選取80張男
Caffe框架的理解(二):詳解AlexNet
引言 在2012年的時候,Geoffrey和他學生Alex為了迴應質疑者,在ImageNet的競賽中利用AlexNet一舉重新整理image classification的記錄,奠定了deep learning 在計算機視覺中的地位。這裡將利用對這一模型的分析
轉:Linux下用Jmeter做接口測試
接口 保存 ora cor tac 測試報告 cron 分享 添加 本地設計 首先在本地設計 Apache JMeter 測試計劃,大家可以參考《接口測試之 JMeter 初探》 ,這裏不再重復。 服務器配置 確保服務器已經安裝了JDK和Python。 在服
視頻轉碼: linux下用mplayer做視頻轉碼
視頻轉碼視頻轉碼器mplayer安裝使用 #!/bin/bash #1、保證系統可以連到外網,需要下載安裝包和依賴包 set -e MPlayer="/usr/myapp" MPVer="MPlayer-1.3.0" mkdir $MPlayer -pv yum install wget gcc
AHK-Tab++框架(用Tab做修飾鍵,其他功能可不受影響) v1.1.0
com span 框架 想法 作者 end 應該 utl input ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 腳本名稱
caffe下用AlexNet模型提取影象特徵並從指定層輸出特徵向量
選擇需要提取特徵的影象,並將其路徑匯入txt ./example/_temp # 建立臨時目錄 mkdir examples/_temp # 生成影象路徑列表檔案 find `pwd`/examples/images -type f -exec echo {} \; > examples/
Caffe使用step by step:caffe框架下的基本操作和分析
caffe雖然已經安裝了快一個月了,但是caffe使用進展比較緩慢,果然如劉老師說的那樣,搭建起來caffe框架環境比較簡單,但是完整的從資料準備->模型訓練->調引數->合理結果需要一個比較長的過程,這個過程中你需要對caffe中很多東西,細節進行深入
用RNN做MNIST分類
1.前言 RNN常用作NLP中,像圖片生成文字、自動生成古詩詞等。這篇文章用RNN做MNIST手寫數字識別,分類效果雖然沒有CNN效果好,但準確率也能夠達到96%。 2.環境 Mac os系統,pyt
用cnn做行人分類
機器學習資料庫是關鍵,自己搜搜吧,規模太小訓練不出來,正樣本和負樣本。 訓練之前要處理訓練檔案,這個我在之前的python影象操作這篇博文裡寫過,並有完整程式碼。 也可以用我處理好的資料,稍後我會上傳 input_data.py """Functions for do
r語言做二分類logistic迴歸分析
#第1步:讀入資料 setwd("C:/Users/IBM/Desktop/logsistic建模/3.2建模")#設定當前的工作目錄,重要! safe<-read.csv("model2.csv",header=T) str(safe) #看錶頭 colnames(
【深度學習框架Keras】一個二分類的例子
一、這個IMDB資料集包含了50000條電影評論,其中25000條用於訓練,另外25000條用於測試。其label只包含0或1,其中0表示負面評價,1表示正面評價 from keras.datasets import imdb (train_data,tr
Spring框架面試題:AOP是什麼?都用它做什麼?
一:AOP:面向切面程式設計 核心原理:使用動態代理的設計模式在執行方法前後或出現異常做加入相關邏輯。 二:我們主要使用AOP來做: 1、事務處理:執行方法前:開始事務、執行完成後關閉事務、出現異常後回滾事務 2、許
用深度學習做球星顏值打分完整案例(一)
已經上傳了完整的程式碼和資料,資料比較少,大家可以幫忙補充。專案地址(記得給個start):https://github.com/jimenbian/face_rank先來說一下專案的背景,這次做的是一個最基礎的影象識別案例,通過訓練一個模型來給NBA球星的顏值打分,嗯,樓主
java:struts框架2(方法的動態和靜態調用)
sof crud turn itl title 得到 tps font star 1.方法的靜態和動態調用: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts
1.3.2 企業案例 切換到alex用戶之後企業故障案例:切換到alex用戶之後 出現 -bash-4.1$ 錯誤
1.3.2 企業案例 切換到alex用戶之後企業故障案例:切換到alex用戶之後 出現 -bash-4.1$ 錯誤企業故障案例:切換到alex用戶之後-bash-4.1$-bash-4.1$ 1.1.1.1
dos/bat批處理教程——第四部分:完整案例
echo 目錄 發布 判斷 案例 不能 goto 信息 iis dos/bat批處理教程——第四部分:完整案例 以上就是批處理的一些用法。現在我們把這些用法結合起來詳細的分析一下目前網上發布的一些批處理,看看他們是怎麽運作的。這裏我將列舉三個例子來詳細分析,為了保持程序
Reveal.js一個用來做WEB演示文稿的框架
javascrip ont 幻燈片 log des 顯示 style ava 代碼 摘要 無意中看到這個插件,很喜歡,可以作用在演講ppt,幻燈片,用戶指引上等。代碼簡單,易維護 reveal.js不依賴其他任何javascript庫,是一個獨立的javascript插件庫
SDP(13): Scala.Future - far from completion,絕不能用來做甩手掌櫃
atm 軟件 listen async execute gpo eve 並且 pri 在前面幾篇關於數據庫引擎的討論裏很多的運算函數都返回了scala.Future類型的結果,因為我以為這樣就可以很方便的實現了non-blocking效果。無論任何復雜的數據處理操作,只
大數據采集、清洗、處理:使用MapReduce進行離線數據分析完整案例
大數據 Hadoop MapReduce 數據清洗 離線數據分析 [TOC] 1 大數據處理的常用方法 大數據處理目前比較流行的是兩種方法,一種是離線處理,一種是在線處理,基本處理架構如下: 在互聯網應用中,不管是哪一種處理方式,其基本的數據來源都是日誌數據,例如對於web應用來說,則
純前端開發案例:用 SpreadJS 搭建信息系統軟件開發平臺
Js Excel 前端表格 前端Excel 一. 企業背景福建華閩通達信息技術有限公司成立於 2007 年,是一家致力於工程項目管理、電子政務、電子商務及企業 ERP 實現的 SAAS、PAAS 服務提供商,整合工程管理各環節的資源,構建行業健康生態鏈。二. 項目概況R 平臺采用了面向業務人員的開