English | 简体中文
环境要求: PaddleDetection版本 >= release/2.5 或 develop版本
PaddlePaddle和PaddleDetection安装
# PaddlePaddle CUDA10.1
python -m pip install paddlepaddle-gpu==2.2.2.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
# PaddlePaddle CPU
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
# 克隆PaddleDetection仓库
cd <path/to/clone/PaddleDetection>
git clone https://github.com/PaddlePaddle/PaddleDetection.git
# 安装其他依赖
cd PaddleDetection
pip install -r requirements.txt
- 详细安装文档参考文档
- 如果需要TensorRT推理加速(测速方式),请安装带
TensorRT版本Paddle
。您可以从Paddle安装包下载安装,或者按照指导文档使用docker或自编译方式准备Paddle环境。
PP-Vehicle提供了目标检测、属性识别、行为识别、ReID预训练模型,以实现不同使用场景,用户可以直接下载使用
任务 | 端到端速度(ms) | 模型方案 | 模型体积 |
---|---|---|---|
车辆检测(高精度) | 25.7ms | 多目标跟踪 | 182M |
车辆检测(轻量级) | 13.2ms | 多目标跟踪 | 27M |
车辆跟踪(高精度) | 40ms | 多目标跟踪 | 182M |
车辆跟踪(轻量级) | 25ms | 多目标跟踪 | 27M |
车牌识别 | 4.68ms | 车牌检测 车牌字符识别 |
车牌检测:3.9M 车牌字符识别: 12M |
车辆属性 | 7.31ms | 车辆属性 | 7.2M |
下载模型后,解压至./output_inference
文件夹。
在配置文件中,模型路径默认为模型的下载路径,如果用户不修改,则在推理时会自动下载对应的模型。
注意:
- 检测跟踪模型精度为公开数据集BDD100K-MOT和UA-DETRAC整合后的联合数据集PPVehicle的结果,具体参照ppvehicle
- 预测速度为T4下,开启TensorRT FP16的效果, 模型预测速度包含数据预处理、模型预测、后处理全流程
PP-Vehicle相关配置位于deploy/pipeline/config/infer_cfg_ppvehicle.yml
中,存放模型路径,完成不同功能需要设置不同的任务类型
功能及任务类型对应表单如下:
输入类型 | 功能 | 任务类型 | 配置项 |
---|---|---|---|
图片 | 属性识别 | 目标检测 属性识别 | DET ATTR |
单镜头视频 | 属性识别 | 多目标跟踪 属性识别 | MOT ATTR |
单镜头视频 | 车牌识别 | 多目标跟踪 车牌识别 | MOT VEHICLEPLATE |
例如基于视频输入的属性识别,任务类型包含多目标跟踪和属性识别,具体配置如下:
crop_thresh: 0.5
visual: True
warmup_frame: 50
MOT:
model_dir: https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_ppvehicle.zip
tracker_config: deploy/pipeline/config/tracker_config.yml
batch_size: 1
enable: True
VEHICLE_ATTR:
model_dir: https://bj.bcebos.com/v1/paddledet/models/pipeline/vehicle_attribute_model.zip
batch_size: 8
color_threshold: 0.5
type_threshold: 0.5
enable: True
注意:
- 如果用户需要实现不同任务,可以在配置文件对应enable选项设置为True。
- 如果用户仅需要修改模型文件路径,可以在命令行中--config后面紧跟着
-o MOT.model_dir=ppyoloe/
进行修改即可,也可以手动修改配置文件中的相应模型路径,详细说明参考下方参数说明文档。
- 直接使用默认配置或者examples中配置文件,或者直接在
infer_cfg_ppvehicle.yml
中修改配置:
# 例:车辆检测,指定配置文件路径和测试图片
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppvehicle.yml --image_file=test_image.jpg --device=gpu
# 例:车辆车牌识别,指定配置文件路径和测试视频
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_vehicle_plate.yml --video_file=test_video.mp4 --device=gpu
- 使用命令行进行功能开启,或者模型路径修改:
# 例:车辆跟踪,指定配置文件路径和测试视频,命令行中开启MOT模型并修改模型路径,命令行中指定的模型路径优先级高于配置文件
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppvehicle.yml -o MOT.enable=True MOT.model_dir=ppyoloe_infer/ --video_file=test_video.mp4 --device=gpu
# 例:车辆违章分析,指定配置文件和测试视频,命令行中指定违停区域设置、违停时间判断。
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_illegal_parking.yml \
--video_file=../car_test.mov \
--device=gpu \
--draw_center_traj \
--illegal_parking_time=3 \
--region_type=custom \
--region_polygon 600 300 1300 300 1300 800 600 800
- rtsp推拉流
- rtsp拉流预测
对rtsp拉流的支持,使用--rtsp RTSP [RTSP ...]参数指定一路或者多路rtsp视频流,如果是多路地址中间用空格隔开。(或者video_file后面的视频地址直接更换为rtsp流地址),示例如下:
# 例:车辆属性识别,单路视频流
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_vehicle_attr.yml -o visual=False --rtsp rtsp://[YOUR_RTSP_SITE] --device=gpu
# 例:车辆属性识别,多路视频流
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_vehicle_attr.yml -o visual=False --rtsp rtsp://[YOUR_RTSP_SITE1] rtsp://[YOUR_RTSP_SITE2] --device=gpu
- 视频结果推流rtsp
预测结果进行rtsp推流,使用--pushurl rtsp:[IP] 推流到IP地址端,PC端可以使用VLC播放器打开网络流进行播放,播放地址为 rtsp:[IP]/videoname
。其中videoname
是预测的视频文件名,如果视频来源是本地摄像头则videoname
默认为output
.
# 例:车辆属性识别,单路视频流,该示例播放地址为 rtsp://[YOUR_SERVER_IP]:8554/test_video
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_vehicle_attr.yml -o visual=False --video_file=test_video.mp4 --device=gpu --pushurl rtsp://[YOUR_SERVER_IP]:8554
注:
- rtsp推流服务基于 rtsp-simple-server, 如使用推流功能请先开启该服务.
- rtsp推流如果模型处理速度跟不上会出现很明显的卡顿现象,建议跟踪模型使用ppyoloe_s版本,即修改配置中跟踪模型mot_ppyoloe_l_36e_pipeline.zip替换为mot_ppyoloe_s_36e_pipeline.zip。
由于Jetson平台算力相比服务器有较大差距,有如下使用建议:
- 模型选择轻量级版本,特别是跟踪模型,推荐使用
ppyoloe_s: https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_s_36e_pipeline.zip
- 开启跟踪跳帧功能,推荐使用2或者3.
skip_frame_num: 3
使用该推荐配置,在TX2平台上可以达到较高速率,经测试属性案例达到20fps。
可以直接修改配置文件(推荐),也可以在命令行中修改(字段较长,不推荐)。
参数 | 是否必须 | 含义 |
---|---|---|
--config | Yes | 配置文件路径 |
-o | Option | 覆盖配置文件中对应的配置 |
--image_file | Option | 需要预测的图片 |
--image_dir | Option | 要预测的图片文件夹路径 |
--video_file | Option | 需要预测的视频,或者rtsp流地址 |
--rtsp | Option | rtsp视频流地址,支持一路或者多路同时输入 |
--camera_id | Option | 用来预测的摄像头ID,默认为-1(表示不使用摄像头预测,可设置为:0 - (摄像头数目-1) ),预测过程中在可视化界面按q 退出输出预测结果到:output/output.mp4 |
--device | Option | 运行时的设备,可选择CPU/GPU/XPU ,默认为CPU |
--pushurl | Option | 对预测结果视频进行推流的地址,以rtsp://开头,该选项优先级高于视频结果本地存储,打开时不再另外存储本地预测结果视频, 默认为空,表示没有开启 |
--output_dir | Option | 可视化结果保存的根目录,默认为output/ |
--run_mode | Option | 使用GPU时,默认为paddle, 可选(paddle/trt_fp32/trt_fp16/trt_int8) |
--enable_mkldnn | Option | CPU预测中是否开启MKLDNN加速,默认为False |
--cpu_threads | Option | 设置cpu线程数,默认为1 |
--trt_calib_mode | Option | TensorRT是否使用校准功能,默认为False。使用TensorRT的int8功能时,需设置为True,使用PaddleSlim量化后的模型时需要设置为False |
--do_entrance_counting | Option | 是否统计出入口流量,默认为False |
--draw_center_traj | Option | 是否绘制跟踪轨迹,默认为False |
--region_type | Option | 'horizontal'(默认值)、'vertical':表示流量统计方向选择;'custom':表示设置车辆禁停区域 |
--region_polygon | Option | 设置禁停区域多边形多点的坐标,无默认值 |
--illegal_parking_time | Option | 设置禁停时间阈值,单位秒(s),-1(默认值)表示不做检查 |
PP-Vehicle 整体方案如下图所示:
- 使用PaddleClas提供的特色模型PP-LCNet,实现对车辆颜色及车型属性的识别。
- 详细文档参考属性识别
- 使用PaddleOCR特色模型ch_PP-OCRv3_det+ch_PP-OCRv3_rec模型,识别车牌号码
- 详细文档参考车牌识别
- 车辆跟踪模型使用高精度模型PP-YOLOE L,根据车辆的跟踪轨迹以及指定的违停区域判断是否违章停车,如果存在则展示违章停车车牌号。
- 详细文档参考违章停车识别