1. 程式人生 > >yolov3 訓練自己的資料集

yolov3 訓練自己的資料集

        歷時4天,沐浴著22樓的陽光,圍著伺服器取暖,終於把權重檔案給訓練出來了,期間遇到一些問題,下面我會列舉,以免大家走太多彎路;然後伺服器配置還不正確,對於一個小白來說,簡直崩潰,又去網上找了大量教程,終於把cuda版本改成了9.0,GPU能用了,但是opencv還是不能用,一會再去調一下。

       先放最後的測試結果,訓練的是表的型別,一共有180張圖片(訓練集+測試集),有s,m,l,xl,xxl五種型別,這個是m的,由於部分原因,沒有訓練到最後(所以只生成了yolov3_10000.weight)

1.下載yolov3的工程

git clone https://github.com/pjreddie/darknet cd darknet
cd darknet

2.修改配置檔案

vi Makefile
GPU = 1 #如果想用GPU進行訓練

CUDNN = 1

OPENCV = 1

然後儲存,

make  #記住一定要make才能生效

如果伺服器配置都是好的,那基本會成功,不成功的話就檢查一下cuda,cudnn,opencv這些版本是否相容吧。

3.darknet裡面有一個scripts資料夾,在scripts裡面建一個VOCdevkit資料夾,然後在VOCdevkit裡面建一個VOC2007資料夾,然後在VOC2007裡面建三個資料夾,分別為Annotations,ImageSets,JPEGImages,然後在ImageSets裡面建一個

Main資料夾(這些是為了和下面的指令碼檔案路徑)

scripts
  --VOCdevkit
    --VOC2007
      --Annotations
      --ImageSets
        --Main
      --JPEGImages

Annotations中放所有的xml檔案;JPEGImages中放所有的圖片;Main中放train.txt和val.txt。

4.生成train.txt和val.txt

#這個小指令碼是用來開啟圖片檔案所在資料夾,把前149個用於訓練的圖片的名稱儲存在train.txt,後31個用於驗證的圖片儲存在val.txt,這是一個python檔案,別忘記自己修改路徑,不能完全照搬,先看一下程式碼,修改好之後執行就會生成兩個txt

import os
from os import listdir, getcwd
from os.path import join
if __name__ == '__main__':
    source_folder='/home/lijintao/darknet/scripts/VOCdevkit/VOC2007/JPEGImages/'#地址是所有圖片的儲存地點
    dest='/home/lijintao/darknet/train.txt' #儲存train.txt的地址
    dest2='/home/lijintao/darknet/val.txt'  #儲存val.txt的地址
    file_list=os.listdir(source_folder)       #賦值圖片所在資料夾的檔案列表
    train_file=open(dest,'a')                 #開啟檔案
    val_file=open(dest2,'a')                  #開啟檔案
    for file_obj in file_list:                #訪問檔案列表中的每一個檔案
        file_path=os.path.join(source_folder,file_obj) 
        #file_path儲存每一個檔案的完整路徑
        file_name,file_extend=os.path.splitext(file_obj)
        #file_name 儲存檔案的名字,file_extend儲存副檔名
        file_num=int(file_name) 
        #把每一個檔案命str轉換為 數字 int型 每一檔名字都是由四位數字組成的  如 0201 代表 201     高位補零  
        if(file_num<150):                     #保留149個檔案用於訓練
            #print file_num
            train_file.write(file_name+'\n')  #用於訓練前149個的圖片路徑儲存在train.txt裡面,結尾加回車換行
        else :
            val_file.write(file_name+'\n')    #其餘的檔案儲存在val.txt裡面
    train_file.close()#關閉檔案
val_file.close()

5.修改voc_label.py

sets=[('2007', 'train'), ('2007', 'val')]
classes = ["s", "m", "l", "xl", "xxl"]
os.system("cat 2007_train.txt 2007_val.txt > train.txt")  #倒數第二行改成這樣,最後一行刪掉

6.執行voc_label.py

在scripts下生成了2007_train.txt 和 2007_val.txt,分別存放了訓練集和測試集圖片的路徑。

7.下載預訓練模型

wget https://pjreddie.com/media/files/darknet53.conv.74

8.修改cfg/voc.data

classes= 5 #classes為訓練樣本集的類別總數 
train  = /home/lijintao/darknet/scripts/2007_train.txt #train的路徑為訓練樣本集所在的路徑 
valid  = /home/lijintao/darknet/scripts/2007_val.txt #valid的路徑為驗證樣本集所在的路徑 
names = data/voc.names #names的路徑為data/voc.names檔案所在的路徑 
backup = backup

