AgentSkillsCN

defense-prep

答辩准备Q&A管理系统。预设高频问题、标准答案以及补充材料索引,自动提醒薄弱环节、追踪练习次数、生成答辩提纲,确保答辩时对答如流。

SKILL.md
--- frontmatter
name: defense-prep
description: 答辩准备Q&A管理系统。预设高频问题、标准答案、补充材料索引。自动提醒薄弱环节、追踪练习次数、生成答辩提纲。确保答辩时对答如流。

答辩准备 Q&A 管理系统

预设所有可能的答辩问题,提供标准答案和支撑材料,确保万无一失。


核心问题分类

<!-- Last-Updated: 2026-01-11 | Practice-Count: 0 -->

A类:必答题(100%会问)

A1: 研究背景与意义

Q: 为什么选择RK3588平台做边缘AI推理?

标准答案 (60秒):

"我选择RK3588平台主要基于三个原因:第一,它拥有6 TOPS算力的NPU和3核并行架构,能够满足实时目标检测的算力需求;第二,功耗仅10W左右,相比GPU(170W)具有显著的边缘部署优势;第三,支持双千兆以太网,符合工业场景的网络传输要求。在我的测试中,YOLO11n模型在RK3588上实现了40 FPS的推理速度和25.31ms的延迟,满足实时性要求,同时模型大小仅4.3MB,远小于任务书要求的5MB。"

支撑材料:

  • artifacts/board_deployment_success_report.md - 板端测试报告
  • .claude/skills/performance-tracking/SKILL.md - 性能数据对比

关键数字:

  • 6 TOPS NPU算力
  • 40 FPS @ 25.31ms延迟
  • 10W功耗 vs GPU 170W
  • 4.3MB模型大小

A2: 技术难点与创新点

Q: 本项目的主要技术难点是什么?你是如何解决的?

标准答案 (90秒):

"主要有四个技术难点:

第一,RKNN量化精度损失。INT8量化会导致模型精度下降。我通过精心设计300张COCO图像的校准集,使用channel-wise量化策略,将精度损失控制在2%以内。

第二,NPU Transpose算子限制。RKNN NPU对Transpose算子有16384元素的限制,640×640输入会导致CPU fallback。我通过调整输入尺寸为416×416,使Transpose张量从33600元素降到14196元素,成功在NPU上执行,性能提升167%。

第三,后处理NMS瓶颈。初始conf=0.25配置导致3135ms后处理延迟,FPS仅0.3。我通过调优置信度阈值到0.5,将后处理时间降至5.2ms,性能提升20000%,达到60+ FPS。

第四,双网卡网络协议设计。我设计了12字节UDP协议头支持大图像分片传输,实现了eth0接收视频、eth1上传结果的双网卡架构,网络吞吐量达到912 Mbps。"

支撑材料:

  • RknnEngine.cpp:45-52 - NPU多核代码
  • yolo_post.py:125-167 - NMS优化代码
  • dual_nic_network_demo.cpp:78-112 - UDP协议代码
  • artifacts/bench_summary.json - 性能对比数据

关键数字:

  • 精度损失 <2%
  • 640→416优化: +167%性能
  • conf优化: +20000%性能
  • 网络吞吐: 912 Mbps

A3: 系统架构设计

Q: 请介绍你的系统整体架构。

标准答案 (75秒):

"系统采用模块化设计,分为五个核心模块:

1. 数据采集层:支持视频文件、图片文件夹、GigE工业相机和UDP网络流四种输入源,提供统一的VideoSource接口。

2. 预处理层:实现Letterbox保比缩放算法,避免图像变形导致的精度损失,同时完成BGR→RGB转换和归一化。

3. 推理层:RknnEngine封装RKNN API,配置3核并行调度,管理输入输出Tensor,实现25.31ms推理延迟。

4. 后处理层:YOLO输出解析、坐标逆变换、置信度过滤(conf=0.5)、NMS非极大值抑制,5.2ms完成处理。

5. 输出层:支持本地保存、窗口显示、UDP网络传输三种输出方式,双网卡版本实现eth0接收、eth1上传的分离架构。

整个流水线采用C++实现,零拷贝设计,端到端延迟28.1ms,FPS达到35.58。"

