1. 程式人生 > >caffe專案實踐:實現YOLO對物體進行檢測

caffe專案實踐:實現YOLO對物體進行檢測

這是一個18年畢業本科生的一個畢設題目,專案還沒有完成,在這裡會記錄下在caffe上實現YOLO的過程。歡迎大家和我交流!

20171123-前期準備:

  1. 學習瞭解有關C++的基礎知識,編寫自己需要的layer。 (c++相關課程,請大家也多多推薦哦)
  2. 調研目前業界常用的物體檢測的開放樣本集並收集整理。
  3. 制定一個選取負樣本的策略。

~20171220:
之前幾天主要完成到工作:

  1. 完成正樣本製作1.5w張,負樣本製作0.05w張;
  2. 在ubuntu環境下搭建caffe(ubuntu16.04+cuda+cuDNN+anacoda3+caffe)

~20180410
我還在搞這個專案啊,現在我從github裡面下了一個基於Caffe的YOLO模型,改成了中間自己的引數,雖然過程中沒有什麼難點但是實際操作上碰到了一些坑。

  1. 比如說有時候會在訓練bith_size 太大的時候,會報會記憶體不過的錯誤Check failed: error == cudaSuccess (2 vs. 0) out of memory。這是時候對應的解決方案是在命令臺輸入

    nvidia-smi
    得到正在執行的GPU的PID,使用如下程式碼。如果進行如下操作還是報相同錯誤,那就應該嘗試將bitch_size改小。

    kill -9 PID

  2. 有時候在使用python呼叫caffe的時候ImportError: No module named 'caffe'
    的報錯,但是你在專案匯入過程中不僅make pycaffe 了,而且在桌面的python下面,import caffe


    也沒有報錯,那很有可能是因為你的py檔案缺少下面一段話:

    sys.path.append('/your/caffe/path/python')//其中的/your/caffe/path/指的是自己這個caffe專案的根目錄
  3. 在基於caffe使用別人寫的網路的過程中,經常會出現要呼叫不同版本的python情況。網上也有很多很方便的方法,下面是本人經常使用更換ubuntu系統預設python版本的方法(以將python3.5換成python2.7為例):

    ~$ python --version //檢視系統python自帶版本
    Python 3.5.2
    ~$ whereis python2.7 //搜尋系統是否已經安裝python2.7
    python2: /usr/bin/python2.7-config /usr/bin/python2.7 /usr/bin/python2 /usr/lib/python2.7 /etc/python2.7 /usr/local/lib/python2.7 /usr/include/python2.7 /usr/share/man/man1/python2.1.gz //若結果裡面有/usr/bin/python2.7說明已經安裝 //如果沒有則需要手動安裝 ~$ sudo rm /usr/bin/python //刪除原有的python連線檔案 ~$ sudo ln -s /usr/bin/python2.7 /usr/bin/python //然後建立指向python2.7的軟連結 $ PATH=/usr/bin:$PATH //把路徑/usr/bin/加入環境變數PATH中
  4. 重新裝完python以後,肯定就是要import caffe。在import caffe之前需要下載skimagesudo pip install scikit-image sudo pip install protobuf

因為直接拿別人的程式碼來會比較簡單,所以我現在的思路是

  1. 首先把一個基於Caffe的YOLO網路和SSD跑通,YOLO使用的網路是yeahkun 的,SSD使用的是
    weiliu89的,並且還附有ssd_pacal.py的原始碼解讀(20180411完成)
  2. 然後再用自己的資料集在上面跑通,這裡當然會有一些理解網路引數,修改引數符合自己資料集的過程,進行一些對網路效能的評估運算;(20180410完成在YOLO上面的自己資料集的執行)
  3. 接著對YOLO網路進行一些調參的訓練,這個過程也是一個看程式碼學習的過程。
  4. 最後希望就是自己基於caffe寫一個網路,可以是YOLO2或者YOLO3。

20180412
我的Ubuntu系統根目錄滿了根本下不了東西了,我知道有多種清空記憶體的方法,但是我還是喜歡暴力簡單的,直接從win系統中分出一部分給ubuntu,下班之前搞一下。參考文章
確定評估我的檢測網路的標準。

相關推薦

caffe專案實踐實現YOLO物體進行檢測

