0.按照:https://blog.csdn.net/Darlingqiang/article/details/103889245步驟訓練自己的模型
1.下載[data.zip]:鏈接: https://pan.baidu.com/s/1NahLmB5YajUJT_Gk1OgN7A 提取碼: xre1
2.進入data/voc目錄下運行voc_label.bat重新生成2019_train.txt, 2019_val.txt.
3.修改cfg/lpr.cfg。如下:
[net]
# Testing
batch=1
subdivisions=1
# Training
#batch=64
#subdivisions=8
#train width, height
#width=416
#height=416
#test width, height
width=608
height=608
channels=3
momentum=0.9
decay=0.0005
angle=5
saturation = 1.5
exposure = 1.5
hue=.1
learning_rate=0.001
burn_in=1000
max_batches = 220000
policy=steps
steps=70000,200000
scales=.1,.1
[convolutional]
batch_normalize=1
filters=16
size=3
stride=1
pad=1
activation=leaky
[maxpool]
size=2
stride=2
[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=leaky
[maxpool]
size=2
stride=2
[convolutional]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=leaky
[maxpool]
size=2
stride=2
[convolutional]
batch_normalize=1
filters=128
size=3
stride=1
pad=1
activation=leaky
[maxpool]
size=2
stride=2
[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky
[maxpool]
size=2
stride=2
[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky
[maxpool]
size=2
stride=1
[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky
###########
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky
[convolutional]
size=1
stride=1
pad=1
filters=225
activation=linear
#k-mean anchors
#12,27, 15,34, 18,46, 23,62, 30,85, 198,140
#12,28, 16,39, 21,55, 28,79 152,101, 241,186
#12,27, 15,34, 17,45, 23,61, 30,84, 198,140
#12,28, 14,49, 16,37, 21,55, 28,79, 198,140
#原anchors
#10,14, 23,27, 37,58, 81,82, 135,169, 344,319
[yolo]
mask = 3,4,5
#train anchors
#anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319
#test anchors
anchors = 10,14, 23,27, 37,58, 81,82, 190,240, 500,465
classes=70
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
[route]
layers = -4
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[upsample]
stride=2
[route]
layers = -1, 8
[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky
[convolutional]
size=1
stride=1
pad=1
filters=225
activation=linear
[yolo]
mask = 0,1,2
#train anchors
#anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319
#test anchors
anchors = 10,14, 23,27, 37,58, 81,82, 190,240, 500,465
classes=70
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
lpr.names
plate
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
G
H
J
K
L
M
N
P
Q
R
S
T
U
V
W
X
Y
Z
澳
川
鄂
甘
贛
港
貴
桂
黑
滬
吉
冀
津
晉
京
警
遼
魯
蒙
閩
寧
青
瓊
陝
蘇
皖
湘
新
學
渝
豫
粵
雲
浙
藏
lpr.data
classes= 70
train = ../data_lpr/voc/2019_train.txt
valid = ../data_lpr/voc/2009_val.txt
names = ../data_lpr/lpr.names
#backup = plate_0.01
backup = backup/
4. 執行
darknet.exe detector train data/lpr.data cfg/lpr.cfg
5.訓練過程(以其中一次過程爲例)
6.測試
./darknet detector test data_lpr/lpr.data data_lpr/lpr.cfg yolov3-tiny_140000.weights /home/sun/yolo/darknet/data_lpr/voc/VOCdevkit/VOC2019/Test/蘇E38MH8.jpg
summary:
yolov3識別雖然針對小目標進行了針對行的改進,但是這裏的檢測效果及其容易收到外界的影響,改進思路;
1.改進整個網絡框架,使得yolov3變成針對小目標檢測的網絡,加入FPN更加深層次的網絡結構。
2.僅使用yolov3做車牌檢測與定位,然後針對檢測區域,採用GAN網絡做增強處理,再接着使用ocr識別字符,可有效的增加精度和魯棒性。
3.。。。。。。一些思考,歡迎留言討論。