首先第一个天打雷劈的事情是我删了好几个游戏才勉强挤出的硬盘空间来精心布置的Windows环境频频出现问题。包括且不限于大家都很熟悉的版本不对问题,遇到问题很简单,创建虚拟环境嘛!然而,也不知道是哪根筋不对,我从py35到py38的虚拟环境都创建过了,却总是在下载tensorflow这个包的时候出问题。我查了半天,还是一头雾水,甚至尝试了用py2的虚拟环境,但是众所周知,python的2代和3代都已经不是一个东西了,后续估计还会有一堆兼容问题无法解决。而且降版本到py2也没有解决tensorflow无法下载的问题,所以我一开始找到的教程,在Windows上的直接转换文件的代码,其中tf2这个包是一直import失败的。所以我就换了个教程,然后发现别人并没有用到tf包...好的,我更困惑了,我的脑容量像电脑内存一样不够用了...
反正一条路走不通我们改战术嘛。但是我在Windows上面部署依然遇到很多奇怪的问题,比如说依赖无法安装。由于时日久远我确实忘了一部分具体遇到的是什么问题,我也觉得我这个战线实在是拖太长了,实际上是十几分钟就能解决好的事情,不知道怎么就是遇到了鬼打墙一样。所以我后来还是选择了Linux环境下面部署,最后是在虚拟机Ubuntu环境下面部署成功的。
我记得看过坛友的说明说,RKNN-toolkit2工具是在官网上面说明了RV1106相对应的工具链是只支持ubuntu的,所以我也很好奇windows上面复现成功的坛友到底是怎么做到的...本人太才疏学浅了
最后使用成功的部署环境是Ubuntu 20.04 python3.8
由于内存爆了这个问题,所以虚拟机我是弄了半天,最后选择去云服务器部署,在Ubuntu官网也说了好几个外网的支持的云服务,分别有微软的Azure,亚马逊,其中学生认证是能够获得一年的免费服务的,听起来相当好的一个福利是不是,但是呢,我在Azure认证的时候就遇到坑了,一通操作猛如虎,结果说我没资格,我差一点感觉自己读了个野鸡大学(等等),还是说学校已经不认我了,后来呢在CDSN和贴吧上面看到经验说,Azure在大陆的学校,尤其是用edu邮箱的,直接认证是会失败的,可能是因为edu邮箱太好注册一类反正被BAN了。然后呢是需要你去找人工客服提交邮件工单作人工审核的,不过这个只要你有真实资料肯定是能过的拉。但是这个过程呢就让我交流了三四天。然后好像还有一个方法是github上面认证学生包,同时GitHub上面也会给你一定的福利,git的学生认证也可以给到很多其他认证,但是我懒癌大爆发所以没搞。
如果不是学生就需要提供信用卡,好像是有visa标和银联标的就可以,然后也可以获取免费的一个月还是三个月服务。
然后云服务器是需要注意有一些坑的,就是免费服务只限定在一些默认设置,这个也是在网上有文章说到的,不过就是跟着默认的设置一直走不要乱选似乎就没什么问题。然后免费设置后面也是有free标。好,大概就是我部署云平台的一些经验。
当然就是今天我也去借用了新的电脑直接部署了一台虚拟机,Ubuntu 20.04LTS系统版本,官网镜像下载直接部署。所以你说我搞之前那些虚的干啥。。。
对了,虚拟机上面的时候还有一个可能大神们绝对意想不到的问题,我设置虚拟内存时候选择的太少,20G默认,装上conda和toolkit之后居然是不够的,直接爆了内存告急。然后虚拟机是不能够额外扩容这个内存的嘛只能在已有的里面分区,所以我不得不又创了一个新的。。。
然后第二个问题也是,呃,我都不知道为什么我会遇到这么多问题反正遇到就直接开始百度了。我遇到第二个问题是无法定位软件包问题,我甚至都不知道怎么发生的,就是靠百度的CDSN教程稀里糊涂地解决了。
https://blog.csdn.net/qq_36698189/article/details/115607886
第三个问题,conda init问题,这个更是...我想大家可能见都根本没见过,这个问题是因为conda环境配置不成功。官方给出的解决界面是这样https://cn.linux-console.net/?p=31311#google_vignette
至于后来我怎么解决的呢,我重启了........
然后是新建的虚拟机的命令是需要自己装的,比如装git。 没错我就是小白到这个我都不知道,但是呢Ubuntu这一次提示就很亲切它会直接提供命令安装代码你直接输入就行了。
那接下来就开始我们的正式流程。
首先是下载RKNN相关仓库。
# 下载 RKNN-Toolkit2 仓库
git clone https://github.com/airockchip/rknn-toolkit2.git
# 下载 RKNN Model Zoo 仓库
git clone https://github.com/airockchip/rknn_model_zoo.git
在之前大佬的流程里面我看到有大佬加了--depth 1 这个指令表示只克隆最近一次commit,但是删掉好像也行?好吧我不清楚发生了什么后果其实。然后也有直接浏览器下载到本地的做法,就其实知道它的存放目录就可以了,因为之后的代码要进去读。所以两种方式都是可以的。而且注意下载到本地的要解压噢。
然后是经典的安装conda流程
wget -c https://mirrors.bfsu.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod 777 Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
然后创建虚拟环境,这个大家也已经轻车熟路了,敲得最多的说不定就是 conda activate XX。
conda create -n toolkit2 python=3.8
conda activate toolkit2
接下来就是安装依赖和工具链本体
没什么特别要注意的,唯一要注意的可能就是一定要进入到对的目录里面吧,然后文件名也要对,其实这都是直接复制就可以的
# 首先进入toolkit的目录
cd rv1106/rknn-toolkit2/rknn-toolkit2
# 选择对应3.8版本的
pip install -r packages/requirements_cp38.txt
pip install packages/rknn_toolkit2-x.x.x+xxxxxxxx-cpxx-cp38-linux_x86_64.whl
#拿不准的话直接打开文件目录直接复制就OK了
然后可以在Ubuntu直接进入python环境验证是否安装成功
python
#然后会进入python环境
>>> from rknn.api import RKNN
>>>
#没有任何报错就说明没问题了
#然后退出Ubuntu中的python环境用exit()函数就可以了
最后直接用examples例程提供的模型去进行了转化,我参考的例程是yolo的这个
进入 rknn_model_zoo/examples/yolov5/model 目录,运行 download_model.sh 脚本,该脚本 将下载一个可用的 YOLOv5 ONNX 模型,并存放在当前 model 目录下,参考命令如下:
cd rv1106/rknn_model_zoo/examples/yolov5/model
chmod +x download_model.sh
./download_model.sh
其实同理的话就是把我们第一站弄好的那个模型放在某个目录下面,然后对他使用convert,然后就可以把它进行转换
最后是转换过程
运行convert.py脚本,将原始的ONNX模型转成RKNN模型
cd Projects/rknn_model_zoo/examples/yolov5/python
python convert.py ../model/yolov5s_relu.onnx rv1106 i8 ../model/yolov5s_relu.rkn
就是替换成我们想要转换的mnist就可以了,但这部分我没截到图,还好,原理是共通的
可以看到已经被转换好了(虽然暂时不是我们要的