当前位置: 代码迷 >> 综合 >> Jetson Nano开发深度学习实践(七) :一种适用于移动端或嵌入式设备的轻量级CNN网络-GhostNet的代码复现并于边缘端测试(附带Anaconda和Pytorch的安装)
  详细解决方案

Jetson Nano开发深度学习实践(七) :一种适用于移动端或嵌入式设备的轻量级CNN网络-GhostNet的代码复现并于边缘端测试(附带Anaconda和Pytorch的安装)

热度:24   发布时间:2023-11-21 09:32:53.0

        首先要保证安装好NVIDIA驱动工具和CUDA以及Cudnn软件包(主机的环境配置在第七章中可以找到,JetsonNano的环境配置参考刷机教程)

1  善用Anaconda工具的虚拟环境功能

        诸如PyTorch这类软件包需要匹配依赖很复杂,稍不留神则会破坏现有的环境,如果你的主机上有多种训练环境则更加需要留心这个问题。

(1)Anaconda的安装教程可参考博客:https://blog.csdn.net/u012243626/article/details/82469174
其中在线安装命令为:
 

wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh

(2)启动conda并建立一个虚拟环境

anaconda
conda create -n [environment_name] python=[x.x]

(3)查看建立虚拟环境是否成功并启动该虚拟环境

conda env list
conda activate [environment_name]

(4)记得更换anaconda的软件源,国内的软件源会使得下载速度加快很多。当然也有较慢的时候,如果发现下载过程中经常断开网络链接,就不要换源了

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/# 设置搜索时显示通道地址
conda config --set show_channel_urls yes# 注意pytorch, 还需要额外添加pytorch的镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

   删除换源的代码

conda config --remove-key channels

        若要查看已经安装过的镜像源,cmd窗口执行命令:

conda config –show


        查看配置项channels,如果显示带有tsinghua,则说明已安装过清华镜像。

2  安装PyTorch

        安装方法:https://pytorch.org/get-started/locally/

        这里需要注意依赖的匹配问题,版本不匹配会报错,主要是匹配CUDA版本与cudatoolkit版本与PyTorch的版本,查询CUDA与cudatoolkit版本的命令为:

nvcc -V

        如果在上面的链接https://pytorch.org/get-started/locally/中找不到匹配的版本,可点击install previous versions of PyTorch或直接在https://pytorch.org/get-started/previous-versions/中查找

3 了解一下 MobileNet网络

        GhostNet网络是在MobileNet网络基础上进行修改的产物,故而对MobileNet网络我们应该要先大致了解一下。在这之前我们还要先明确几个对这篇文章比较重要的概念:引用:https://blog.csdn.net/mzpmzk/article/details/82976871

*  参数数量(params):关系到模型大小,单位通常为M,参数用 float32 表示,所以模型大小是参数数量的4倍

*  理论计算值(FLOPs):是 floating point operations 的缩写(注意 s 小写),可以用来衡量算法/模型的复杂度,这关系到算法速度,大模型单位通常为G,小模型的单位通常为M  ;  通常只考虑乘加操作(Multi-Adds)的数量,而且只考虑CONV和FC等参数层的计算量,忽略BN 和PReLU 等等。一般情况,CONV 和 FC 层也会忽略纯加操作的计算量,如bias偏置加和 shotcut 残差加等,目前技术有 BN 的 CNN 可以不加 bias

        博客:https://blog.csdn.net/hongbin_xu/article/details/82957426详细介绍了MobileNet网络的原理以及参数、计算量通过何种操作做到了明显减少。简单来说分为两部分depthwise卷积和pointwise卷积:depthwise卷积对每个输入通道单独使用一个卷积核进行处理,pointwise卷积是数个1x1卷积,用于将depthwise卷积的输出组合起来。注意dw与pw是联合使用的。

4  GhostNet网络
(1)GhostNet的github项目地址:https://github.com/iamhankai/ghostnet.pytorch

        但原版GhostNet项目存在一些错误,我已在我的仓库中进行了修改,读者可直接git:

(2)GhostNet网络原理:https://blog.csdn.net/u011995719/article/details/105207344/

参考知乎中的一句话:GhostNet相当于将MobileNet两个卷积调转一下位置进行训练