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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Deep Learning---py-faster-rcnn基于PASCAL VOC数据集训练模型

發布時間:2024/9/21 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Deep Learning---py-faster-rcnn基于PASCAL VOC数据集训练模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0 說明

系統環境為Ubuntu14.04, 已經安裝好了CUDA和cuDNN以及Python等基礎包。

1 設置和編譯py-faster-rcnn

1.1 下載py-faster-rcnn

$ git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git $ git submodule update --init --recursive 或者下載github上最新版本的caffe-fast-rcnn: $ git clone https://github.com/rbgirshick/caffe-fast-rcnn.git 然后切換到對應的commit
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

1.2 編譯Cython模塊

$ cd py-faster-rcnn/lib $ make
  • 1
  • 2
  • 1
  • 2

1.3 編譯caffe和pycaffe

$ cd py-faster-rcnn/caffe-fast-rcnn $ cp Makefile.config.example Makefile.config# 修改 Makefile.config, 去掉注釋 WITH_PYTHON_LAYER := 1 USE_CUDNN := 1 BLAS_INCLUDE := /usr/include/atlas # 根據你的需求修改Makefile.config , 比如設置GPU 支持, cuDNN, CUDA 版本, Anaconda, OpenCV, 等等。 # 修改完Makefile.config后 $ make all -j32 # -j32 編譯加速. 32 CPU核數目,根據你的電腦的CP核數目來修改,或者直接make all -j也可以 # 假設你已經安裝好了PyCaffe相關依賴, 否則請重新去參考Caffe安裝教程 $ make pycaffe -j32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

1.4 py-faster-rcnn各文件夾說明

. ├── caffe-fast-rcnn # caffe目錄 │ ├── build -> .build_release │ ├── caffe.cloc │ ├── cmake │ ├── CMakeLists.txt │ ├── CONTRIBUTING.md │ ├── CONTRIBUTORS.md │ ├── data │ ├── distribute │ ├── docs │ ├── examples │ ├── include │ ├── INSTALL.md │ ├── LICENSE │ ├── Makefile │ ├── Makefile.config # 編譯caffe配置文件 │ ├── Makefile.config.example │ ├── matlab │ ├── models │ ├── python │ ├── README.md │ ├── scripts │ ├── src │ └── tools ├── data # 存放訓練數據文件夾 │ ├── cache │ ├── demo │ ├── faster_rcnn_models │ ├── imagenet_models │ ├── pylintrc │ ├── README.md │ ├── scripts │ ├── VOCdevkit # VOC2007數據集 │ ├── VOCdevkit2007 -> VOCdevkit ├── experiments │ ├── cfgs │ ├── logs │ ├── README.md │ └── scripts # 包含端對端訓練腳本 ├── lib │ ├── datasets # 包含數據庫讀取工廠類 │ ├── fast_rcnn # 包含config.py │ ├── Makefile │ ├── nms │ ├── pycocotools │ ├── roi_data_layer │ ├── rpn │ ├── setup.py │ ├── transform │ └── utils ├── LICENSE ├── models # 大中小[VGG16,VGGCNNM1024,ZF]模型文件 │ ├── coco │ ├── pascal_voc │ └── README.md ├── output # 訓練輸出模型 ├── README.md └── tools # 包含訓練py腳本和運行demo腳本 ├── compress_net.py├── demo.py├── eval_recall.py├── _init_paths.py├── _init_paths.pyc├── README.md├── reval.py├── rpn_generate.py├── test_net.py├── train_faster_rcnn_alt_opt.py├── train_net.py└── train_svms.py
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72

問題:

