记录:在Jetson Nano B01 Py3下配置OpenCV+TensorFlow-gpu环境

刷写镜像

官方地址(镜像):
JetPack SDK
博主用的是目前的最新款(JetPack 4.4)

刷写工具:
Etcher

顺带提一句, tf卡建议内存>=32G, 64G为佳
…32g的编译个opencv都不够, 看来最少要用64g的了…

开启风扇

啊,这步之前默认你已经按照引导创建了自己的账户
然后就需要开启风扇了
终端输入如下语句:

cd /etc
sudo touch rc.local
sudo chmod u+x rc.local
sudo gedit rc.local #gedit是编辑器,可以根据个人爱好更换,通常的编辑器有nano,gedit,vim 

在编辑器中输入:

#!/bin/bash
sleep 10
sudo /usr/bin/jetson_clocks
sudo sh -c 'echo 255 > /sys/devices/pwm-fan/target_pwm'

上面的255就是风扇的PWM,可以设置的范围是0~255。设置为0关闭风扇,设置255风扇速度最大。

设置完成后保存并退出, 重启nano

sudo reboot

其他操作查看原链接 :
Jetson Nano 风扇调速

update

经博主尝试,更换其他镜像源(如中科大源)可能导致在 install 时出现无法定位软件包等问题,
所以还是老老实实用自带的源好了…(当然install某些国内源有的软件时可以换过去…毕竟速度属实…)

换的话推荐清华源(一定要注意处理器是aarch64架构的Ubuntu 18.04.2 LTS系统类型的,要使用与之匹配的源)

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe

//建议先换国内源update&upgrade

更新的话直接

sudo apt-get update
sudo apt-get upgrade

如果用的时候觉得nano自动熄屏很烦(未设置默认5min)可以通过右上角系统设置中的 Birghtness&Lock 将熄屏设为 Never

另外如果需要中文输入法可以

sudo apt-get install ibus-pinyin
reboot

然后在右上角选择pinyin

远程连接设置(选)

这里属实恶心…由于hdmi线适配性不好又没有合适的显示器…旧显示器1s闪一次…博主眼睛已瞎, 故而先走此步骤…

买完带供电的HDMI转VGA线后已解决(实际就开始时候供下电即可, 后面可以拔掉)

win10 远程连接(xrdp)

终端输入:

sudo apt-get install xrdp vnc4server xbase-clients

然后
win+r 输入 mstsc 回车 打开远程桌面链接
至于ip地址…emmm 网段扫描+穷举法 简单粗暴
网段扫描工具 (提取码: a61a)
在这里插入图片描述
输入用户名及密码
打开一看…emmm…喜闻乐见, 闪退了

搜了下解决方案,如下:
终端输入:

sudo apt-get install xfce4
echo xfce4-session > ~/.xsession
touch .session
sudo vim /etc/xrdp/startwm.sh

然后在最后两行(test -x /etc/x11/xsession …)上
加上

xfce4-session

在这里插入图片描述
然后 restart 一下

sudo service xrdp restart

这次就不会闪退了
但是又会发现两个问题…

(1). 屏幕刷新速率奇慢无比(fps<1可还行…)
对此我改了下屏幕分辨率和调制解调器
在这里插入图片描述
在这里插入图片描述
(2).终端无法打开(或者说远程终端即使可以打开也没有显示)
这里我提供一种较为简单的解决方案——安装xfce4-terminal

sudo apt-get install xfce4-terminal

然后通过运行程序中搜索xfce4-terminal 回车进行打开
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考链接:
JetsonNano xrdp 远程桌面无法打开 终端Terminal
解决JETSONNANO XRDP 远程桌面无法打开终端TERMINAL 问题

VNC

打开终端界面,输入以下指令编辑
/usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml 文件

sudo vim /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml

<schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'>(应该是第二行)下面插入如下程序段:

    <key name='enabled' type='b'>
      <summary>Enable remote access to the desktop</summary>
      <description>
        If true, allows remote access to the desktop via the RFB
        protocol. Users on remote machines may then connect to the
        desktop using a VNC viewer.
      </description>
      <default>false</default>
    </key>

