数字IC入门
分享点实战踩坑教训。我们当时用YOLO-Fastest-XL(稍大一点)在Artix-7上做,一开始直接部署浮点模型,BRAM根本不够存权重和特征图。后来做了三件事:第一,用通道剪枝剪掉了20%的通道,用的是L1-norm剪枝,在COCO人脸数据集上微调了一轮,mAP掉了1.5%但参数量少了30%。第二,量化到INT8,我们用了TensorRT的校准方法,自己写了Python脚本生成量化参数,注意激活值的范围要用移动平均统计,别只用一批数据。第三,硬件设计上,我们把卷积、池化、激活(ReLU)打包成一个可配置的硬件模块,用流水线处理,这样每个时钟都能输出结果。但坑来了:数据位宽要对齐,INT8乘加后是INT32,累加后可能溢出,我们做了饱和处理。另外,片上内存有限,我们用了外部DDR存部分权重,但带宽成了瓶颈,后来调整了数据搬运策略,用乒乓操作预取。最后帧率做到了25fps,精度mAP 0.82。建议你们早点做板级验证,仿真通过不代表上板能跑。