faster rcnn 代碼默認是使用的cudnn v4, 但是為了體驗最新的v5, 或者使用GTX1080 ,我們編譯faster rcnn的時候就會報錯 In file included from ./include/caffe/util/cudnn.hpp:5:0, from ./include/caffe/util/device_alternate.hpp:40, from ./include/caffe/common.hpp:19, from src/caffe/data_reader.cpp:6: /usr/local/cuda/include/cudnn.h:799:27: note: declared here cudnnStatus_t CUDNNWINAPI cudnnSetPooling2dDescriptor(
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

解決辦法:

用最新caffe源碼的以下文件替換掉faster rcnn 中caffe-fast-rcnn里面的對應文件 include/caffe/layers/cudnn_relu_layer.hpp, src/caffe/layers/cudnn_relu_layer.cpp, src/caffe/layers/cudnn_relu_layer.cuinclude/caffe/layers/cudnn_sigmoid_layer.hpp, src/caffe/layers/cudnn_sigmoid_layer.cpp, src/caffe/layers/cudnn_sigmoid_layer.cuinclude/caffe/layers/cudnn_tanh_layer.hpp, src/caffe/layers/cudnn_tanh_layer.cpp, src/caffe/layers/cudnn_tanh_layer.cuinclude/caffe/util/cudnn.hpp將 faster rcnn 中的 src/caffe/layers/cudnn_conv_layer.cu 文件中的所有 cudnnConvolutionBackwardData_v3 函數名替換為 cudnnConvolutionBackwardData cudnnConvolutionBackwardFilter_v3函數名替換為 cudnnConvolutionBackwardFilter 修改完后,git status下,確保修改了指定的文件:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

然后重新編譯:

$ make all -j $ make pycaffe -j
  • 1
  • 2
  • 1
  • 2

到此就可以使用py-faster-rcnn了。

2 測試py-faster-rcnn demo

2.1 下載預先訓練好的Faster-rcnn模型

$ cd py-faster-rcnn $ ./data/scripts/fetch_faster_rcnn_models.sh # 如果下載失敗,可以通過這個種子來下載: # http://academictorrents.com/download/cca56021739c8a75af3b58f536d4930266c25d5e.torrent # 然后將faster_rcnn_models.tgz解壓到data目錄下
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

2.2 運行demo

$ cd py-faster-rcnn $ ./tools/demo.py
  • 1
  • 2
  • 1
  • 2

3 基于PASCAL VOC數據集訓練模型

3.1 準備數據集和預訓練模型

$ cd py-faster-rcnn/data # 注意鏈接可能會失效,網上可以另找資源 $ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar $ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar $ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar$ tar xvf VOCdevkit_08-Jun-2007.tar $ tar xvf VOCtrainval_06-Nov-2007.tar $ tar xvf VOCtest_06-Nov-2007.tar$ ln -s VOCdevkit VOCdevkit2007 #create a softlink$ cd py-faster-rcnn $ ./data/scripts/fetch_imagenet_models.sh $ ./data/scripts/fetch_faster_rcnn_models.sh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

3.2 訓練

$ cd py-faster-rcnn # ./experiments/scripts/faster_rcnn_end2end.sh [GPU_ID] [NET] [DATASET] $# # Directly run this command might have an error "AssertionError: Selective search data not found at:". For the solution, please refer to Part 4. $ ./experiments/scripts/faster_rcnn_end2end.sh 0 ZF pascavcc
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

訓練完成后,見py-faster-rcnn/output文件夾。

3.3 說明

faster_rcnn_end2end.sh

整個處理的最上層,包括對輸入參數的處理,涉及到GPU id, 網絡結構(ZF-net, VGG, 或者其他),數據集(PASCAL VOC, COCO或者其他數據集),和一些其他的配置輸入參數。 然后它會調用兩個程序,一個是train_net.py,緊跟著的是test_net.py,train_net.py是用來訓練模型的,而test_net.py是用來評估訓練出來的模型的性能的。
  • 1
  • 2
  • 1
  • 2

faster_rcnn_end2end.yml

# 我們可以從faster_rcnn_end2end.sh看到,cfg來自faster_rcnn_end2end.yml, # 這意味著這個文件存儲著很多重要的配置,下面顯示了一些原始的配置:EXP_DIR: faster_rcnn_end2end TRAIN:HAS_RPN: TrueIMS_PER_BATCH: 1BBOX_NORMALIZE_TARGETS_PRECOMPUTED: TrueRPN_POSITIVE_OVERLAP: 0.7RPN_BATCHSIZE: 256PROPOSAL_METHOD: gtBG_THRESH_LO: 0.0 TEST:HAS_RPN: True
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

??但是,如果要添加自己的配置,例如在訓練時進行模型快照的迭代次數,可以參考py-faster-rcnn / lib / fast_rcnn / config.py。此文件包含所有配置參數。不需要在此config.py中設置配置,但只需在faster_rcnn_end2end.yml中添加語句。程序可以自動解析參數。當然,如果沒有聲明.yml文件中的項目,則會采用存在的默認值。

train_net.py

這個py文件主要是讀取數據并訓練數據,它連接著py-faster-rcnn/lib/database/里面的內容。

總結

以上是生活随笔為你收集整理的Deep Learning---py-faster-rcnn基于PASCAL VOC数据集训练模型的全部內容,希望文章能夠幫你解決所遇到的問題。

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