# MobileNetv2_CPP **Repository Path**: fyra_bh/MobileNetv2_CPP ## Basic Information - **Project Name**: MobileNetv2_CPP - **Description**: 2022年嵌入式SOC大赛 32x32脉动阵列16bit量化驱动 模型选用MobileNetv2 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-11-02 - **Last Updated**: 2024-11-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MobileNetv2_CPP 使用C/C++实现MobileNetv2 > 添加自Wed Aug 7 21:32:53 2024 简单补一下使用说明。这个项目最后实际上只用了C语言和python。利用pytorch框架训练一个MobileNetV2模型,再用C语言逐层实现同样的功能。至于模型权重,全都以头文件的形式导出,编译进c代码,最终实现了一个cifar10分类的效果。项目中有MobileNetV2和MobileNetV2_simp以及MobileNetV2_mini三个模型,MobileNetV2_simp和MobileNetV2_mini大幅削减了模型的层数和通道数,可以自己在代码中修改决定使用哪一个模型。使用简化的模型是为了便于最后在FPAG上部署(关于在FPGA上的部署内容不在本仓库的范围内) 使用方法: 1. 先配置好包含torch和torchvision的python环境 2. 进入py目录下,执行python main.py可以训练模型。一定注意别忘了删掉mobilenetv2_on_cifar10_simp.pth,删掉了旧的模型文件才能正常训练新模型。 3. 测试模型,执行python test.py image_path。可以打印图片对应哪一类物品 4. 导出头文件,执行python export.py可以得到包含权重数据的头文件, 这一步不执行也可以,下面的第5步会自从执行导出。 5. 最后进入test目录下进行测试 在第5步中主要关注test目录下的mobilenetv2_foward_quant和cifar10_test_quant。 mobilenetv2_foward_quant测试: ```bash cd test/mobilenetv2_foward_quant make ``` 该测试分别执行模型的python推理和c推理,输入是一个随机张量,该测试用于评估模型推理过程中的精度损失 cifar10_test_quant测试: ```bash cd test/cifar10_test_quant make IMG=../../py/img/automobile0.jpg ``` IMG=../../py/img/automobile0.jpg也可以换成别的图像路径。最后会输出分类结果