Update README.md
基于 MoCoViT 轻量化 CNN-Transformer 混合架构,实现 CIFAR-10 图像分类,完整适配 Windows AMD ROCm 训练环境,含训练、ONNX 导出简化、安卓真机部署全链路。
官网下载最新肾上腺素驱动,管理员安装后重启。
HIP SDK 官方安装教程
官方 PyTorch ROCm 安装教程
python -m venv venv venv\Scripts\activate
pip install --no-cache-dir ^ https://repo.radeon.com/rocm/windows/rocm-rel-7.2.1/rocm_sdk_core-7.2.1-py3-none-win_amd64.whl ^ https://repo.radeon.com/rocm/windows/rocm-rel-7.2.1/rocm_sdk_devel-7.2.1-py3-none-win_amd64.whl ^ https://repo.radeon.com/rocm/windows/rocm-rel-7.2.1/rocm_sdk_libraries_custom-7.2.1-py3-none-win_amd64.whl ^ https://repo.radeon.com/rocm/windows/rocm-rel-7.2.1/rocm-7.2.1.tar.gz
pip install --no-cache-dir ^ https://repo.radeon.com/rocm/windows/rocm-rel-7.2.1/torch-2.9.1%2Brocm7.2.1-cp312-cp312-win_amd64.whl ^ https://repo.radeon.com/rocm/windows/rocm-rel-7.2.1/torchaudio-2.9.1%2Brocm7.2.1-cp312-cp312-win_amd64.whl ^ https://repo.radeon.com/rocm/windows/rocm-rel-7.2.1/torchvision-0.24.1%2Brocm7.2.1-cp312-cp312-win_amd64.whl
python -c "import torch;print(torch.cuda.is_available());print(f'device name [0]:', torch.cuda.get_device_name(0))"
pip install numpy pillow onnx onnxsim onnxruntime onnxscript
从 GitLink 仓库下载训练脚本:
mocovit_train.py
export_onnx.py
将两个脚本放在同一个文件夹内,例如:
D:\code\MoCoViT\ ├── mocovit_train.py # 训练脚本 └── export_onnx.py # 导出脚本
打开 CMD,进入代码目录,激活虚拟环境后依次执行:
第一步:训练模型
python mocovit_train.py
mocovit_best.pth
第二步:导出并简化 ONNX 模型
python export_onnx.py
mocovit.onnx
mocovit_simplified.onnx
⚠️ 必须按顺序运行,第二步依赖第一步生成的权重文件。
脚本内置 ROCm 兼容环境变量:
import os os.environ["MIOPEN_DISABLE_CACHE"] = "1" os.environ["PYTORCH_HIP_USE_MIOPEN"] = "0" os.environ["PYTORCH_CUDA_FUSER_DISABLE"] = "1"
./data
输出:
android/
app/src/main/assets/
implementation("com.microsoft.onnxruntime:onnxruntime-android:1.16.0")
MoCoViT-Android-Demo/ ├── train/ │ ├── mocovit_train.py │ └── export_onnx.py ├── android/ │ └── app/src/main/ │ ├── assets/ │ ├── java/.../MainActivity.kt │ ├── res/layout/activity_main.xml │ └── AndroidManifest.xml ├── docs/技术报告.md ├── .gitignore └── README.md
Q:MIOpen 相关报错? A:ROCm 与 PyTorch 版本匹配;删除 ~/.cache/miopen 缓存;确认三条环境变量。
~/.cache/miopen
Q:缺少 onnxscript? A:pip install onnxscript 或导出时加 use_dynamo=False。
pip install onnxscript
use_dynamo=False
Q:识别不到手机? A:开启 USB 调试 + 传输文件模式,换原装数据线。
Q:APP 闪退? A:检查 assets 模型文件名大小写、存储权限、Gradle 同步状态。
[1] Ma H, et al. MoCoViT: Mobile Convolutional Vision Transformer[J]. arXiv:2205.12635, 2022. [2] Mehta S, Rastegari M. MobileViT[C]//ICLR, 2022. [3] Han K, et al. GhostNet[C]//CVPR, 2020. [4] AMD Official. ROCm HIP SDK Windows Documentation
MIT License
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MoCoViT 轻量化图像分类:训练 + 安卓端部署全流程
项目特性
前置要求
硬件
系统
一、AMD ROCm 安装(Windows)
1. 更新 AMD 显卡驱动
官网下载最新肾上腺素驱动,管理员安装后重启。
2. 安装 ROCm
HIP SDK 官方安装教程
二、Python 训练环境
官方 PyTorch ROCm 安装教程
1. 创建虚拟环境
2. 安装 ROCm SDK
3. 安装 PyTorch ROCm 版
4. 验证 GPU 可用性
5. 安装项目依赖
三、代码下载与运行顺序
1. 获取代码
从 GitLink 仓库下载训练脚本:
mocovit_train.py和export_onnx.py两个文件2. 目录结构
将两个脚本放在同一个文件夹内,例如:
3. 按顺序运行
打开 CMD,进入代码目录,激活虚拟环境后依次执行:
第一步:训练模型
mocovit_best.pth权重文件第二步:导出并简化 ONNX 模型
mocovit_best.pthmocovit.onnx和mocovit_simplified.onnx四、模型训练说明
脚本内置 ROCm 兼容环境变量:
./data)mocovit_best.pth五、ONNX 导出与简化
输出:
mocovit.onnx:原始模型mocovit_simplified.onnx:简化版(部署用)六、安卓 APP 部署
1. 工程准备
android/目录app/src/main/assets/放入mocovit_simplified.onnx2. 依赖配置(Kotlin DSL)
3. 真机运行
七、ROCm 适配说明
八、实验数据
CIFAR-10 训练结果(12 轮实测)
小米 15 推理性能
模型对比
九、项目结构
十、常见问题
Q:MIOpen 相关报错? A:ROCm 与 PyTorch 版本匹配;删除
~/.cache/miopen缓存;确认三条环境变量。Q:缺少 onnxscript? A:
pip install onnxscript或导出时加use_dynamo=False。Q:识别不到手机? A:开启 USB 调试 + 传输文件模式,换原装数据线。
Q:APP 闪退? A:检查 assets 模型文件名大小写、存储权限、Gradle 同步状态。
十一、模型下载
参考文献
[1] Ma H, et al. MoCoViT: Mobile Convolutional Vision Transformer[J]. arXiv:2205.12635, 2022. [2] Mehta S, Rastegari M. MobileViT[C]//ICLR, 2022. [3] Han K, et al. GhostNet[C]//CVPR, 2020. [4] AMD Official. ROCm HIP SDK Windows Documentation
开源协议
MIT License