# project-vehicle-detection **Repository Path**: d___y/project-vehicle-detection ## Basic Information - **Project Name**: project-vehicle-detection - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2018-12-05 - **Last Updated**: 2025-02-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 车辆检测及型号识别系统设计 ## 简介 ### 1. 背景 车辆检测及型号识别广泛应用于物业,交通等的管理场景中。通过在停车场出入口,路口,高速卡口等位置采集的图片数据,对车辆的数量型号等进行识别,可以以较高的效率对车型,数量信息等进行采集。通过采集的数据,在不同的场景中可以辅助不同的业务开展。如商场停车位的规划,路况规划,或者公安系统追踪肇事车辆等等。 ### 2. 数据集信息 一个车辆分类的数据集,数据集分类参考数据集中的labels.txt文件,共48856张图片 其中43971张作为训练集,4885张作为验证集。 ### 3. 内容 利用tensorflow提供的slim图片分类框架和物体检测框架实现一个可以对任意图片进行车辆检测的系统。 ### 4. 成果 - **成果1:** 一整套可以运行的系统 - **成果2:** web演示视频 ## 文件说明 ### 1. ./code/car及./script代码说明 - **data: [数据文件地址](https://pan.baidu.com/s/1T0ymVZDuaXv3KoPZNYEipA)** (包含了3个冻结的pb文件、微软雅黑字体等,提取码rq39) - **object_detection:** 目标检测框架,用于检测汽车的位置信息; - **research:** 包含slim框架及图片预处理等文件; - **upload/loading.gif:** 加载过程中显示的gif图片; - **detection.py:** 实现图片汽车检测的功能; - **classification.py:** 实现图片汽车分类的功能; - **vehicle_detection.py:** 实现汽车检测及型号分类的功能(包含了图片格式转换、裁剪、背景填充等脚本); - **vehicle_detection.ipynb:** 在jupyter notebook上可直接运行 - **upload.py:** 实现在web界面上传图片及显示结果的功能 - **script:** 项目过程中用到的脚本 -create_vehicle_tf_record.py: 把目标检测的数据集生成record格式; -create_pascle_tf_record.py: 把PASCLE VOC2012数据集转成record格式; -export_inference_graph.py: 生成pb文件工具; -freeze_graph: 冻结pb文件; -labels.py: 把数据集的分类信息的txt文件改成检测所用的txt文件; -tfrecord_img.py: tfrecord转img图片格式; ##### 项目使用工具: ``` python 3.6 tensorflow 1.8 matplotlib protobuf Django ... ``` ### 2. 文档说明: ### - **第一周总结:** 确定方案,制作数据集(标注198张图片)利用ssd模型作汽车检测 - **第二周总结:** 在PASCLE VOC2012数据集的基础上做汽车检测,训练分类模型 - **第三周总结:** 分类模型的训练及参数调优,将训练的三个模型串行,实现一个完整汽车检测分类的模型 - **第四周总结:** web系统的搭建,对测试过程中出现的异常进行处理 - **项目总结报告:** 对前四周项目工作的总结及完善 | 时间 | 工作内容 | | - | - | | 2018.11.05~2018.11.11 项目第一周 | 组内讨论确定了系统整体的实现方案,自制了部分训练数据集,对SSD模型1进行了训练和测试。 | | 2018.11.12~2018.11.18项目第二周 | 使用全部的提供数据集对车辆型号识别的Inception-v4模型进行训练和测试。 | | 2018.11.19~2018.11.25项目第三周 | 模型融合工作及测试,包括对裁剪脚本的编写以及模型pb文件的生成;并对整体系统的测试结果进行了分析。 | | 2018.11.26~2018.12.02 项目第四周 | Web展示系统的搭建;进一步对一些细节问题进行改进和增添设计,如增加了基于PASCOL VOC2012数据集的SSD模型2的训练与测试,两个SSD模型的融合工作等。 | ### 3. 其他 - **代码流程:** 代码的整体流程图 - **演示视频:** 在网页上运行的完整视频,[视频链接](https://www.bilibili.com/video/av37561188/) ### 4. 模型、数据、论文地址 - **[车辆检测1模型](https://www.tinymind.com/executions/9zs475l7)** - **[车辆检测2模型](https://www.tinymind.com/executions/z8yebhgs)** - **[型号分类模型第一次训练](https://www.tinymind.com/executions/bmm8aijf)、[型号分类模型第二次训练](https://www.tinymind.com/executions/01s79z55)** - **[数据文件](https://pan.baidu.com/s/1T0ymVZDuaXv3KoPZNYEipA)**(包含了3个冻结的pb文件、微软雅黑字体等,提取码rq39) - [SSD paper](https://arxiv.org/abs/1512.02325)、[SSD github](https://github.com/weiliu89/caffe/tree/ssd) - [Inception-v4 paper](https://arxiv.org/pdf/1602.07261.pdf) ## 模型检测框架及评估 - ##### 车辆检测1模型(自制数据集):SSD检测框架 未进行IOU、mAP等评价标准评估,选用了循环1000次对1000张图片检测观察,该模型对95%上的汽车图片检测效果都可以把车辆的位置标出来,对汽车图片检测效果很好,但对于非汽车的物体容易识别成汽车(经测试,如鸟、飞机较为容易检测成汽车),出现过拟合的情况 - ##### 车辆检测2模型(PASCLE VOC2012数据集):SSD检测框架 通过测试图片观察,该模型对汽车图片的检测效果一般,但不会把非汽车物体检测成汽车,出现欠拟合的情况,与车辆检测1结合检测正好形成互补 - ##### 型号分类模型:Inception_v4框架 调整参数及两次训练过程,在验证集上准确率达到0.876 ## 主要异常及修复 - **png图片无法检测识别:** png格式图片转换成jpg格式输入检测 - **中文无法正常显示:** 下载微软雅黑字体传入代码中即可正常显示 - **web中第二次检测结果出现第一次检测的图片:** 在程序前添加清空输出文件夹的文件的代码 - **汽车裁减不完整:** 长宽大概裁减为原来的1.1倍,使裁减的区域增大,尽量使汽车能完整裁进去,最终财裁减效果主要还是取决于汽车检测1的结果 ## 检测单张图片单辆汽车时间统计 | 环境 | | -- | | OS:Linux | | CPU: Inter core i7 7700HQ 2.8GHz 4核 | | 显卡:M1200M 4G | | 硬盘:500G SSD + 500G 机械 | | 图片大小 | 检测时间 | | -- | -- | | 0~200KB | 5s | | 200~400KB | 9s | | 400~800KB | 15s | | 800~1.5MB | 21s | | 1.5~2MB | 27s | | 2~2.5MB | 32s |