保存并退出

接着glib-compile-schemas指令将chemas编译一下

sudo glib-compile-schemas /usr/share/glib-2.0/schemas

编译完成之后,点开屏幕右上角的齿轮图标,选择System Settings, 然后点击Desktop Sharing, 安装下面的截图设置参数。注意密码最多支持8位
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置好了之后,关掉窗口,点开左上角的搜索图标(第一个图标),搜索startup applications, 并点开
在这里插入图片描述
打开之后,点击ADD, 然后新建一个程序。 Name 设置为Vino, Command设置为/usr/lib/vino/vino-server . Comment设置为VNC Server。设置好之后保存即可。
在这里插入图片描述
终端输入以下指令来关闭VNC连接加密

gsettings set org.gnome.Vino require-encryption false
gsettings set org.gnome.Vino prompt-enabled false

完成后reboot一下

sudo reboot

如下, 即可连接
在这里插入图片描述
在这里插入图片描述
参考连接: Jetson Nano 系列教程2:登录Jetson Nano

补上VNC Viewer 下载链接:
https://www.realvnc.com/en/connect/download/viewer/

问题依旧很明显, 延迟极高,…
说起来还不如ssh来的舒服…不过奈何博主要需要图形界面做目标检测之类的…故而不做考虑…
mdzz…开始就配置个系统我要啥图形界面, ssh能降低显示吃的GPU资源还能避免电流不够的风险…主要是还没什么延迟…

ssh

查看用户名

whoami

查看ip地址:

ifconfig

连接:

ssh username@ip

Swap交换空间增加(选)

Jetson Nano 内存为4G,显存与内存共用机制。可以使交换空间增加4G,解决一些耗尽内存的程序出错。

依次输入以下命令,并使其永久生效。

sudo fallocate -l 4G /var/swapfile
sudo chmod 600 /var/swapfile
sudo mkswap /var/swapfile
sudo swapon /var/swapfile
sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'

可以用free -h查看

使用jtop查看CPU及GPU资源及温度及show library(选)

更新

sudo pip3 install --upgrade pip 

下载

sudo -H pip3 install jetson-stats

使用时sudo jtop 即可
在这里插入图片描述
图为ssh时cmd的显示

将CUDA添加到 .bashrc 文件

原因:

nvcc -V

报错: bash: nvcc: command not found

解决:
首先vim

cd ~
vim .bashrc

将后面3行添加到结尾位置

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_ROOT=/usr/local/cuda

然后source一下

source .bashrc

更新python3及安装依赖库

更新python3并安装pip3

sudo apt-get install python3-pip python3-dev

更新pip3(从豆瓣源更新)
用原来的源更新肯能会导致连接超时(一页红字警告…)

python3 -m pip install --upgrade pip -i https://pypi.douban.com/simple

接着修改一个pip3文件的小bug

sudo vim /usr/bin/pip3

将原来的

from pip import main
if __name__ == '__main__':
    sys.exit(main())

改为

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

为Python3安装OpenCV(warning: 此方法虽然可以正常编译,但是可能会导致无法将编译好的opencv链接到物理环境中)

实际所用链接: 在Jetson Nano 上配置open4.1.0(亲测成功):

换源注意nano的架构(详见上文update)
首先更新

sudo apt-get update
sudo apt-get upgrade

接着安装依赖

sudo apt-get install build-essential python3 python3-dev python3-pip python3-pandas python3-opencv python3-h5py libhdf5-serial-dev hdf5-tools nano ntp

下一步就是安装CV了

构建OpenCV的第一步是在Jetson Nano上定义交换空间。Jetson Nano具有4GB RAM。这不足以从源代码构建OpenCV。因此,我们需要在Nano上定义交换空间以防止内存崩溃

pip3 install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple
python3 -m virtualenv -p python3 env
echo "source env/bin/activate" >> ~/.bashrc
source ~/.bashrc

