panhg/yolov4_tt100k
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

YOLOv4-TT100K 中国交通标志识别 (Ascend NPU Adapted)

YOLOv4 中国交通标志识别模型,专为中国复杂交通环境设计,已在华为昇腾 NPU (Ascend910B) 上完成适配与验证。

模型简介

YOLOv4-TT100K 在 YOLOv4 算法基础上进行优化,适应中国特有的交通标志识别需求。模型采用 CSPDarknet53 骨干网络、SPP 空间金字塔池化、PANet 路径聚合网络,结合多尺度预测机制,显著提升了对不同尺寸和角度交通标志的识别精度。

在 CCTSDB 2021 数据集上的测试显示:

  • 检测准确率: 96.62%
  • 召回率: 79.73%
  • F-1 分数: 87.37%
  • mAP: 92.77%
  • 帧率: ~81 FPS (GPU) / ~40 FPS (Ascend NPU)

昇腾 NPU 适配信息

项目详情
适配设备Ascend910B (华为 Atlas 800 A2)
CANN 版本8.5.1
torch_npu 版本2.9.0.post1
PyTorch 版本2.9.0
输入尺寸608×608
类别数45 类中国交通标志
模型大小63.9M 参数
NPU 显存占用~931 MB (峰值)

性能基准 (Ascend910B)

指标NPU (Ascend910B)说明
端到端延迟24.76 ms含同步开销
吞吐量40.38 FPSBatch=1
P99 延迟29.35 ms长尾延迟
最小延迟22.10 ms最优情况

精度验证 (NPU vs CPU)

指标结果状态
最大绝对误差< 0.012✅ 通过
平均绝对误差< 0.002✅ 通过
余弦相似度> 0.99999✅ 通过
精度偏差< 0.01%✅ 通过

NPU 推理输出与 CPU 参考输出高度一致,精度损失可忽略不计。

快速开始

环境要求

# 确认 NPU 环境
npu-smi info

# Python 环境
pip install torch==2.9.0 torch_npu==2.9.0.post1
pip install opencv-python numpy modelscope

下载模型

pip install modelscope
modelscope download --model Genius-Society/yolov4_tt100k --local_dir ./yolo_model

NPU 推理

import torch
import torch_npu
from yolov4_pytorch import YOLOv4

# 加载模型
model = YOLOv4('yolov4-tt100k.cfg')
model.load_darknet_weights('yolov4-tt100k_best.weights')
model.eval()
model = model.to('npu:0')

# 推理
import cv2
import numpy as np

img = cv2.imread('traffic_sign.jpg')
img = cv2.resize(img, (608, 608))
tensor = torch.from_numpy(img.transpose(2,0,1)/255.0).float().unsqueeze(0).to('npu:0')

with torch.no_grad():
    outputs = model(tensor)

命令行推理

# 图片推理
python3 inference.py --source traffic.jpg --output result.jpg --device npu

# 性能基准测试
python3 inference.py --device npu --benchmark --benchmark-iters 100

# 精度评估
python3 evaluate.py --device npu --iters 100

模型架构

YOLOv4-TT100K
├── CSPDarknet53 Backbone (Mish activation)
│   ├── Stem: Conv 3→32, stride=1
│   ├── Stage1: Conv 32→64, stride=2 + CSPBlock(1×)
│   ├── Stage2: Conv 64→128, stride=2 + CSPBlock(2×)
│   ├── Stage3: Conv 128→256, stride=2 + CSPBlock(8×)
│   ├── Stage4: Conv 256→512, stride=2 + CSPBlock(8×)
│   └── Stage5: Conv 512→1024, stride=2 + CSPBlock(4×)
├── SPP (Spatial Pyramid Pooling)
├── PANet (Path Aggregation Network)
│   ├── FPN Top-down path (2× Upsample)
│   └── PAN Bottom-up path (2× Downsample)
└── YOLOv3 Head (3 scales)
    ├── Head1: 76×76 (stride 8, small objects)
    ├── Head2: 38×38 (stride 16, medium objects)
    └── Head3: 19×19 (stride 32, large objects)

45 类中国交通标志

类别含义类别含义
i2限速2i4限速4
i5限速5il100最低限速100
il60最低限速60il80最低限速80
io禁止超车ip禁止停车
p10限速10p11限速11
p12人行道p19注意行人
p23注意儿童p26注意非机动车
p27注意信号灯p3限速3
p5限速5p6注意危险
pg停车场ph4限高4m
ph4.5限高4.5mph5限高5m
pl100限重100tpl120限重120t
pl20限重20tpl30限重30t
pl40限重40tpl5限重5t
pl50限重50tpl60限重60t
pl70限重70tpl80限重80t
pm20限宽2mpm30限宽3m
pm55限宽5.5mpn禁止通行
pne禁止驶入po禁止停留
pr40限速40w13警告13
w32警告32w55警告55
w57警告57w59警告59
wo警告其他

交付件清单

文件说明
yolov4_pytorch.pyYOLOv4 PyTorch 模型定义 + Darknet 权重加载
inference.pyNPU 推理脚本 (支持图片/视频/摄像头)
evaluate.py精度验证 + 性能基准测试脚本
eval_results.json评测结果数据
yolov4-tt100k.cfgDarknet 模型配置文件

适配要点

  1. 模型解析: 直接从 Darknet .cfg 解析构建 PyTorch 模型,确保层序与权重文件一致
  2. 权重加载: 按 Darknet 存储顺序读取 .weights (BN bias → BN weight → BN mean → BN var → Conv weight)
  3. NPU 迁移: 使用 model.to('npu:0') 自动迁移,无需手动算子替换
  4. 精度保持: Mish 激活使用 x * tanh(softplus(x)) 原生实现,与 Darknet 一致

致谢

  • 原作者: Genius-Society/yolov4_tt100k
  • 昇腾适配: Model Agent (Ascend NPU Adaptation)
  • 昇腾社区: Ascend-SACT