交通标志检测

类型     对应的编号
停车场     1 Parking
停车让行     2  stop at intersection
右侧行驶     3   keep right
向左和向右转弯     4 turn left or right
大客车通行     5 Large vehicles pass
左侧行驶     6 keep left
慢行     7 slow down
机动车直行和右转弯     8 motor vehicle go straight and turn right
注意行人     9 attention pedestrians
环岛行驶     10 driving around the island
直行和右转弯     11 go straight and turn right
禁止大客车通行     12 large vehicles limit  
禁止摩托车通行     13  motor limit
禁止机动车通行     14  motor vehicle limit
禁止非机动车通行     15 no-motor vehiclelimit
禁止鸣喇叭     16 no Horn(silence)
立交直行和转弯行驶     17 Direct and turning traffic at interchanges
限制速度40公里每小时     18 40km/h limit
限速30公里每小时     19 30km/h limit
鸣喇叭     20 Horn
其他     0 other

 

选出标注错误的图片,
然后csv2txt.py ->gt_ID_card.txt
然后txt2xml.py ->xml

训练自己的数据
每次训练前需要把output和data/cache目录删掉,
下载在imagenet上预训练好的vgg16模型,放在data/imagenet_weight目录下,
需要一次训练好才会生成文件.后续需要添加
训练次数在train_faster_rcnn.sh 和test_faster_rcnn.sh 里修改
脚本调用的生成模型在output中,而且默认迭代70000次。如果中途停止了,想运行测试脚本。要修改test脚本中迭代值。否则会给出找不到模型的错误

使用自己的数据
1,所有图片放到/tf-faster-rcnn/data/VOCdevkit2007/VOC2007/JPEGImages中。
2,所有xml文件放到/tf-faster-rcnn/data/VOCdevkit2007/VOC2007/Annotations中。
3,修改tf-faster-rcnn/data/VOCdevkit2007/VOC2007/ImageSets/Main下的4个文件:
(1)test.txt 测试图片名称,数量占总图片数量的50%
(2)trainval.txt 训练/验证图片名称,数量占总图片数量的50%
(3)train.txt 训练图片名称,数量占 训练/验证(上一条) 总数的50%
(4)val.txt 验证图片名称,数量占 训练/验证总数的50%
最后修改tf-faster-rcnn/lib/datasets/pascal_voc.py,把self._classes定义的类别填入我们自己要识别的类别.

首先保证./tf-faster-rcnn/tensorboard/vgg16/voc_2007_trainval/default文件夹为空,因为训练的时候会从这个目录下开始

1、制作自己的数据集
2、修改训练、测试命令脚本
cd experiments/scripts/
vim train_faster_rcnn.sh
vim test_faster_rcnn.sh

######################################

这里修改的是迭代次数

case ${DATASET} in
  pascal_voc)
    TRAIN_IMDB="voc_2007_trainval"
    TEST_IMDB="voc_2007_test"
    STEPSIZE="[5000]"
    ITERS=10000
    ANCHORS="[8,16,32]"
    RATIOS="[0.5,1,2]"
3、修改超参数

cd lib/model/
vim config.py


在config.py中可以修改学习率、动量等超参数。
4、修改./lib/datasets/pascal_voc.py。
self._classes = ('__background__',  # always index 0
                     'digital tube')
                     
                     5、修改tools/demo.py里面的’CLASSES‘、’NETS’以及’DATASETS’变量为和自己的数据集相关,修改main函数里面测试图片名,即可利用训练好的模型测试
                     这里有两处修改
(1)修改NETS名称。cpkt文件中的数字要跟生成模型的迭代次数一致,否则就找不到文件了。

NETS = {'vgg16': ('vgg16_faster_rcnn_iter_10000.ckpt',),'res101': ('res101_faster_rcnn_iter_110000.ckpt',)}
DATASETS= {'pascal_voc': ('voc_2007_trainval',),'pascal_voc_0712': ('voc_2007_trainval+voc_2012_trainval',)}

(2)main函数中修改 类别数。我这里是2。数字应该是类别+1。1是背景。

net.create_architecture("TEST", 2, tag='default', anchor_scales=[8, 16, 32])

mistake:
1\TypeError:write() argument must be str,not bytes

open('classifier/features.pkl', 'w').write(pickle.dumps(features))
to open('classifier/features.pkl', 'wb').write(pickle.dumps(features))

####################################################################

tools/demo.py测试用,需要加入测试图片的路径
lib/datasets/pascal_voc.py
line[2]==line[4]
line[1]==line[7]
line[3]==line[5]
line[6]==line[8]

文件名,x1,y1,x2,y2,x3,y3,x4,y4,class_name
         1        2      3       4       5        6       7       8
        bbox[0],bbox[1],bbox[2],bbox[1],bbox[2],bbox[3],bbox[0],bbox[3]

你可能感兴趣的:(计算机视觉)