TensorFlow.Keras和TensorRT的检测效果对比
1. 背景说明
通过安装在路口的交通用摄像头采集的数据,对特定路口进行路况观察,以便灵活调度警力。
观察对象(检测类别)
行人(person)
带自行车的人(bicycle_person)
带摩托车的人(bike_person)
汽车(car)
2. 数据集说明
数据类别:person、bicycle_person、bike_person、car
数据量:训练数据量:10501,验证数据量:2392,测试数据量:3639
:1920 x 1080 x 3
图像类型:JPEG
示例图

3. 网络组成
ResNet + SSD
ResNet:在传统的深度学习方案下,提出了残差结构的概念,以解决当网络深度足够深以后带来的网络性能下降的问题。
常见的ResNet网络:ResNet18、ResNet50、ResNet101
网络结构

本次使用ResNet18和ResNet50
SSD:在VGG的深度网络基础上,对最后几层进行特征提取,达到目标检测的效果。
常见的SSD网络:SSD300、SSD512
网络结构

本次使用SSD512
4. 开发环境
TensorFlow.Keras的主要环境(用于训练和推理)
python==3.6.8
tensorflow-gpu==1.14.0
numpy==1.15.0
scipy==1.1.0
h5py==2.10.0
protobuf==3.10.0
TensorRT的主要环境(用于推理加速)
Jetson NANO使用Jetpack 4.4,tensorrt==7.1.3.0
Jetson NANO使用Jetpack 4.4,tensorflow-gpu==1.15.0
python==3.6.8
tensorflow-gpu==1.14.0
numpy==1.15.0
tensorrt==7.2.3.4
5. 使用方法
TensorFlow.Keras
模型准备:将model中的h5模型复制到代码路径下
运行代码:进入代码路径后,运行Test.py即可
TensorRT
模型准备:将model中的h5模型复制到代码路径下
模型转换:进入代码路径,运行convert_H5_to_PB.py,将h5模型转换成pb模型
运行代码:准备好pb模型后,运行TensorRT.py,程序会自动生成用于推理的engine文件(中间包含了转换uff模型的过程,uff模型没有显性导出)
6. 检测结果对比
预览效果



person & bicycle_person
精度(仅作参考,模型尚未训练到最佳状态)

时间

ResNet18+SSD512:TensorRT相比Tensorflow.Keras,检测时间减少了47.8%
ResNet50+SSD512:TensorRT相比Tensorflow.Keras,检测时间减少了38.3%
7. 参考链接
测试代码链接:
视频效果显示:https://www.bilibili.com/video/BV1FM4y1C75E
工程参考: