【嵌入式AI挑战营】02神经网络开发环境安装
<div>算法模型环境安装和ONNX模型获取</div><ol>
<li><strong>RKNN-Toolkit2</strong></li>
</ol>
<div>PC端使用虚拟机软件,在虚拟机软件上安装的是ubuntu22.04系统,然后再这个ubuntu系统上安装RKNN-Toolkit2工具软件。</div>
<div>1.下载rknn-toolkit2程序包</div>
<div>git clone <a href="https://github.com/rockchip-linux/rknn-toolkit2">https://github.com/rockchip-linux/rknn-toolkit2</a></div>
<ol>
<li>安装python环境<br />
sudo apt-get update<br />
sudo apt-get install python3 python3-dev python3-pip<br />
sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6 libgl1-mesa-glx libprotobuf-dev gcc</li>
<li>安装RKNN-Toolkit2的依赖包<br />
在此过程中很难安装,安装过程中经常会中断,使用国内的程序源也不太好使。<br />
pip3 install -r rknn-toolkit2/packages/requirements_cp310-1.6.0.txt<br />
<br />
安装的依赖库如图所示,在使用上面的安装命令失败后,我使用的是单独的安装命令,一个个的依赖库进行安装。<br />
如 pip3 install torch==1.10.1<br />
其中torch是主要问题,他 经常会中断安装。</li>
<li>安装RKNN-Toolkit2<br />
pip3 install rknn-toolkit2/packages/rknn_toolkit2-1.6.0+81f21f4d-cp310-cp310-linux_x86_64.whl</li>
<li>程序验证</li>
</ol>
<div></div>
<div>如图所示,调用不出来rknn.api安装失败。</div>
<div>重新安装,失败了很多次终于是成功了。</div>
<div></div>
<div></div>
<div></div>
<div>如图所示依赖库安装成功,程序调用没有问题。</div>
<ol>
<li>人脸检测环境部署</li>
</ol>
<div>其实使用一个环境就可以,我一开始也是没有摸清脉络,所以按照教程分别安装了相应的开发环境。</div>
<ol>
<li>获取facenet源码<br />
git clone https://github.com/bubbliiiing/facenet-pytorch.git</li>
<li>进入源码目录<br />
cd facenet-pytorch</li>
<li>搭建模型训练环境<br />
conda create -n facenet python=3.6</li>
<li>进入conda虚拟环境并安装运行的依赖库<br />
conda activate facenet<br />
pip install -r requirements.txt</li>
<li>工程文件夹下创建ONNX文件的Python脚本文件<br />
from nets.facenet import Facenet<br />
from torch import onnx<br />
import torch<br />
model_path='model_data/facenet_mobilenet.pth' #模型路径<br />
model = Facenet(backbone="mobilenet",mode="predict",pretrained=True) #模型初始化<br />
device = torch.device('cpu')<br />
model.load_state_dict(torch.load(model_path, map_location=device), strict=False)<br />
example=torch.rand(1,3,160,160) #给定一个输入<br />
torch.onnx.export(model,example,'model_data/facenet.onnx',verbose=True,opset_version=9) #导出</li>
<li>执行脚本文件获取ONNX<br />
python export_onnx.py</li>
<li>依赖库安装过程</li>
</ol>
<div></div>
<div></div>
<div></div>
<div>编写的获取onnx.py文件</div>
<div>运行程序</div>
<div></div>
<div></div>
<div></div>
<div>得到了facenet.onnx文件,如图所示:</div>
<div></div>
<div></div>
<ol>
<li>人脸特征提取环境部署</li>
</ol>
<ol>
<li>获取 facenet 源码</li>
</ol>
<div>git clone https://github.com/bubbliiiing/facenet-pytorch.git</div>
<div>2.进入源码目录</div>
<div>cd facenet-pytorch</div>
<div>3.搭建模型训练环境</div>
<div>conda create -n facenet python=3.6</div>
<div>输入 y 同意安装基础 python 工具包。</div>
<div>4.进入 Conda 虚拟环境并安装运行的依赖库</div>
<div>conda activate facenet<br />
pip install -r requirements.txt</div>
<div>在 model_data 文件夹下存放有训练好的 .pth 权重文件。</div>
<div>5.在工程文件夹下创建导出 ONNX 文件的python脚本export_onnx.py</div>
<div>from nets.facenet import Facenet<br />
from torch import onnx<br />
import torch<br />
<br />
model_path='model_data/facenet_mobilenet.pth' <em>#模型路径 </em><br />
model = Facenet(backbone="mobilenet",mode="predict",pretrained=True) <em>#模型初始化</em><br />
device = torch.device('cpu')<br />
model.load_state_dict(torch.load(model_path, map_location=device), strict=False)<br />
example=torch.rand(1,3,160,160) <em>#给定一个输入</em><br />
torch.onnx.export(model,example,'model_data/facenet.onnx',verbose=True,opset_version=9) <em>#导出</em></div>
<div>6.执行脚本获取 ONNX 文件(facenet conda 环境下)</div>
<ol>
<li> </li>
</ol>
<div>python export_onnx.py</div>
<div>在 <工程文件夹>/model_data 可以获取到装换后的 ONNX 文件。</div>
<ol>
<li>物体识别环境部署</li>
</ol>
<div>1.获取 Yolov5 源码</div>
<div>git clone https://github.com/airockchip/yolov5.git</div>
<div>2.进入 Yolov5 源码目录</div>
<div>cd yolov5</div>
<div>3.搭建模型训练环境</div>
<div>conda create -n yolov5 python=3.9</div>
<div>输入 y 同意安装基础 python 工具包。</div>
<div>4.进入 Conda 虚拟环境并安装运行的依赖库</div>
<div>conda activate yolov5<br />
pip install -r requirements.txt</div>
<ul>
<li><strong>注意</strong>:如果无法完整下载依赖的软件包请尝试设置 pip 的镜像源。</li>
</ul>
<div>5.从默认文件中导出 ONNX 文件(yolov5 conda 环境下)</div>
<div>python export.py --rknpu --weight yolov5s.pt</div>
<div>如果工程目录下没有 yolov5s.pt 的权重文件,会自动拉取文件并转换。在工程文件夹下会生成yolov5s.onnx和RK_anchors.txt文件,在物体识别的源码post_process 函数会使用到 RK_anchors.txt 中的参数。生成的 yolov5s.onnx 模型相比标准的 Yolov5 模型去除了 RKNPU 不兼容的结果提取部分,在应用源码中使用 CPU 来实现,如果使用自己训练的模型需要注意执行 export.py 程序需要添加 --rknpu 参数,在 RKNPU 的应用中才能获取到真正需要的数据。</div>
<div>python export.py --rknpu --weight xxx.pt</div>
<div>将 xxx.pt 替换为训练获取到的.pt权重文件,训练自己需要的模型参考 <a href="https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data">yolov5官方教程</a>。</div>
<div>安装过程,如图所示:</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<p><!--importdoc--></p>
页:
[1]