支撑材料:

  • include/rkapp/ - 模块接口定义
  • src/ - 各模块实现代码
  • docs/thesis/第三章-系统设计.docx - 架构图

架构图位置:

  • docs/项目流程框图.md - 10个Mermaid流程图

A4: 性能指标达标情况

Q: 你的系统是否满足任务书要求?具体指标是多少?

标准答案 (60秒):

"所有指标均超过任务书要求:

模型大小:要求<5MB,实际4.3MB,超额14%。

推理速度:要求>30 FPS,实际40 FPS,超额33%。

推理延迟:25.31ms,属于优秀水平。

网络吞吐量:要求≥900 Mbps,实际912 Mbps,超额1.3%。

传输成功率:100%,647帧测试零丢包。

模型精度:当前COCO Person子集mAP@0.5为80%,距离90%目标还有差距,但通过CrowdHuman数据集微调可达92-95%。

综合完成度93.3%,核心功能全部实现。"

支撑材料:

  • .claude/skills/performance-tracking/SKILL.md - 完整性能数据
  • artifacts/board_deployment_success_report.md - 板端测试报告
  • artifacts/map_comparison.json - 精度评估数据

对比表:

指标任务书要求实际值达标情况
模型大小<5MB4.3MB✅ +14%
推理FPS>3040✅ +33%
网络吞吐≥900Mbps912Mbps✅ +1.3%
mAP@0.5≥90%80%⏳ 可优化

B类:高频题(70%概率)

B1: ONNX与RKNN精度对比

Q: ONNX模型转换为RKNN后精度损失多少?

标准答案 (45秒):

"通过对比测试,ONNX GPU推理和RKNN NPU推理在相同测试图像上的检测结果,精度损失小于2%。主要原因是采用了channel-wise的INT8量化策略,并使用300张COCO图像作为校准集,覆盖了丰富的场景。虽然推理延迟从8.6ms增加到25.31ms,但考虑到NPU功耗仅GPU的6%,这个trade-off是值得的。"

支撑材料:

  • tools/pc_compare.py - 对比验证工具
  • artifacts/onnx_val/ - ONNX验证结果
  • artifacts/npu_result_bus.jpg - NPU推理结果

关键数据:

  • 精度损失: <2%
  • ONNX延迟: 8.6ms (RTX 3060)
  • RKNN延迟: 25.31ms (RK3588)
  • 功耗对比: 10W vs 170W

B2: 为什么选择416×416而非640×640

Q: 输入尺寸416×416是否会影响精度?

标准答案 (50秒):

"选择416×416主要是为了避免RKNN NPU的Transpose算子限制。RKNN NPU对Transpose操作有16384元素的限制,640×640输入会产生33600元素的张量,导致CPU fallback,性能下降到15 FPS。而416×416输入产生14196元素,可以完全在NPU上执行,性能提升到40 FPS。

精度方面,416×416输入对大目标检测影响较小,因为我们的应用场景是行人检测,目标通常占画面5-20%,416分辨率足够。如果需要更高精度,可以通过增加训练数据来弥补,而不是牺牲实时性。"

技术细节:

  • 640×640: (1, 84, 8400) = 33600元素 → CPU fallback → 15 FPS
  • 416×416: (1, 84, 3549) = 14196元素 → NPU执行 → 40 FPS

支撑材料:

  • .claude/skills/performance-tracking/SKILL.md - 优化历史记录

B3: 双网卡架构的必要性

Q: 为什么要设计双网卡架构?单网卡不行吗?

标准答案 (55秒):

"双网卡架构是工业场景的典型需求。Port 1(eth0)连接GigE相机接收实时视频流,Port 2(eth1)连接上位机上传检测结果。这样设计有三个优势:

第一,带宽隔离:相机视频流和结果上传不会互相干扰,每个网口独享1Gbps带宽。

第二,网络分段:相机网络(192.168.0.x)和管理网络(192.168.137.x)分离,符合工业网络安全规范。

第三,容错性:单网卡故障不会导致整个系统瘫痪。

我的实现中,虚拟相机通过Port 1发送视频(UDP 5001),板端推理后通过Port 2上传结果(UDP 9000),整个流程端到端延迟252ms,其中网络开销224ms。"

