Python旧版课程库
Python第11期 - 人工智能查看课程总览

330 交通标志分类 1

主要内容

  1. 项目背景
  2. 问题描述
  3. 解决方案
  4. 原理介绍
  5. 环境搭建

项目背景

随着经济的不断发展,公路交通得到了快速的发展,但交通事故以及交通拥堵的发生也越来越频繁。而交通标志作为公路交通系统的重要组成部分,对交通安全运行的引导作用明显。而在无人驾驶领域,如何让计算机能够自动准确地识别行驶过程中遇到的交通标志一直是一项充满挑战性的任务。因此,通过人工智能技术实现对交通标志的分类识别具有十分重要的现实意义,能够有效的推动无人驾驶的发展。

问题描述

本项目属于计算机视觉中的三大基础任务之一——图像分类。图像分类是对给定的图片确定图片所属的类别,图像分类示例如图1所示。目前主流的图像分类算法都是基于深度卷积神经网络,利用大量的训练图片和对应的图片类别来对神经网络进行训练,通过反向传播算法,使神经网络不断拟合训练数据,充分挖掘图片特征与类别之间的关联,获取最佳的模型参数,最后利用训练好的数据来对未知图片进行类别预测。

通过本项目能够解决以下问题:

1.理解图像分类的任务定义和解决思路。

2.理解深度卷积神经网络的工作原理。

3.掌握利用pytorch搭建卷积神经网络的方法

4.熟悉深度卷积神经网络的训练和测试过程。

解决方案

为了实现对各种交通标志的分类预测,本项目基于深度学习技术,通过搭建卷积神经网络模型(具体知识请参考:331 卷积神经网络介绍),依靠大量的数据训练得到最佳的模型参数。

本项目首先制作了交通标志分类的数据集,分为训练集(train)、验证集(val)和测试集(test)。其中训练集用于训练,得到最佳的数据模型;验证集用于训练过程中产生的模型进行评测;测试集用于图片测试。

本项目采用ResNet-34卷积神经网络作为本项目的分类模型。在训练过程中,训练集中的训练图片被批量送入卷积神经网络模型中,经过一系列的特征能够提取等操作之后得到输入图像的深层特征值,再经过全连接层以及Softmax操作,得到相应的预测值。损失函数被设计用于反应预测值与实际值之间的差异,利用梯度下降算法,指导下一步训练的正确方向,通过不断的反复迭代训练,使得预测值不断逼近真实值,验证集用于验证每次训练后的模型性能,保存最佳的网络模型。而在预测过程中,本项目直接将测试图片输入训练好的网络模型中,直接得到待测交通标志的one-hot类别标签,根据类别标签,我们就可以得到输入图像所属的交通标志类别。测试过程中,本项目的预测流程如下图所示。

原理介绍

ResNet34

该模型共有33个卷积层(Conv)和一个全连接层,其中,卷积层用于提取图像特征,全连接层作为输出层,输出最终的采用one-hot编码形式的类别信息。为了提高特征提取的效率,中间隐藏层每两个卷积层都采用残差连接的方式组成残差块,使模型能够在反向传播中有效改善梯度消失的现象,残差块如下图所示

多个残差块进行连接,最后由全连接层进行输出,形成整体的网络结构,网络结构如下图所示。

交叉熵损失函数