01
课程导论与目标
MobileViT简介 · 为什么选择MobileViT · 课程目标与前置知识 · 整体技术栈概览
导论概览
02
环境搭建
Ubuntu环境配置 · Python虚拟环境 · PyTorch安装 · Android Studio与NDK配置
环境NDK
03
MobileViT模型原理
ViT vs CNN · MobileViT核心模块(MobileNet块 + Transformer块) · 模型变体介绍
原理Transformer
04
PyTorch模型训练与导出
使用timm库加载预训练模型 · 自定义数据集训练 · 模型评估与保存
训练PyTorch
05
模型转换为ONNX
ONNX简介 · PyTorch转ONNX流程 · 动态轴与静态轴设置 · 验证ONNX模型
ONNX转换
06
ONNX模型优化
ONNX Simplifier使用 · 算子融合 · FP16量化 · 模型大小与速度权衡
优化FP16
07
ONNX转NCNN
NCNN框架简介 · 编译NCNN(vulkan支持) · onnx2ncnn工具使用 · 常见转换错误处理
NCNNVulkan
08
NCNN模型优化
NCNN模型量化(FP16/INT8) · NCNN模型加密 · 模型benchmark测试
量化加密
09
Android项目创建
Android Studio新建项目 · 配置CMakeLists.txt · 集成NCNN库(armeabi-v7a/arm64-v8a)
AndroidCMake
10
JNI接口设计
Java与C++交互 · 加载NCNN模型 · 前向推理接口封装 · 内存管理
JNIC++
11
图像预处理
Bitmap转Mat · OpenCV for Android集成 · Resize/Normalize/ToTensor实现
OpenCV预处理
12
模型推理实现
NCNN Net类使用 · 输入blob设置 · 前向推理 · 输出blob获取
推理NCNN
13
后处理与结果展示
Softmax计算 · Top-K结果提取 · 在ImageView上绘制结果
后处理展示
14
性能优化(CPU)
OpenMP多线程 · ARM NEON指令集优化 · 内存池复用
CPUNEON
15
性能优化(GPU)
Vulkan后端启用 · GPU算子选择 · CPU-GPU异构计算
GPUVulkan
16
模型量化实战
PTQ(Post Training Quantization)流程 · 校准数据集准备 · 量化后精度评估
量化PTQ
17
模型剪枝与蒸馏
结构化剪枝 · 知识蒸馏原理 · 在MobileViT上的实践
剪枝蒸馏
18
多线程与异步推理
HandlerThread使用 · RxJava异步 · 推理队列管理
异步RxJava
19
相机实时推理
CameraX集成 · 预览帧获取 · 实时推理管线 · FPS显示
CameraX实时
20
热启动与冷启动优化
模型加载缓存 · 预推理预热 · 减少首次推理延迟
启动缓存
21
模型版本管理
模型文件云端下载 · 版本对比 · 本地缓存策略
版本云
22
错误处理与日志系统
NCNN异常捕获 · Android Logcat集成 · 崩溃上报
日志异常
23
单元测试与集成测试
JUnit测试 · Native层测试 · UI自动化测试
测试JUnit
24
打包与发布
Gradle配置优化 · APK瘦身(ABI拆分) · ProGuard混淆规则
打包混淆
25
实际案例:图像分类App
从需求到上线的完整流程 · UI设计 · 性能调优
案例分类
26
实际案例:目标检测App
YOLO变体 · 检测头适配 · NMS实现 · 框绘制
检测YOLO
27
实际案例:语义分割App
分割模型替换 · 逐像素分类 · 颜色映射
分割像素
28
跨平台扩展
iOS端集成(CoreML) · 鸿蒙端集成(MindSpore Lite) · Flutter插件封装
跨平台Flutter
29
前沿趋势
Transformer轻量化新进展 · 端侧大模型 · 硬件加速(NPU/DSP)
前沿NPU
30
课程总结与项目答辩
知识体系回顾 · 常见面试题 · 项目展示建议 · 未来学习路径
总结答辩