Seeed_Studio_MNIST实例实现部分
!!!全部操作均在Linux系统下,Linux为Ubuntu24.04!!!
实例网址
MNIST_Classification_MobileNetV2_0.5_Rep_32.ipynb - Colab (google.com)
环境搭建
实例需要带有CUDA核心的显卡,linux中还需要提前将显卡驱动安装完成
先安装Anaconda
,具体为啥后面会提。
我一开始用python3.12的版本,但是会有报错
1 | module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'? |
后面将版本降低为python3.11
就没问题了
其次是pip
的问题
由于在linux系统下,使用pip安装包会出现以下错误:
1 | error: externally-managed-environment |
大致意思就是推荐在虚拟环境使用pip命令,或者使用其他方法也行(创建个虚拟环境还是方便点)
所以先安装Anaconda
用于构建虚拟环境,网上有很多教程,略过…….
由于案例中安装的包比较多,所以推荐pip切换到国内源,以下是全局换源的命令
1 | pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple |
操作流程(踩坑)
实例的具体操作在网址中都有,主要讲的是踩坑的部分
数据集
前面环境都搭建完成后,基本上跟着流程走没啥问题,但是在训练模型的步骤会有个坑人的地方
因为里面的数据集下载来自https://yann.lecun.com/exdb/mnist/
,但是国内下载网址内的文件会被403,所以需要自己找对应的数据集,并且将网址修改为自己的数据集。
我找到的数据集放到了度盘:https://pan.baidu.com/s/16k9LrXsGVPnPGQlC5ffvrw?pwd=norl
防止以后丢了…
拿到数据集后,还要自己启动服务器,将数据集放到服务器上(因为代码中是使用的网址,直接改成文件地址不行)
这里就直接用Express创建了,方便又简单(装个nodejs
,用npm
装个express包,敲几行代码就行)
代码修改
然后就是修改代码部分了,只需要修改一处,文件位置在
1 | $HOME/anaconda/envs/[yourEnvsName]/lib/python3.11/site-packages/mmcls/datasets/mnist.py |
找到url_prefix
这行,将里面的网址替换为你自己的
注意:这里的网址不能是127.0.0.1
这种,要用http://localhost:端口号
下面的MD5校验码改成None就行了
导出模型
之前在另一台电脑上导出的时候没啥问题,但是换了台电脑就出了点状况
首先是
1 | sscma.export configs/classification/mobnetv2_0.35_rep_1bx16_300e_mnist.py $CHECKPOINT_FILE_PATH --cfg-options \ |
需要将里面的$CHECKPOINT_FILE_PATH
替换为自己的检查点文件路径
默认是MNIST_Classification_MobileNetV2_0.5_Rep_32/best_accuracy_top1_epoch_10.pth
问题
其次,执行完命令后,我的环境出现了:version 'GLIBCXX_3.5.32' not found
解决方法
检查过后发现是虚拟环境的lib库缺少libstdc++.so.6.0.33
将系统中usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
复制到~/anaconda3/envs/myenv/lib
下
其次建立链接
1 | ln -sf libstdc++.so.6.0.33 libstdc++.so.6 |
最后检查链接
1 | ll | grep libstdc++.so.6. |
结果中有:
1 | libstdc++.6 -> libstdc++so.6.0.33 |
就表示完成了
重新执行导出模型命令