9.修改data/voc.names

s
m
l
xl
xxl
#這個根據自己需要修改

10.修改cfg/yolov3-voc.cfg

[net]
# Testing
# batch=1
# subdivisions=1
# Training
 batch=64            
 subdivisions=8    #---------------修改
......
[convolutional]
size=1
stride=1
pad=1
filters=30        #---------------修改
activation=linear
[yolo]
mask = 6,7,8
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=5        #---------------修改
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=0            #---------------修改
......
[convolutional]
size=1
stride=1
pad=1
filters=30        #---------------修改
activation=linear

[yolo]
mask = 3,4,5
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=5        #---------------修改
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=0        #---------------修改
......
[convolutional]
size=1
stride=1
pad=1
filters=30        #---------------修改
activation=linear

[yolo]
mask = 0,1,2
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=5        #---------------修改
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=0        #---------------修改
標記的地方需要修改,classes是你的分類數,filters=3*(classes+5),random=0即關閉多尺度訓練

如果還不是很清楚,可以看一下這篇blog

11.開始訓練

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 -gpus 0,1,2,3

12.開始測試

./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_10000.weights data/1.jpg

這樣就生成了一開始的圖片了。

這中間可能會遇到一些問題,要耐心分析並去網上多搜答案,我也是小白,如果有什麼錯誤,還望大佬們不吝指正,不說了,修理伺服器去了。

相關推薦

yolov3訓練自己資料可參考文章

參考部落格原址: https://blog.csdn.net/u012966194/article/details/80004647 這篇文章將介紹編譯darknet框架開始,到整理資料集,到用yolo網路實現一個內部資料集中號碼簿的定

Yolov3訓練自己資料+資料分析

訓練自己到資料集已經在上一篇文中說明過了,這一篇著重記錄一下資料分析過程 資料分析 1. mAP值計算 1)訓練完成後,執行darknet官方程式碼中到 detector valid 命令,生成對測試集到檢測結果,命令如下: ./darknet detector va

【YOLO初探】之 keras-yolov3訓練自己資料

寫在前面 如何使用官方資料集參看上一篇文章《【YOLO初探】之 使用官方資料集做目標分類》 傳送門:https://blog.csdn.net/plSong_CSDN/article/details/85108256 這裡,筆者使用了260張訓練資料,完成了人臉中“眼睛”、“鼻子”、“嘴

YOLOv3訓練自己資料時的速度慢問題

YOLOv3以速度快著稱,但是在訓練自己的資料集時發現儘管在命令中同時開啟了多塊gpu,但速度仍舊很慢。按照其他人的訓練日誌可以看出64batch的單gpu訓練,每次迭代大約需要不到1秒但是自己在訓練時卻需要好幾個小時,首先想到的是自己的資料集是否圖片解析度太高,比較之後發現

Yolov3程式碼分析與訓練自己資料

   現在要針對我們需求引入檢測模型,只檢測人物,然後是影象能側立,這樣人物在裡面佔比更多,也更清晰,也不需要檢測人佔比小的情況,如下是針對這個需求,用的yolov3-tiny模型訓練後的效果。      Yolov3模型網上也講爛了,但是總感覺不看程式碼,不清楚具體實現看講解總是不清晰,在這分

使用pytorch版faster-rcnn訓練自己資料

