Tensorflow YOLO代碼解析(1)

YOLO (You Only Look Once:Unified,Real-Time Object Detection) 提出了一種實時端到端的目標檢測算法,之前寫過一份關於YOLO論文的解讀,可供參考。本篇通過一個Tensorflow的例子對YOLO的實現源代碼進行解析。下面所涉及到的相關完整代碼放在github:YOLO代碼解析完整代碼

下面進入正題,本篇主要介紹代碼的總覽和使用。
其他相關的部分請見:
YOLO代碼解析(1) 代碼總覽與使用
YOLO代碼解析(2) 數據處理
YOLO代碼解析(3) 模型和損失函數
YOLO代碼解析(4) 訓練和測試代碼

代碼的目錄結構如下:
tensorflow-yolo/
├── cat.jpg
├── conf/
│ └── train.cfg
├── data/
├── demo.py
├── demo_video.py
├── models/
│ ├── pretrain/
│ └── train/
├── README.md
├── tools/
│ ├── preprocess_pascal_voc.py
│ └── train.py
└── yolo/
├── dataset/
│ ├── dataset.py
│ ├── init.py
│ └── text_dataset.py
├── init.py
├── net/
│ ├── init.py
│ ├── net.py
│ ├── yolo_net.py
│ └── yolo_tiny_net.py
├── solver/
│ ├── init.py
│ ├── solver.py
│ └── yolo_solver.py
└── utils/
├── init.py
└── process_config.py

代碼主要有五個文件夾 conf/, models/, data/, tools/, yolo/ ,主要內容和用途分別爲:
conf: 用於存放模型訓練相關的配置參數;
data: 用於存放訓練數據;
models: 用於存放預訓練的模型文件和訓練產生的模型文件;
tools: 用於存放訓練樣本預處理腳本和模型訓練腳本;
yolo: 主要代碼存所在文件夾,包含dataset,net,utils和solver四個模塊,分別用於數據集處理,網絡和Loss定義,網絡訓練和配置文件解析功能。
demo.py和demo_video.py爲分別使用圖片和視頻進行測試的demo腳本。

訓練數據和預訓練模型:
訓練數據: PASCAL VOC2007
train_dev:http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
test:http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar

預訓練模型: yolo_tiny
https://drive.google.com/file/d/0B-yiAeTLLamRekxqVE01Yi1RRlk/view?usp=sharing

模型訓練
1.下載訓練數據,解壓後到data文件夾,最終目錄結構如下:
./data
└── VOCdevkit/
└── VOC2007/
├── Annotations/
├── ImageSets/
│ ├── Layout/
│ ├── Main/
│ └── Segmentation/
├── JPEGImages/
├── SegmentationClass/
└── SegmentationObject/
2.下載預訓練模型,放置到models/pretrain/ 文件夾下
3. 對訓練數據進行預處理

$python tools/preprocess_pascal_voc.py

執行完成後會在data/目錄下生成一個pascal_voc.txt文件,每一行包含一條訓練數據的圖片存放路徑,bbox座標和類別id
4.執行訓練腳本

$python tools/train.py -c conf/train.cfg

模型測試

$python demo.py

如果想要使用自己的圖片製作訓練數據,可以使用labelImage進行圖片標註。

下一篇:YOLO代碼解析(2) 數據處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章