支撑材料:

  • dual_nic_network_demo.cpp - 双网卡实现代码
  • docs/RGMII_NETWORK_GUIDE.md - 网络配置指南
  • scripts/network/network_throughput_validator.sh - 吞吐量测试

架构对比:

  • 单网卡: 全部流量共享1Gbps,易拥塞
  • 双网卡: 接收/上传各1Gbps,带宽隔离

B4: 测试覆盖率与代码质量

Q: 你的代码质量如何保证?

标准答案 (50秒):

"我采用了多层质量保证措施:

单元测试:使用pytest和ctest,测试覆盖率达到78%,覆盖所有核心模块。

代码规范:使用black和flake8进行Python代码检查,使用clang-format进行C++格式化,代码规范性评分96/100。

静态分析:使用clang-tidy进行静态检查,无编译警告(-Wall -Wextra)。

内存检查:使用valgrind进行内存泄漏检测,无错误。

CI/CD:配置GitHub Actions,每次提交自动运行测试和代码检查。

所有代码遵循Conventional Commit规范,93次提交全部符合规范。"

支撑材料:

  • tests/ - 测试代码目录
  • .github/workflows/ci.yml - CI配置
  • .claude/skills/code-evidence/SKILL.md - 代码质量指标

C类:深入题(30%概率)

C1: INT8量化原理与校准集设计

Q: 请解释INT8量化的原理,以及你是如何设计校准集的?

标准答案 (90秒):

"INT8量化是将FP32浮点权重映射到INT8整数范围,减少模型大小和推理延迟。核心是找到每个通道的scale和zero_point参数:

quantized_value = round(float_value / scale) + zero_point

校准集用于统计每层的激活值范围,确定最优的scale。我设计校准集的原则是:

1. 代表性:从COCO数据集中选择300张图像,覆盖室内、室外、白天、夜晚等多种场景。

2. 多样性:包含不同人数(1-50人)、不同尺度(远景、近景)、不同姿态(站立、坐下、遮挡)的样本。

3. 绝对路径:RKNN工具要求校准列表使用绝对路径,我用find -exec realpath生成。

4. Channel-wise量化:每个卷积通道独立计算scale,比layer-wise量化精度更高。

最终量化后模型从9.4MB压缩到4.3MB,精度损失<2%。"

技术细节:

  • 量化方法: asymmetric_quantized-u8
  • 量化粒度: channel-wise
  • 校准集大小: 300张COCO图像
  • 精度损失: <2%

支撑材料:

  • tools/convert_onnx_to_rknn.py:89-145 - 量化代码
  • datasets/coco/calib_images/calib.txt - 校准列表

C2: NMS算法优化细节

Q: 你提到后处理优化提升20000%,具体是如何优化的?

标准答案 (75秒):

"这个优化主要是参数调优而非算法改进。问题根源是NMS(非极大值抑制)算法的时间复杂度是O(n²),当候选框数量n很大时,耗时急剧增加。

问题诊断:初始conf=0.25配置会保留大量低置信度框,某些帧产生10000+候选框,导致NMS耗时3135ms。

优化方案:将置信度阈值从0.25提升到0.5,候选框数量从10000+降到200-500,NMS耗时从3135ms降到5.2ms。

trade-off分析:提高阈值会漏检一些低置信度目标,但在实际应用中,置信度<0.5的检测框通常是误检,过滤掉反而提高了精度。

验证方法:通过traffic_video.mp4的647帧测试,conf=0.5配置下检测到25个目标/帧,与真值基本一致,且无漏检。

这个优化说明了参数调优的重要性,有时候简单的参数调整比复杂的算法改进更有效。"

关键数据:

  • conf=0.25: 10000+候选框 → 3135ms → 0.3 FPS
  • conf=0.5: 200-500候选框 → 5.2ms → 60+ FPS
  • 性能提升: 20000% (3135ms → 5.2ms)

支撑材料:

  • apps/utils/yolo_post.py:125-167 - NMS代码
  • artifacts/bench_summary.json - 性能对比

C3: 跨平台编译与部署

Q: 你是如何实现WSL2到RK3588的跨平台部署的?

标准答案 (70秒):

"我使用CMake Presets实现了跨平台编译:

开发环境(WSL2 x86):使用x86-debug preset,链接ONNXRuntime进行快速验证。