接着
//编译OpenCV建议先增加文件交换空间…毕竟就那么大…

# Turn off swap
sudo swapoff /var/swapfile
# Allocates 4G of additional swap space at /var/swapfile
sudo fallocate -l 4G /var/swapfile
# Permissions
sudo chmod 600 /var/swapfile
# Make swap space
sudo mkswap /var/swapfile
# Turn on swap
sudo swapon /var/swapfile
# Automount swap space on reboot
sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'
# Reboot
sudo reboot

然后安装opencv依赖项,用aptitude来进行操作:
没有aptitude就下一个

sudo apt-get install aptitude

继续

# Update
sudo apt-get update
sudo apt-get upgrade
# Pre-requisites
sudo aptitude install build-essential cmake unzip pkg-config
sudo aptitude install libjpeg-dev libpng-dev libtiff-dev
sudo aptitude install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo aptitude install libxvidcore-dev libx264-dev
 
#下面这个会告诉你有冲突项,你第一次选择n,第二次之后选择y即可
sudo aptitude install libgtk-3-dev
 
 
sudo aptitude install libatlas-base-dev gfortran
sudo aptitude install python3-dev

创建一个虚拟环境

# Create a directory for opencv
mkdir -p projects/cv2
cd projects/cv2

接着从GitHub上下载并解压然后改个名字

# Download sources
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.1.0.zip

楼主本人在这里遇到了些问题——wget后unzip报错形如下图(图片来自网络):
在这里插入图片描述
楼主找了很多资料大多数都是说用jar或者下载7zip解压, 本人试了很多次都是各种报错(比如7zip那个下载下来make时缺东西之类的…)
后来楼主换了种思路…用curl下载…
先下载curl

真正的问题在于下载的文件不完整…故而无法用unzip解压…
所以下面这个curl大家酌情使用即可…

sudo apt-get install curl

然后

curl -L https://github.com/opencv/opencv/archive/4.1.0.zip?raw=true  >  opencv.zip
curl -L https://github.com/opencv/opencv_contrib/archive/4.1.0.zip?raw=true  >  opencv_contrib.zip

再unzip就行了

多次尝试后感觉还是wget靠谱些(顺带提一下, opencv4.1大概87.5MB, contrib大概是60多MB, 不到这个大小的应该都是没下全的,unzip报错也很正常…)

可以引入wget断线重连及多次重复机制(contrib同理)

wget -t 0 -c opencv.zip https://github.com/opencv/opencv/archive/4.1.0.zip

趁着月初不限速博主把这俩下载好放到网盘了, 用者自取
链接:opencv-4.1.0
提取码:cdn0
链接:opencv_contrib-4.1.0
提取码:qo9h

下载完成后解压及改名

# Unzip
unzip opencv.zip
unzip opencv_contrib.zip
  
# Rename
mv opencv-4.1.0 opencv
mv opencv_contrib-4.1.0 opencv_contrib

进入虚拟环境

source ~/env/bin/activate

下载Numpy(具体命令推荐跳到下面tensorflow安装中找)

创建工作文件夹(如果还在刚才的projects/cv2中就直接cd opencv 就行)

cd projects/cv2/opencv

接着

mkdir build
cd build

cmake

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/projects/cv2/opencv_contrib/modules \
    -D PYTHON_EXECUTABLE=~/env/bin/python \
    -D BUILD_EXAMPLES=ON ..

上传一些可能缺少的文件(原则上可以先make -j8 make -j1 然后看缺什么再传)
下载链接: https://files.cnblogs.com/files/ikic/boostdesc_bgm.i,vgg_generated_48.i%E7%AD%89.rar
通过xftp4上传到: opencv_contrib/modules/xfeatures2d/src/
在这里插入图片描述
在这里插入图片描述
上传方式见链接: 怎样快速使用Xftp上传下载文件

make -j8 靠谱点,咱还是make -j1吧,虽然慢,但是胜在稳的一批…
过程中可能会出现报错: fatal error: features2d/test/test_detectors_regression.impl.hpp: 没有那个文件或目录

