人工智能实验——猫狗分类
在本次的实验,主要目的是利用已有的模型算法,进行猫狗图片进行训练。最后实现能够分辨猫狗图片的功能。本次实验利用的是华为的MindSpore框架,这是华为于19年推出的框架,与TensorFlow和PyTorch一样,其主要功能就是人工智能计算。下面将说明实验进行的步骤。
环境搭建
为了方便管理环境,与其他环境区分起来,本次实验我使用了
Anacond
来设置环境。所需要的两个必要环境分别是
Python
与
MindSpore
-
创建Python环境
对于Python环境的配置,主要是在Anaconda中新建一个环境,打开
CondaPrompt
进行如下操作:conda create -n MindSpore python==3.7.5 #其中-n表示指定名称 #python==3.7.5为指定python版本 conda activate MindSpore #切换至MindSpore环境中
-
安装MindSpore
安装完
Python
环境后下一步是安装MindSpore框架,其安装方法有两种一种是用
pip
安装,另外一个是离线安装,这里我选择了pip在线安装。利用pip安装之前,需要先换下载源,以防下载时超时出错。对于换源也有两种方法,如下操作所示,-
全局换源(长期)
在文件管理器的地址栏中输入
%AppData%
如图所示,然后会跳转到一个文件夹,在文件夹中创建名为
pip
的文件夹,进入文件夹创建一个名为
pip.ini
的文件,然后复制下面的内容进行粘贴,然后源就换好了,[global] timeout = 60 index-url = https://mirrors.huaweicloud.com/repository/pypi/simple/ trusted-host = mirrors.huaweicloud.com timeout = 120
-
临时换源(短期)
对于临时换源只需要在输入
pip
安装指令时利用
-i
指令指定源地址即可
换源成功后输入下面的指令进行安装,工程只需要按
Y
即可,pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.5.0/MindSpore/cpu/x86_64/mindspore-1.5.0-cp37-cp37m-win_amd64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
为了确保是否已经安装完成,在终端中输入下面的指令
python -c "import mindspore;mindspore.run_check()"
若输出结果如下图所示则为安装成功,(这里的1.7.0应该变为1.5.0)
-
数据预处理
环境配置好后,需要下载相关的代码文件与数据集,代码文件和数据集均在文件夹
MindSporePetClassification
中,文件中有
code
是本次实验中的代码文件,
kagglecatsanddogs_3367a.zip
是数据集,
converter1.5
是转换器用以将参数结果转换为适合APP使用的文件。在确认文件都齐全后,安装必要的依赖包,依次输入下面两条指令即可安装,安装完成后若要确认安装结果可输入
pip list
查看,
pip install -r requirements.txt
pip install easydict
打开conda的终端,切换到此文件中,然后输入下面指令进行数据预处理,
python .\code\preprocessing_dataset.py .\kagglecatsanddogs_3367a.zip
其处理完成后如图所示,
预处理的大致流程图如下所示,
最后压缩包的内容会在过滤后划分为测试集和训练集。若要设置自定义的训练集和测试集比例,那么只需要更改
preprocessing_dataset.py
的
eval_split
即可。
模型训练
再对文件进行预处理后开始进行训练,训练的指令如下,
python .\code\train.py
在训练时有用到一个名为
mobilenetV2.ckpt
的文件,这是一个训练检查点。也可以说这是预训练出来的权重文件,这是一个半成品但是可以通过这样减少计算量以加快整个训练所需时间。在过程中会显示两次猫狗图片,如下所示,其分别对应的是预训练的结果与完全训练的结果,这两图都需要看完关掉后程序才会继续运行。最后训练完成后,参数文件会以
mobilenetv2.mindir
输出到根目录下。
下图为整个训练大大致流程图,
模型转换
实验最后是要布置要手机设备中的,而对于APP需要对训练得到的结果转换格式才可以导入APP中。模型的转换利用的是MindSpore配套的converter工具,它可以将mindir转为ms模型。进入文件夹中的converter1.5文件夹,然后输入下面的指令,
.\converter_lite.exe --fmk=MINDIR --modelFile=../mobilenetv2.mindir --outputFile=pet
#其中
#--fmk 指定原始模型的格式在这里是MINDIR格式
#--modelFILE 对应原始模型路径
#--outputFile 输出模型的路径
转换成功后会如下图所示,文件会输出到converter文件夹中,其文件名为
pet.ms
配置APP
在得到模型转换成功的文件后,需要下载APP进行配置。其下载地址如下:
https://download.mindspore.cn/model_zoo/official/lite/apk/pet/petclassification1.1.3.apk
现在所要做的就是将
pet.ms
文件导入apk中,其导入是通过USB进行的。将apk安装于手机,然后用USB连接电脑。连接完后需要在手机中打开USB调试,其打开方法位于
华为手机一般在设置->系统和更新->开发人员选项->USB调试中打开“USB调试模式”
,如果是第一次打开,需要先打开
设置->关于手机
,连续点击版本号7次以上,会提示“处于开发者模式”,再去打开USB调试模式。完成后需回到电脑进行操作,进入
ADB
文件夹,然后在conda终端中输入下面的指令,
.\adb.exe push d:\MindSporePetClassification\converter1.5\pet.ms /sdcard/Android/data/com.mindspore.classificationforpet/files/
在将模型载入app后,却显示无法加载。显示怀疑模型文件的问题,但是在压缩包中找到了正确的模型一样无法加载。于是考虑版本问题,根据下载网址先后下载了一个旧版本和一个新版本,旧版本直接闪退,新版本将
PetClassification
去除了无法载入。于是考虑手机问题,于是安装了安卓模拟器来进行尝试。
结果同样的问题
最后寻找出了1.1.3版本载入模型的路径,然后将模型拉入文件夹中,最后才得以成功。1.1.3版本的模型路径在
Android/data/com.mindspore.classificationforpet/files/
旧版本的APP不能识别模型,可能是因为converter版本的原因。