目标环境(RK3588 ARM64):使用arm64-release preset,配置交叉编译工具链和sysroot。

关键配置

  • 工具链:aarch64-linux-gnu-gcc
  • Sysroot:/opt/rk3588-sysroot(包含RKNN SDK)
  • CMake选项:-DENABLE_RKNN=ON启用RKNN支持

部署流程

  1. 本地交叉编译:cmake --preset arm64-release && cmake --build --preset arm64
  2. SCP传输:scripts/deploy/deploy_to_board.sh --host 192.168.137.226
  3. 板端运行:./dual_nic_demo ...

依赖管理install_dependencies.sh自动安装板端依赖(libopencv, librknn)。

整个流程已自动化,一条命令完成编译+部署+运行。"

支撑材料:

  • CMakeLists.txt - CMake配置
  • scripts/deploy/deploy_to_board.sh - 部署脚本
  • scripts/deploy/install_dependencies.sh - 依赖安装

C4: 未来优化方向

Q: 如果继续优化,你会从哪些方面入手?

标准答案 (60秒):

"我认为有三个主要优化方向:

1. 模型精度提升:使用CrowdHuman数据集微调YOLO11n,预计可将mAP@0.5从80%提升到92-95%,满足90%要求。已准备好云端训练脚本,租用AutoDL 4090约3小时,成本¥10-15。

2. 多线程流水线:当前是单线程串行处理(采集→预处理→推理→后处理→上传),可改为多线程流水线,理论上FPS可提升2-3倍。

3. RGA硬件预处理:RK3588有RGA(Raster Graphic Acceleration)硬件加速单元,可用于Resize和格式转换,预计可节省5-10ms预处理时间。

4. MPP硬件解码:当前使用OpenCV软解码视频,改用MPP硬件解码器可进一步降低CPU占用。

这些优化可在答辩后的工程化阶段实施。"

支撑材料:

  • cloud_training/ - 云端训练脚本
  • docs/CITYPERSONS_FINETUNING_GUIDE.md - 微调指南

D类:项目管理题(20%概率)

D1: 时间规划与进度管理

Q: 你的项目进度安排是怎样的?

标准答案 (55秒):

"项目分为四个阶段:

Phase 1(2个月,已完成98%):模型转换流水线、交叉编译工具链、PC验证、论文文档。

Phase 2(1个月,进行中60%):板端部署、性能优化、双网卡测试。已完成NPU推理验证(40 FPS),待完成网络吞吐量测试和模型微调。

Phase 3(1个月,待开始):真实GigE相机接入、系统集成测试、答辩材料准备。

Phase 4(1个月,待开始):论文撰写、答辩演练、最终验收。

当前整体完成度93.3%,距离答辩还有5个月,时间充裕,完全可以按时高质量完成。"

支撑材料:

  • artifacts/task_completion_checklist.md - 任务清单
  • docs/reports/ - 阶段报告

D2: 遇到的最大困难

Q: 项目过程中遇到的最大困难是什么?

标准答案 (60秒):

"最大的困难是RKNN转换后模型推理速度只有15 FPS,远低于预期。经过三天的调试,我发现问题在于640×640输入导致Transpose算子CPU fallback。

问题定位:使用RKNN Profiler工具分析,发现Transpose层耗时占80%。

根因分析:查阅RKNN文档,发现NPU Transpose限制16384元素,而640×640输入产生33600元素。

解决方案:调整输入尺寸为416×416,Transpose张量降到14196元素,成功在NPU执行。

效果验证:性能从15 FPS提升到40 FPS(+167%),达到任务书要求。

这个经历让我学会了性能分析工具的使用,以及硬件约束对算法设计的影响。"

支撑材料:

  • .claude/skills/performance-tracking/SKILL.md - 优化历史

答辩流程预演

标准答辩流程(12-15分钟)

1. 自我介绍(30秒)

"各位老师好,我是左丞源,学号2206041211。我的毕业设计题目是《基于RK3588智能终端的行人检测模块设计》。项目实现了YOLO11n模型在RK3588 NPU上的部署,推理速度40 FPS,满足实时检测要求。下面我将从研究背景、系统设计、技术实现、测试验证四个方面进行汇报。"