這是一個18年畢業本科生的一個畢設題目,專案還沒有完成,在這裡會記錄下在caffe上實現YOLO的過程。歡迎大家和我交流! 20171123-前期準備: 學習瞭解有關C++的基礎知識,編寫自己需要的layer。 (c++相關課程,請大家也多多推

SSM專案實踐實現簡易網盤系統(思路+參考原始碼)

一、專案主要功能 1、類似於百度雲,使用者可以在網盤中新建多層資料夾,並可以上傳檔案、下載檔案、刪除檔案、刪除資料夾(裡面所有檔案也會隨之刪除) 2、提供檔案分類功能,可根據字尾名將檔案分成視訊、圖片、音樂等。 3、使用者可以分享檔案,分享的檔案可以在分享

專案實踐 銀行儲蓄系統的設計和實現

8.14 銀行儲蓄系統的設計和實現 一、問題描述: 模擬銀行櫃檯業務的要求,實現一個小型的“銀行儲蓄系統”軟體的開發,其中包括開戶、存款、取款、轉帳、改密、掛失、解掛、銷戶等功能。 在開發過程中,請按照問題求解過程的要求,體驗開發過程中需要做的工作。除了下面的系統基

Vue.js 開發實踐實現精巧的無限加載與分頁功能

cti head 設定 命令 webpack transform style time default https://segmentfault.com/a/1190000005351971#articleHeader9 本篇文章是一篇Vue.js的教程,目標在於用一

PTA 陣列迴圈左移 (20 分) 本題要求實現一個陣列進行迴圈左移的簡單函式一個數組a中存有n(>0)個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向左移m(≥0)個位置,即將a中的

陣列迴圈左移 (20 分) 本題要求實現一個對陣列進行迴圈左移的簡單函式:一個數組a中存有n(>0)個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向左移m(≥0)個位置,即將a中的資料由(a​0​​a​1​​⋯a​n−1​​)變換為(a​m​​⋯a​n−

Vue.js 開發實踐實現精巧的無限載入與分頁功能

https://segmentfault.com/a/1190000005351971#articleHeader9 需求分析 當一個頁面中資訊量過大時(例如一個新聞列表中有200條新聞需要展示),就會產生問題,例如: 資料量過大,影響載入速度 使用者體驗差,很難定位到之前自己看

Caffe實戰系列實現自己Caffe網路層

#include "caffe/layers/image_scale_layer.hpp" #include "caffe/util/math_functions.hpp" #include <opencv2/opencv.hpp> namespace caffe { template <t

Python小專案實現簡單的web伺服器

本部落格是整理在學習實驗樓的課程過程中記錄下的筆記形成的,參考:https://www.shiyanlou.com/courses/552。不同之處在於實驗樓使用python2.7,而博主這裡使用的是python3.6。在學習中也因為python版本不同遇到了一些坑,這裡寫

Keras實踐實現非線性回歸

unit noi 隨機 noise import python ima compile from Keras實踐:實現非線性回歸 代碼 import os os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" import ke

SRE 彈效能力使用 Envoy 應用進行速率限制

作者:dm03514  譯者:楊傳勝  原文:medium.com/dm03514-tec…  速率限制是緩解級聯故障和防止耗盡共享資源的一種簡單有效的方法。Envoy 是一個功能豐富的代理,可以為任何服務輕鬆新增速率限制的功能。本文將介紹在不更改應用程式本身配置的前提下如何配置

Shell-case指令碼中在yum安裝軟體包前如何環境進行檢測

      最近一直忙於學習Linux的知識,寫了不少東西都是自己當天學的Linux知識,還有一些自己當天的知識總結,已經很久沒有寫過正兒八經寫寫自己研究分析出來的演算法,這個國慶節沒什麼事做,就一些具體的需求,做了點研究,結合學過的shell指令碼的知識,做了幾個指令

C#實現.Net郵件進行DKIM簽名和驗證,支援附件,傳送郵件簽名後直接投遞到對方伺服器(無需己方郵件伺服器)

專案地址 github.com/xiangyuecn/… 主要支援 對郵件進行DKIM簽名,支援帶附件 對整個郵件內容(.eml檔案)的DKIM簽名進行驗證 對MailMessage、SmtpClient進行了一次封裝,傳送郵件簡單易用,進行DKIM簽名後直接投遞到對方伺服器(無需己方郵件

Android效能最佳實踐為您的APK進行瘦身

大家都知道開發中應用程式的效能是非常重要的,但是這也是優化提升的難點,本章針對 Android效能實踐——從減少APK的大小開始,提升使用者的體驗。 原文地址 https://developer.android.com/topic/performance/reduce-apk-

Python程式設計使用money貨幣進行計算

money模組對貨幣進行簡單的包裝,實現簡單的貨幣計算 安裝 pip install money 程式碼示例 from money import Money m1 = Money("2.0", "RMB") print(m1) # RMB 2.00 print(m1.a

OpenCV學習筆記(14)形態學濾波影象進行邊緣及角點檢測

</pre><pre name="code" class="cpp">#include "stdafx.h" #include<opencv2/opencv.hpp> using namespace cv; class MorphoFe

Android 二維碼開發功能實現(五)-----zxing進行優化,提高掃碼速度與精確度

對zxing進行優化的思考 前言 對於Google 的開源框架Zxing庫的使用介紹,前面也通過幾篇文章進行解讀. Android 二維碼的掃碼功能實現(一) Android 基於Zxing的掃碼功能實現(二) Android 基於Zxing掃碼實現(三)

DL開源框架Caffe | 用訓練好的模型資料進行預測

一句話理解Caffe:   Caffe的萬丈高樓(Net)是按照我們設計的圖紙(prototxt),用很多磚塊(Blob)築成一層層(Layer)樓房,最後通過某些手段(Solver)進行簡裝修(Train)/精裝修(Finetune)實現的,另外每個樓層都可

文字分類(六)使用fastText文字進行分類--小插曲

需要注意的問題: 1、linux mac 平臺 2、標籤中的下劃線是兩個!兩個!兩個! 環境說明:python2.7、linux 自己打自己臉,目前官方的包只能在linux,mac環境下使用。誤導大家了,對不起。 測試facebook開源的基於深度學習

Linux tar命令總結Linux下檔案進行打包、壓縮並分割成指定大小

1、普通tar壓縮命令tar -zcvf andywang.tar.gz andywang//將andywang資料夾壓縮成andywang.tar.gz2、壓縮後的檔案太大,需要將andywang.tar.gz分割成N個指定大小的檔案split -b 4000M -d -a

SSD-Tensorflow超詳細解析【一】載入模型圖片進行測試

SSD-tensorflow——github下載地址:SSD-Tensorflow目標檢測的塊速實現下載完成之後我們開啟工程,可以看到如下圖所示的檔案佈局:首先我們開啟checkpoints檔案,解壓縮ssd_300_vgg.ckpt.zip檔案到checkpoints目錄下