解决方法:
opencv/modules/features2d/test/下的文件

test_descriptors_invariance.impl.hpp
test_descriptors_regression.impl.hpp
test_detectors_invariance.impl.hpp
test_detectors_regression.impl.hpp
test_invariance_utils.hpp

copy到opencv_contrib/modules/xfeatures2d/test/
并将opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp文件中的

#include "features2d/test/test_detectors_regression.impl.hpp"
#include "features2d/test/test_descriptors_regression.impl.hpp"

改为

#include "test_detectors_regression.impl.hpp"
#include "test_descriptors_regression.impl.hpp"

opencv_contrib/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp中的

#include "features2d/test/test_detectors_invariance.impl.hpp" 
#include "features2d/test/test_descriptors_invariance.impl.hpp"

改为

#include "test_detectors_invariance.impl.hpp"
#include "test_descriptors_invariance.impl.hpp"

修改后继续make -j1(然后以此类推,哪里报错就修改那里的文件的头include,哪个文件缺失就从opencv那移过来)

完成后

sudo make install
sudo ldconfig

再将构建的OpenCV库链接到虚拟环境virtualenv

# Go to the folder where OpenCV's native library is built
cd /usr/local/lib/python3.6/site-packages/cv2/python-3.6
ls
# Rename(xxx是可替代的,看ls之后的结果来进行下一步修改)
mv cv2.cpython-36m-xxx-linux-gnu.so cv2.so
# Go to your virtual environments site-packages folder
cd ~/env/lib/python3.6/site-packages/
# Symlink the native library
ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.so cv2.so

这样就完成了

参考:
https://www.cnblogs.com/ikic/p/12601450.html
https://blog.csdn.net/qq_41664447/article/details/100204518
https://www.cnblogs.com/findumars/p/8244997.html
https://www.jianshu.com/p/c943d6c1daa6
https://blog.csdn.net/u012939880/article/details/105864932

安装tensorflow-gpu

pip下载及更新

sudo apt install install -y python3-pip
python3 -m pip install --upgrade pip -i https://pypi.douban.com/simple

接着安装一些库及依赖
(numpy scipy pandas matplotlib sklearn)

sudo apt install python3-numpy python3-scipy python3-pandas python3-matplotlib python3-sklearn libhdf5-serial-dev hdf5-tools

安装tensorflow-gpu并加入环境变量

sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 tensorflow==1.15.2+nv20.6

PS: 如果下载超时问题很严重可以加timeout

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --default-timeout=10000 库名

或者可以直接从网站上下载.whl文件再

pip3 install *.whl

网站链接:
https://developer.nvidia.com/embedded/downloads#?search=tensorflow
在这里插入图片描述
趁着月初不限速(莫得wifi…)博主下了一个, 链接如下:
tensorflow-1.15.2+nv20.6-cp36-cp36m-linux_aarch64.whl
(没c币的可以直接在楼下留言邮箱, 楼主发网盘链接)

另外就是博主下载完whl文件,再用pip3 install tensorflow-1.15.2+nv20.6-cp36-cp36m-linux_aarch64.whl时系统会去安装一堆依赖(好多包都需要对应版本,比如numpy…还得重新下一下,属实无语.)…如果没有更换pip源的话经常会因为Read timed out导致下载失败…故而建议换成国内源进行下载
-i https://pypi.tuna.tsinghua.edu.cn/simple参考: https://blog.csdn.net/qq_36663518/article/details/107460605
这里博主建议用第一个清华源(原因同上, 且这个也是博主用的源)

总之就是哪个依赖下载超时了就换国内源下载, 没有对应版本的就下载对应版本

done…
泪流满面啊(另外强烈建议用个好点的网…)…
在这里插入图片描述
import后也可以通过

hello = tf.constant('hello tensorflow')
sess = tf.Session()

来查看tensorflow-gpu是否安装成功
在这里插入图片描述

在这里插入图片描述

DONE…

如果要install keras的话

pip install keras==2.3.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

即可

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值