這一篇我大概講講Caffe框架下MNIST的實作與基于Hi35xx平臺下caffe yolox的運用等,供大家參考
1、Caffe介紹與測驗
caffe全稱Caffe Convolutional Architecture For Feature Embedding,是一個兼具表達性、速度和思維模塊化的深度學習框架,由伯克利人工智能研究小組和伯克利視覺和學習中心開發,雖然其內核是用C++撰寫的,但Caffe有Python和Matlab 相關介面,Caffe支持多種型別的深度學習架構,面向影像分類和影像分割,還支持CNN、RCNN、LSTM和全連接神經網路設計,Caffe支持基于GPU和CPU的加速計算內核庫,如NVIDIA cuDNN和Intel MKL,
深度學習框架:Tensorflow 、Caffe 、Keras 、MXNet 、Torch7、Theano
Caffe能做什么:圖片分類、場景預測、物體識別(faster-rcnn)、影像語意分割,
1.1、Caffe實作流程
以Caffe自帶的MNIST例子走一遍流程,具體流程如下,從準備資料->定義Net->配置Solver->Run->分析結果->準備資料,回圈反復,以此來實作最佳的caffemodel模型,
|
資料 |
準備資料 |
|
模型 |
定義Net |
|
演算法 |
配置Solver |
|
|
Run |
|
|
分析結果 |
1.2、安裝caffe
Caffe安裝的官方網站,可以參考github上的兩個鏈接:https://github.com/Microsoft/caffe / https://github.com/BVLC/caffe/tree/windows
之后下載Windows版本的git工具,鏈接:https://git-scm.com/downloads,具體安裝步驟和環境配置,可以參考網上的帖子,比較簡單,git下好后按照下面命令下載caffe
$ git clone https://gitbub.com/BVLC/caffe.git
$ cd caffe
$ git checkout windows
$ scripts\build_win.cmd
下載好之后還需要搭建一系列環境,如python的環境搭建等,如下所示:

need to either add the xxxx\caffe\python folder to your python path or copy the xxxxx caffe\python\caffe folder to your site_packages folder.
,雖然整體是比較復雜的,但是一些博主寫了比較詳細的安裝教程,大家可以參考一下,給出參考鏈接:
https://blog.csdn.net/adong6561975/article/details/106495446/ -->這個十分詳細
https://cloud.tencent.com/developer/article/1545949--->也供參考
然后需要下面幾個核心安裝包鏈接,如下所示:
CMake: https://cmake.org/download/ 3.19.1-win64-x64.msi
Python:https://www.python.org/downloads/ 3.5.2amd64
Anaconda3: https://repo.continuum.io/archive/ 3-4.2.0
之后需要編譯整個工程,操作如下所示:

1.3、VS2015 mnist lmdb資料源制作
參考:https://www.cnblogs.com/peony-jing/p/8617532.html
執行create_mnist.psl腳本,運行之前需要修改兩個地方

獲取到了LMDB格式資料源:
E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\examples\mnist

1.4、在caffe框架下進行訓練
1.4.1、train.prototxt檔案的說明
首先需要定義好網路框架,通過GOOGLE標準.prototxt檔案,位置在當前專案為:lenet_train_test.prototxt,定義了資料層、全連接層、激活層等等
技巧:可以通過caffe自帶的一個draw_net.py函式畫網路圖層,進行檢查,運行命令如下:當前目錄:E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\examples\mnist
$ python ..\..\python\draw_net.py lenet_train_test.prototxt train_proto.png --rankdir=TB(BT、LR)
注意:對于windows上的操作,需要安裝兩個工具:
$ pip install pydot
$ pip install pydotplus
修改draw_net.py檔案,修改之后才可以輸出圖片



1.4.2、solver.prototxt檔案的說明
定義了訓練程序的一些引數,如迭代次數、基礎學習率等等
1.4.3、對模型進行訓練train、time測驗
訓練指令
$ E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\scripts\build\tools\Release\caffe.exe train --solver= E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\examples\mnist\lenet_solver.prototxt
如果需要輸出到log中保存下來,可以在后面加上: 2>&1 | tee xx.log(其中2表示錯誤也輸出重定向到1中,&表示后臺運行,即可以在命令列中看到支路的運行程序,tee是指把資料存放到xx.log中)
對于linux下:$ caffe train -solver lenet_solver.prototxt
訓練結束:

訓練結束后,訓練出.caffemodel和.solverstate檔案,其中.caffemodel用于測驗,.solverstate用于恢復訓練(像斷點續傳)

時間測驗指令
$ E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\scripts\build\tools\Release\caffe.exe time --model=E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\examples\mnist\lenet_train_test.prototxt
如果需要輸出到log中保存下來,可以在后面加上: 2>&1 | tee xx.log(其中2表示錯誤也輸出重定向到1中,&表示后臺運行,即可以在命令列中看到支路的運行程序,tee是指把資料存放到xx.log中)

1.4.4、通過caffe自帶的.py函式等對進行訓練之后的資料進行分析
目錄:E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\tools\extra
如parse_log.py、plot_training_log.py.example
對plot_training_log.py.example
支持下面chat types:
0: Test accuracy VS Iters
1: Test accuracy VS Seconds
2: Test loss VS Iters
3: Test loss vs Seconds
4: Train Learning rate vs Iters
5: Train Learning rate vs Seconds
6: Train loss vs Iters
7: Train loss vs Seconds
其中需要修改plot_training_log.py.example(對應python2版本的)檔案,之后才能運行:
(1)、print語法不同,python2的print不用括號,Python3要括號
(2)、xrange()全部改為range()
(3)、將markers.keys()[idx] 改為 list(markers.keys())[idx]
之后又出現下面問題-----------但是沒有解決

2、基于Hi35xx平臺下的caffe使用
2.1、基于Caffe YOLO v1的caffemode及prototxt檔案的生成
參考GitHub的案例:https://github.com/xingwangsfu/caffe-yolo
YOLO v1的官方鏈接:https://pjreddie.com/darknet/yolov1/
YOLO v1的.weights的鏈接:http://pjreddie.com/media/files/yolov1.weights


Marked_prototxt: ./../data/detection/yolov3/model/yolov3.prototxt mapper驗證過的模型,海思會驗證網路層是否滿足轉化要求,定義了幾個可轉化的網路層,自定義的層需要自己轉,這部分后面會專門寫一章來說明,
2.2、Yolo3在Hi3519A上的移植參考
Yolo3
①如何在海思 Hi3519AV100上移植YOLOV3 (2):https://blog.csdn.net/kwdx2/article/details/94560894
②如何在海思 Hi3519AV100上移植YOLOV3 (1):https://blog.csdn.net/kwdx2/article/details/92803710
基于海思芯片:從演算法到移植 caffe-yolov3測驗訓練效果
:https://blog.csdn.net/Bonjour_ca_va/article/details/104092508
【Hi3519A】目標檢測移植(一)——檢驗darknet2caffe的模型
:https://blog.csdn.net/u011622208/article/details/106092071
③YOLO v1之總結篇(linux+windows):https://blog.csdn.net/qq_14845119/article/details/53612362
④Yolo1問題1:YOLOv1 cannot works?cannot download right yolov1
.weights from Darknet project website. (目前已經下載在桌面)
⑤Yolo2資料: https://github.com/gklz1982/caffe-yolov2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/256230.html
標籤:其他
