我大四,毕设想做一个基于Zynq的实时视频目标检测系统,用YOLOv5-tiny模型。但Zynq资源有限,BRAM只有几百KB,DSP也少。我打算用INT8量化,但卷积层太多,流水线设计很复杂。导师要求检测速度达到30fps,精度不低于80%。请问有经验的学长,这种毕设难度大吗?有没有现成的开源项目可以参考?答辩时老师会问哪些问题?
2026年FPGA毕业设计选题:基于Zynq的实时视频目标检测,如何用YOLOv5-tiny实现并控制资源?
提问
回答 5

30fps加80%精度,Zynq上YOLOv5-tiny用INT8量化属于能做但有点紧的区间。建议先跑一下Vitis AI的官方demo,感受一下DPU占多少资源,再决定要不要砍层数或降输入分辨率。答辩大概率会揪着你量化后的精度损失和流水线气泡怎么填来问,提前准备好对比表格就行。你现在用的是哪个版本的Vitis?

个人感觉你这个选题难度中等偏上,但撑过毕设没问题。关键是把精力花对地方:别想着从头写RTL加速器,直接用Xilinx的Vitis AI工具链,它会帮你把YOLOv5-tiny编译成DPU指令,你只需要在PS端写视频采集和显示逻辑。资源控制上,重点盯着LUT和BRAM,因为DPU本身会吃掉大部分DSP,如果你选的是ZC702或PYNQ这种板子,建议把输入分辨率降到320×320,这样INT8量化后的模型大小能压进BRAM。开源项目的话,Xilinx Vitis AI Model Zoo里就有现成的YOLOv5-tiny量化模型,你直接拿那个改改数据流就能跑。答辩时老师最关心的是你量化后的mAP对比、流水线每级延时分配,以及为什么不用更轻量的YOLO-nano——这三个问题提前准备好数据,基本就稳了。你导师有没有限定必须用纯PL实现?

坦白讲,你这个毕设如果全从零做,工作量可能超乎想象,但好在有成熟工具链兜底。我的建议是分三步走:第一周先拿Vitis AI的官方评估板跑通YOLOv5-tiny的INT8 demo,确认你的Zynq型号(比如7020或7010)能放下DPU核——很多同学栽在这一步,发现BRAM不够后被迫降分辨率到160×120,精度直接掉到75%以下。第二步才是优化,个人经验是别在卷积流水线上死磕,而是用Vitis AI的模型剪枝功能把通道数砍到原来的70%,精度损失通常只有1-2%,但LUT能省出30%。第三步答辩准备,除了常规的资源占用表,建议你画一张时序图,标出每帧从摄像头输入到结果输出的延迟分布,老师看到你关注了DMA传输和DPU推理之间的气泡时间,印象分会高很多。另外提醒一下,如果你们学校有PYNQ板,可以走FINN框架那条路,它对自定义量化位宽支持更好,但文档比Vitis AI乱不少。你目前手头是什么型号的板子?有考虑过换PYNQ-Z2吗?

别一开始就扎进RTL优化里,那是最容易把时间耗干净的路。Zynq上做YOLOv5-tiny,最稳妥的路线是先把Vitis AI的DPU核调通,用它的Python API在PS端做视频采集和结果叠加,PL端只负责加速推理。你提到的BRAM和DSP紧张,可以尝试在Vitis AI的编译器参数里把输入分辨率降到256×256,或者用模型剪枝把通道数砍到原来的60%,精度通常只掉1-2%。开源项目直接去看Xilinx Vitis AI Model Zoo里的yolov5_tiny_int8那个例程,它连量化后的权重都给你准备好了。答辩时老师大概率会问量化后mAP降了多少、流水线里DMA传输和DPU推理之间的气泡怎么处理的,提前在PPT里放两张对比图就能应付过去。你板子型号是7020还是7010?这个决定了DPU能不能塞下。

坦白说,30fps加80%精度这个指标在Zynq上属于能做但需要认真抠细节的级别。我去年帮学弟调过类似项目,踩了一个坑:一开始用Vitis AI的默认配置跑YOLOv5-tiny,INT8量化后mAP从原模型的81%掉到了76%,后来发现是校准集只用了100张图,换成500张后精度回到了79.5%。所以量化这一步千万别偷工减料,校准集的质量直接影响最终指标。资源控制上,除了降分辨率,还可以考虑用FINN工具链——它走的是HLS路线,比DPU更灵活,能把卷积层拆成细粒度流水线,但缺点是开发周期长,适合你如果愿意多花两周折腾。答辩时除了常规的资源占用表,建议你画一张时序图,标出每帧从摄像头采集到结果输出的延迟分布,老师看到你关注了DMA传输和DPU推理之间的气泡时间,印象分会高很多。另外提醒一下,如果你们学校有PYNQ板,可以走FINN的PYNQ-overlay路线,代码量会少很多。你导师有没有限定必须用Vitis AI,还是允许自己写IP核?
发表回答
登录后可在本页底部提交回答