使用pytorch版faster-rcnn訓練自己資料集 引言 faster-rcnn pytorch程式碼下載 訓練自己資料集 接下來工作 參考文獻 引言 最近在復現目標檢測程式碼(師兄強烈推薦F

《錯誤手記-01》 facenet使用預訓練模型fine-tune重新訓練自己資料報錯

環境資訊:windows10+python3.5+tensorflow1.6.0 問題描述: 在自己的訓練集上跑train_softmax.py.  引數: --logs_base_dir F:/work/runspace/log/  --models_base_

Kaldi中thchs30訓練自己資料的步驟

一、資料準備過程 網上下載的thchs-openslr資料集需要換成自己的資料集,包含兩個資料夾:data_thchs30和resource。下面講解如何搞定這一部分。 資料集在data_thchs30檔案中,包含四個部分(data、train、dev、test)。 data資料夾中包

Fast RCNN 訓練自己資料 (1編譯配置)

FastRCNN 訓練自己資料集 (1編譯配置) FastRCNN是Ross Girshick在RCNN的基礎上增加了Multi task training整個的訓練過程和測試過程比RCNN快了許多。別的一些細節不展開,過幾天會上傳Fast RCNN的論文筆記。FastRCNN mAP效能上略有上升。Fa

FCN訓練自己資料(person-segmentation)、SIFT-FLOW、SBD和VOC實驗總結

最近花了將近一週的時間,基於提供的原始碼,通過參考網上的部落格,跑通了FCN在三個資料集上的訓練以及測試。在這裡寫下總結,即是記錄,又希望能夠對其他剛剛接觸FCN的人有所幫助。 FCN的原始碼地址:https://github.com/shelhamer/fcn.berkeleyvision.o

windows10+GPU下caffe資料Lmdb格式製作+訓練自己資料

最近做人臉識別專案,想用到caffe訓練自己的資料,電腦作業系統為win10+GPU,這裡對caffe-windows配置、資料集製作、訓練資料都做一些介紹。(無GPU配置的看我這個部落格)。如果你用的是vs2015,那麼下面介紹的caffe不適合,要用BVLC wind

如何利用caffe訓練自己資料

這篇博文主要參考了另一位博主https://blog.csdn.net/hellohaibo,在此向他表示感謝 首先,博主今天的caffe崩了,毫無徵兆的崩了,具體表現為博主想做一個更大的資料集,但是在生成lmbd檔案時永遠生成的是一個沒有名字的資料夾,可是博主已經在指定的example目錄裡寫了

Faster-RCNN 訓練自己資料的坑記錄

主要照這篇部落格進行訓練配置,因為沒有GPU所以好多坑,CPU訓練可以參見這篇部落格 正所謂,跑通了的都一樣,錯誤千萬樣。按照教程來也是坑多 訓練: python train_faster_rcnn_alt_opt.py --net_name ZF --weights

驗證性試驗:yolov3訓練coco資料

Yolov3 中作者列出了使用coco資料集訓練的資料結果,其中顯示在輸入圖片大小為416x416的時候,模型的mAP大小為31%,當輸入圖片大小為608x608的時候,模型的mAP達到33%,論文中結果截圖如下: 我們做了個實驗,目的是驗證當我們自己訓練的時候

FastRCNN 訓練自己資料(二)——修改讀寫介面

這裡樓主講解了如何修改Fast RCNN訓練自己的資料集,首先請確保你已經安裝好了Fast RCNN的環境,具體的編配編制操作請參考我的上一篇文章。首先可以看到fast rcnn的工程目錄下有個Lib目錄這裡下面存在3個目錄分別是:datasetsfast_rcnnroi_d

FastRCNN 訓練自己資料(一)——編譯配置

FastRCNN是Ross Girshick在RCNN的基礎上增加了Multi task training整個的訓練過程和測試過程比RCNN快了許多。別的一些細節不展開,過幾天會上傳Fast RCNN的論文筆記。FastRCNN mAP效能上略有上升。Fast RCNN中,提取OP的過程和訓練過程仍

py-faster-rcnn訓練自己資料需要修改的引數

faster rcnn預設有三種網路模型ZF(小)、VGG_CNN_M_1024(中)、VGG16 (大) 訓練圖片大小為500*500,類別數1。 修改VGG_CNN_M_1024模型配置

Fast RCNN 訓練自己資料 (2修改資料讀取介面)

Fast RCNN訓練自己的資料集 (2修改讀寫介面) 這裡樓主講解了如何修改Fast RCNN訓練自己的資料集,首先請確保你已經安裝好了Fast RCNN的環境,具體的編配編制操作請參考我的上一篇文章。首先可以看到fast rcnn的工程目錄下有個Lib目錄 這裡下面存在3個目錄分別是: datase

YOLOv3訓練WIDER_FACE資料

- 剛開始想訓練的時候忘了百度一下沒有沒可以直接轉換的指令碼。。。就自己寫了。。。- 後來發現網上的轉換指令碼基本都是把 WIDER_FACE先轉換成VOC再用yolo提供的準換工具,轉成yolo所需格式。。。- 自己寫的是直接轉成yolo所需的格式的,版本python3.6

YOLO訓練自己資料配置檔案修改.md

VOC2016 最早1093張personVOC2017 劉堯792張personVOC2018 恩德792張person_handVOC2019 person_head_hand(hand/hand1) 但是可以不生成hand1的labelVOC2020 person_head_hand size=224*