智慧城市交通系列之车辆属性识别(三)

序言

该项目实现过程基于此仓库:车辆检测和多标签属性识别,在此基础上进行优化和修改。

一、车辆属性识别

车辆属性识别,可以分为两部分:一是车辆检测,二是多标签分类;而车辆检测就是我们通常用到的目标检测算法,在这里就没必要多说,我直接使用了yolov5s的coco权重,在检测时剔除其他标签,只保留了车辆的标签:car、bus、truck。

第一部分理解起来相对比较简单,重点来讲多标签分类,什么是多标签分类?通常我们接触到的分类算法往往是一个标签对应一张图片,即这张图是猫,那对应的标签就是猫,如果是狗,那对应的标签就是狗,那有没有可能一张图中即包含了猫也包含了狗呢?答案肯定是有的。
在这里插入图片描述

在这些类型的问题中,我们有一组目标变量,被称为多标签分类问题。那么,这两种情况有什么不同吗? 很明显,有很大的不同,因为在第二种情况下,任何图像都可能包含不同图像的多个不同的标签。(重新思考一下,多标签和多分类有什么区别?),来看一下下面这张图(科比和GiGi)
在这里插入图片描述

假设我们给科比定义了几种属性:男人、黑人、成年人,那么同样的gigi身上也有几种属性:女人、黑人、未成年人。对于多分类任务来说,男人和女人是相互对立的,即一个实例不可能同时属于男人和女人,同样的也不可能同时属于成年人或者未成年人,只能是某一种属性分类,简而言之,有多个类别,但每个实例只分配一个,因此这些问题被称为多类分类问题。

回顾一下这张图片,科比被定义为男人、黑人、成年人类型。但不同的是,这一次,每个人都有可能被分成一个或多个不同的类别。所以每个实例都可以使用多个类别进行分配。因此,这些类型的问题被称为多标签分类问题。

那么在这个项目中,车辆的属性一共定义为了三种标签:车辆类型、颜色、朝向,在此我只用了其中两种:车辆类型、颜色。

检测出来的效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用于视频检测的效果如下:
在这里插入图片描述

二、模型训练

模型训练在开头的github仓库中有提到,主要是多标签的训练,将原话搬到这里:

训练过程选择交叉熵作为损失函数,需要注意的是,由于是多标签分类,故计算loss的时候需要累加各个标签的loss,其中loss = loss_color + loss_direction + 2.0 * loss_type,根据经验,将车辆类型的loss权重放到到2倍效果较好。

另一方面,训练分为两步:(1). 冻结除了Resnet-18除全连接层之外的所有层,Fine-tune训练到收敛为止;(2).打开第一步中冻结的所有层,进一步Fine-tune训练,调整所有层的权重,直至整个模型收敛为止。

因为我只使用了该仓库的多标签分类权重,没有重新训练,主要还是没有数据,所以这部分没有训练过程,感兴趣的同学可以自己收集数据进行训练。

完整的代码有时间我再整理上传到github上。

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值