打印
[STM32]

车辆颜色识别

[复制链接]
1456|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一路向北lm|  楼主 | 2018-7-16 08:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 一路向北lm 于 2018-7-16 08:29 编辑

转载博客 https://blog.csdn.net/cesc_treze ... 61935?from=timeline 仅供大家参考学习

识别目标包括:

1.车牌号

2.车辆颜色

3.车辆品牌,具体到如奥迪A6之类

4.驾驶人是否系安全带

5.是否贴有年检标志

实验平台

开发平台使用Caffe,参考了博客小咸鱼_的实现(pretrained CaffeNet+finetune),本文主要在其基础上补充一些实现的细节。训练好的模型已经分享到百度云。 链接: https://pan.baidu.com/s/1eRSDFlo 密码: ahyx

1. 训练数据准备

在caffe/examples下建立目录car_color,并在其下面建立几个子目录:

car_color/data:存放训练和验证数据

car_color/models:存放prototxt和训练得到的模型

car_color/pre_train_models:存放预训练的CaffeNet

data目录

首先新建文件color_map.txt,存放待分类的颜色,这里我们划分了8种颜色

black
white
red
blue
green
gray
yellow
brown

对每种颜色划分train和valid数据:

# ratio for train and valid data
train_ratio = 0.8
val_ratio = 0.2

if not os.path.exists('train/' + color):
    os.makedirs('train/' + color)
if not os.path.exists('val/' + color):
    os.makedirs('val/' + color)

num = len(os.listdir('raw_data/' + color))
print("Folder {} has {} images.".format(color, num))

for file in os.listdir('raw_data/' + color):
    oldfile = 'raw_data/{}/{}'.format(color, file)
    if train_num > 0:
        newfile = 'train/{}'.format(file)
        shutil.copyfile(oldfile, newfile)
        train_num -= 1
    elif val_num > 0:
        newfile = 'val/{}'.format(file)
        shutil.copyfile(oldfile, newfile)
        val_num -= 1
    else:
        pass

创建train.txt和val.txt,用于lmdb数据库的生成:

prefix = '/your/path/caffe/examples/car_color/data/'
def make_dict(syn_file):
    i = 0
    with open(syn_file, 'r') as df:
        for kv in [d.strip().split(' ') for d in df]:
            dict[kv[0]] = i; i = i + 1
dict = {}
make_dict('color_map.txt')

# list file directories
command = 'cd %s%s; find -name *.jpg | cut -d ''/'' -f2-3 >train.txt' % (prefix, train)
system(command)
command = 'cd %s%s; find -name *.jpg | cut -d ''/'' -f2-3 >val.txt' % (prefix, val)
system(command)

# add label
train_in = open(prefix + train + 'train.txt')
val_in = open(prefix + val + 'val.txt')
train_out = open(prefix + 'train.txt', 'w')
val_out = open(prefix + 'val.txt', 'w')
for d in train_in:
    train_out.write(d[0:len(d)-1] + ' ' + str(dict[d.strip().split('/')[0]]) + '\n')
for d in val_in:
    val_out.write(d[0:len(d)-1] + ' ' + str(dict[d.strip().split('/')[0]]) + '\n')

生成的train.txt形如:

blue/016_011_00011.jpg 3
brown/001_001_00005.jpg 7
brown/002_002_00001.jpg 7
brown/002_002_00003.jpg 7
brown/003_001_00002.jpg 7
brown/006_001_00003.jpg 7
...

models目录和pre_train_models目录
1. 从models/bvlc_reference_caffenet下拷贝train_val.prototxt、deploy.prototxt和solver.prototxt这三个文件到examples/ car_color/models,并修改对应的路径。
2. 修改train_val.prototxt中fc8的名称和输出层节点数。
3. 下载预训练的CaffeModel至目录examples/car_color/pre_train_models。
篇幅问题不做赘述,具体可以参考小咸鱼_的博客。

生成lmdb数据库和图像均值

./examples/car_color/create_imagenet.sh
./examples/car_color/make_imagenet_mean.sh

2. 开始训练
./build/tools/caffe train -solver examples/car_color/models/solver.prototxt -weights examples/car_color/pre_train_models/bvlc_reference_caffenet.caffemodel
这里有必要把初始学习率设低一些,否则很难收敛。我用的是0.001。
最终实验时每个类别的训练和评估分别用了50/10张图片。
训练速度比我想象的要更快,50个Iter后Valid accuracy就到了72.5%,150个Iter后基本稳定在95%。
3. 实验结果
I0518 11:12:40.746090 12784 solver.cpp:341] Iteration 1000, Testing net (#0)
I0518 11:12:40.938202 12784 solver.cpp:409]     Test net output #0: accuracy = 0.975
I0518 11:12:40.938266 12784 solver.cpp:409]     Test net output #1: loss = 0.0606646 (* 1 = 0.0606646 loss)
I0518 11:12:40.938277 12784 solver.cpp:326] Optimization Done.
I0518 11:12:40.938285 12784 caffe.cpp:215] Optimization Done.



相关帖子

沙发
一路向北lm|  楼主 | 2018-7-16 08:30 | 只看该作者
仅供参考,

使用特权

评论回复
板凳
henangongda123| | 2018-7-16 18:14 | 只看该作者
车辆停到指定位置识别,有方案吗?

使用特权

评论回复
地板
一路向北lm|  楼主 | 2018-7-16 20:48 | 只看该作者
henangongda123 发表于 2018-7-16 18:14
车辆停到指定位置识别,有方案吗?

打算做个关于这方面的项目。

使用特权

评论回复
5
henangongda123| | 2018-7-16 22:30 | 只看该作者
一路向北lm 发表于 2018-7-16 20:48
打算做个关于这方面的项目。

我就在搞,方案还没确定

使用特权

评论回复
6
123987| | 2018-7-17 16:58 | 只看该作者
颜色识别也要训练?搞不懂。另外不知道你看过一个小品没有。冯巩背个包代替安全带,请问你怎么识别驾驶员是系的安全带还是包带?车辆品牌识别。乖乖,高大上哦!呵呵!

使用特权

评论回复
7
一路向北lm|  楼主 | 2018-7-17 20:28 | 只看该作者
123987 发表于 2018-7-17 16:58
颜色识别也要训练?搞不懂。另外不知道你看过一个小品没有。冯巩背个包代替安全带,请问你怎么识别驾驶员是 ...

好无奈啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

277

主题

3805

帖子

76

粉丝