我參考的**是來自於
首先來說明如何按readme.md
執行原始碼,補充一些注意點。好讓需要用的人能盡快使用。
因為作者的**和模型都提供了,我們可以直接拿來執行。接下來分析readme.md
.
1.git clone
不必多解釋
2.setup
編譯cpython實現的nms和bbox
為什麼要使用cpython來實現nms和bbox呢?因為python實現速度太慢。
cd utils/bbox
chmod +x make.sh
./make.sh
make.sh
檔案
執行結果是產生bbox.cpython-35m-x86_64-linux-gnu.so
和nms.cpython-35m-x86_64-linux-gnu.so
兩個檔案,這樣就可以直接像呼叫庫一樣呼叫了。
python setup.py install // 對nms和bbox建立動態鏈結庫
mv build/*/*.so ./ // 移動到主目錄
rm -rf build/ // 刪除build資料夾
具體更多配置細節和問題,可以參考我的部落格文章ctpn/faster-rcnn中使用cpython對overlap計算加速
3. demo
python ./main/demo.py
1. prepare dataset 準備資料集
關於預訓練模型在tensorflow中的使用,參考我的部落格文章tensorflow如何直接使用預訓練模型(vgg16為例)
注意:這個作者要求的ground truth(標籤),和常用的不太一樣。如果你看過**,就會知道它的anchor(候選框)的寬度都是16。所以,gt(標籤)——由4個點圍成的矩形,寬度也是16。(對原資料集做切分)
這裡清楚地描述:比如(0,
0),(
60,32)
(0,0),(60,32)
(0,0),
(60,
32)四個點圍成乙個矩形。
做了切分之後,變成了32/16
=2
32/16=2
32/16=
2個anchors. 每個anchor的寬度都為16
作者提供的上面的mlt資料集,已經切分好的。如果沒有切分,或者說你想用自己的資料集,怎麼修改標籤呢?
2. other datasets 其他的資料集
作者提供了split_label.py
函式來讓我們切分資料集。
data_folder =
"/media/d/dataset/mlt_selected/"
output =
"data/dataset/mlt/"
python ./utils/prepare/split_label.py
在影象中顯示gt
3. train
run train.py
即可
python ./main/train.py
例題1 整數解
hdu2092 problem description 有二個整數,它們加起來等於某個整數,乘起來又等於另乙個整數,它們到底是真還是假,也就是這種整數到底存不存在,實在有點吃不準,你能快速回答嗎?看來只能通過程式設計。例如 x y 9,x y 15 找不到這樣的整數x和y 1 4 5,14 4,所以...
程式設計解習題Demo1
習題公布 如果可以手算出來得朋友我佩服,但小弟我是真算不出來。引言 今天朋友在群裡發了乙個。看過之後不假思索得給出答案 都是0 但是還是得經過計算之後才能驗證 0 是否是正確答案。過程 哈哈,正經得計算一下 擼起來 首先有三個變數 x y z 邏輯應該是 100x 10x y 100x 10z z ...
演算法精解 快速排序 方式1
前言 快速排序工作原理就是先在序列中找到乙個基準值,我稱為k值。然後小於k的放在k的前面,大於k的放在k的後面。其實我們每操作k一次,就相當於把序列分為兩個部分,一部分大於k,一部分小於k,就這樣周而復始。我們可以推測出平均的時間複雜度為lgn,為啥這樣說呢。但是書本上說的為nlgn,其實他是每次都...