yolov3(二:車牌識別)

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.訓練過程(以其中一次過程爲例)

 https://github.com/Feeyao/License-plate-recognition/blob/master/image/chart-iter_34900_42700_65000_74700_149000.png

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.。。。。。。一些思考,歡迎留言討論。

 

發佈了76 篇原創文章 · 獲贊 108 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章