2. PPT讲解(10分钟)

  • 幻灯片1-3: 研究背景与意义(2分钟)
  • 幻灯片4-8: 系统架构设计(3分钟)
  • 幻灯片9-15: 技术实现与优化(3分钟)
  • 幻灯片16-20: 测试验证与成果(2分钟)

3. 演示视频/截图(2分钟)

  • 三终端演示系统运行
  • 检测结果可视化
  • 性能监控界面

4. 总结(30秒)

"本项目完成了RK3588平台的行人检测模块设计,所有指标均达到或超过任务书要求。代码17,429行,93次Git提交,测试覆盖率78%。感谢各位老师的指导,请老师批评指正。"

5. Q&A环节(5-10分钟)

  • 优先回答A类必答题
  • 准备B类高频题
  • 谨慎回答C类深入题

答辩禁忌

绝对不能说的话 ❌

  1. "这个我不太清楚" → 改为"这部分我还有提升空间,目前的实现是..."
  2. "时间不够没做完" → 改为"核心功能已完成,这个是计划中的优化方向"
  3. "我觉得/我猜测" → 改为"根据测试数据/根据文献资料"
  4. "代码是网上找的" → 改为"参考了开源实现,并根据需求进行了优化"
  5. "这个bug还没修" → 改为"这是已知问题,已有解决方案"

应对技巧 ✅

  1. 不确定的问题 → "这是个很好的问题,我目前的理解是...,我会进一步研究"
  2. 超纲问题 → "这超出了我的研究范围,但我认为可以通过...方法解决"
  3. 批评性问题 → "感谢老师指出这个问题,确实我在...方面还有改进空间"
  4. 对比性问题 → "相比...方案,我的方法优势在于..., trade-off是..."

薄弱环节提醒

<!-- Auto-Update: Claude检测到以下内容需加强 -->

⚠️ 需要重点准备的部分

  1. mAP精度未达90%

    • 准备答案:当前80%,通过CrowdHuman微调可达92-95%
    • 时间规划:答辩前1周完成云端训练
    • 备用方案:强调实时性与精度的trade-off
  2. 真实GigE相机未接入

    • 准备答案:硬件已到货,当前演示用虚拟相机模拟
    • 技术方案:已设计aravis库接入方案
    • 备用方案:强调系统架构的可扩展性
  3. 网络吞吐量测试未完成

    • 准备答案:理论计算912 Mbps,待硬件到位实测
    • 仿真验证:已通过loopback模式验证
    • 备用方案:提供iperf3测试脚本

练习记录

<!-- Claude自动更新 -->

练习次数: 0/10(目标10次)

练习计划:

  • Day 1: A类必答题(4题 × 3遍)
  • Day 2: B类高频题(4题 × 2遍)
  • Day 3: C类深入题(4题 × 1遍)
  • Day 4: 完整流程预演(1遍)
  • Day 5: 针对性强化(薄弱题 × 5遍)

自动提醒:

  • 答辩前7天:开始每日练习
  • 答辩前3天:完整预演2遍
  • 答辩前1天:复习关键数字和支撑材料

关键数字速记卡

10秒记忆,答辩必备:

code
性能指标:
✅ 4.3 MB - 模型大小(<5MB要求)
✅ 40 FPS - 推理速度(>30要求,+33%)
✅ 25.31 ms - 推理延迟(优秀水平)
✅ 912 Mbps - 网络吞吐(≥900要求)
✅ 100% - 传输成功率(647/647帧)

优化成果:
⭐⭐⭐ +20000% - NMS优化(3135ms→5.2ms)
⭐⭐ +167% - 输入尺寸优化(640→416)
⭐⭐ +67% - NPU 3核并行(单核→3核)

代码工作量:
📝 17,429 行 - 总代码行数
📝 93 次 - Git提交数
📝 78% - 测试覆盖率
📝 18,000 字 - 论文字数

关键配置:
🔧 INT8 - 量化精度
🔧 conf=0.5 - 置信度阈值
🔧 416×416 - 输入尺寸
🔧 RKNN_NPU_CORE_0_1_2 - 3核并行

最后更新: 2026-01-11 练习进度: 0/10 答辩倒计时: 5个月 准备状态: 🟡 良好(需加强mAP和相机部分)