车辆搜索 -使用triplet loss 训练车辆识别模型

最近读了LEARNING A REPRESSION NETWORK FOR PRECISE VEHICLE SEARCH 论文,将从中所了解的信息在此记录下来。

背景及模型介绍

此论文主要是讨论车辆的识别问题。虽然每个车辆都有唯一的车牌号,但是监控摄像头并不是针对车牌号拍照的。而且有些监控摄像头精度也并不高,有时并不能很清晰的拍摄出车牌号码。再者,一些相似的数字与字母也不容易辩认,如0与O,8与B,D与O。另外也有人会遮挡车牌或涂改车牌。所以,除了车牌号我们还需要从别的方面来分辨车辆是否是同一台车。对于这个问题,我们最先考虑到的是贴年检标志的地方。一方面这个是强制要求必须贴的;另一方面是每个人有自己的习惯,贴的顺序、排列样子会有差别。另外还可以比较车身上的装饰,吊饰,刮痕等这些细微的特征。
车辆的识别与人脸识别是有差异的。同型号同颜色的车辆很多,我们需要进行比较车辆身上更细微的特征。如果用与人脸识别一样的模型来训练不容易有收获。故本文对此提出了改进,增加了对ancor图片的车型号与颜色的分类任务。整个模型结构如下:
vehicle search model
从上图可以看出,输入的数据是ancor, positive, negative图片,三张图片通过CNN网络,在Fbase层提取出图片的特征,在此阶段我们可以选择使用imagenet上的模型,如VGG, Inception, ResNet等,然后在Fbase后分成了两个分支,一个是训练triplet loss的,通过学习ancor和positive 图片的相似及ancor与negative 图片的不同性,降低triplet loss, 学习到车辆的细微的特征;另一个分支用于学习ancor图片的车辆型号与颜色的分类信息,并把这个分支的F_acs层学习到的特征,传给triplet loss分支,并与分支F_sls1层的输出一起拼接起来(即concate)作为F_sls2层的输入,这样做是为了让这个分支只关注细微的特征。模型的输出就是model, color, triplet_loss。

模型搭建

根据论文中描过的模型,使用keras实现,数据来源于VehcileID dataset, 如下:

#use triplet identify the vehicle
from keras.applications.inception_v3 import InceptionV3
from keras.callbacks import EarlyStop, ReduceLROnPlateau, ModelCheckpoint
from keras.layers import Dense, Input, Lambda
from keras.models import Model


LEARNING_RATE = 0.00001
IMG_WIDTH = 299
IMG_HEIGHT = 299
NBR_MODELS = 250
NBR_COLORS = 7
INITIAL_EPOCH = 0
#define the model, we get imagenet weights from InceptionV3, but don't need the top layer
inception = InceptionV3(include_top = False, input_tensor = None, input_shape= (IMG_WIDTH, IMG_HEIGHT, 3), pooling = 'avg')
f_base = incepti
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值