文章目录

  • 准备
  • 使用SDKmanager刷机
  • 手动安装SDK
  • SSD启动
    • 1. 格式化已安装的 SSD
    • 2. 从SD卡复制到SSD
    • 3. 启用从 SSD 启动
  • 换源
    • 1. 备份
    • 2. 删除或注释sources.list中的所有内容,将下面的内容复制进去
    • 3. 保存
  • 查看一些信息
    • 1.查看cuda的版本
    • 2.查看cudnn的版本
    • 3.查看opencv的版本
    • 4.查看TensorRT的版本
    • 5.查看系统版本
    • 6.查看正在运行的进程
  • 一些软件的安装
    • 1.安装todesk远程软件
    • 2.装jtop查询系统工具
  • 修改默认python、pip版本
    • 1. 修改python版本
    • 2.修改pip版本
  • 一些软件的安装
    • 1. torch & torchvision的安装
    • 2.archiconda的安装
    • 3.TensorRT的安装
    • 4.安装中文输入法
    • 5.安装ROS
      • 1.更换源
      • 2.设置最新的密钥
      • 3、安装:
      • 4、初始化ROS
      • 5、安装rosinstall
      • 6、添加ros环境变量
      • 7、测试
    • 6. 安装pycharm
      • 1. 下载Pycharm
      • 2.解决这个问题的方法:
    • 7.安装DeepStream
  • 部署yolov5(使用TensorRT)
    • TensorRT加速
  • 安装pycharm
    • 1. 下载Pycharm
    • 2.解决这个问题的方法:

准备

  1. 数据线、键盘、鼠标、显示器少不掉(显示器要支持HDMI接口,我看网上说HDMI转VGA的会黑屏,没有试过)
  2. Ubuntu16或Ubuntu18的虚拟机,或电脑作为主机(Ubuntu20.04不行,因为我电脑就是,第一次装了没法用)
  3. 有网的环境,而且网速一定要好,我在实验室里网速一般,经常下载失败

使用SDKmanager刷机

  1. 打开准备的Ubuntu系统作为主机
    注意 如果使用虚拟机需要分配较大的硬盘空间,起码得40GB,最好能有100G这个样子,否则空间不足也会失败
  2. 注册英伟达开发者账号https://developer.nvidia.com/
  3. 下载英伟达的SDKmanager(地址百度一下吧),安装,打开,登录
  4. TX2板子的第三根引脚和GND相连(进入恢复模式),上电,连主机
  5. Host Machine有的博客里面也点了,实际上不需要的,这个是给你电脑主机安装cuda之类的,如果没有这个需要,就不用勾上
    可以输入lsusb 看看有没有英伟达的设备,确保板子连上
    7. 底下的第一个I accept…要勾上,第二个Downloader now and install later第一次也建议勾上,意思是先下载,不安装。待会下载完了可以一起安装。如果是边下载变安装,网速不好很容易出问题
  6. 先会烧写jetson os(就是魔改过的Ubuntu18),烧写到要结束的时候,显示屏会自己亮起来,过一段时间会出现这样的提示

    不慌,这个是镜像已经烧写好了,可以进入系统了,后面是安装SDK软件的部分。我们先登录系统,设置用户和密码
    之后在TX2上设置开启SSH服务
ps -e | grep ssh  # 查看有没有SSH服务
sudo apt-get install openssh-server
sudo apt-get install openssh-client
service ssh start # 开启服务

如果ps -e | grep ssh当中有sshd则表示正常
可以通过ifconfig或者 ip addr查看ip地址
在主机上输入账号和密码一般就可以连接了

确保主机和TX2在同一个局域网络下
我的虚拟机配置如下,建议使用桥接模式而不是NAT模式

然后耐心等待他自己安装,有可能不能成功,多试几次

我在最后一步的Deepstream出错了,查看日志,认为是内存不够的问题,这个SDK暂时不是很重要,后面自己装一下
在使用SDKmanager中有问题可以参考官方的说明
我遇到的问题:
1、Default ip is not avaliable. Please make sure the default ip is shown in ip addr, or use a customer ip instead.
ip默认是192.168.55.1,我第一次刷机是直接可以连上的,第二次就报了这个错误,我换了一个ip192.168.3.141就可以了
2、flash 1%的时候就会error, 提示板子状态不对,不在恢复模式之类的话(我确定是在恢复模式),多试几次,可能试一次就好了,也有可能试很多很多次(啥也没动,不知道为什么,玄学)

手动安装SDK

虽然英伟达提供的工具傻瓜式操作,十分好用(也不好用,十分容易出错),但实际难免会遇到正常刷机不了的。英伟达提供了其他的安装方法https://docs.nvidia.com/jetson/jetpack/install-jetpack/index.html
刷完机是裸系统的话,可以让板子在线安装(我没试过)

我第一次也没有安装成功,自己手动安装了cuda,cudnn,pytorch,tersonRT等。后面可能会介绍一些安装的方法。

SSD启动

我们TX2的板子上装了一块128GB的固态硬盘,十分实用,下面介绍如何将SSD设为第一启动项

1. 格式化已安装的 SSD

打开DISK

点右上角的三条横线按钮

之后Fromat
点底下的加号

留16GB的交换空间

之后create,就成功创建卷

2. 从SD卡复制到SSD

git clone https://github.com/jetsonhacks/rootOnNVMe.git
cd rootOnNVMe
./copy-rootfs-ssd.sh

如果执行了这个脚本却没有反映,一般是权限不够,给它权限就好了,就像这样

chmod  +x copy-rootfs-ssd.sh

3. 启用从 SSD 启动

./setup-service.sh

之后重新启动,就可以看到TX2的内存有100多G了

换源

TX2的软件源为国外服务器,网速会很慢,需要换国内的ARM源(记得是ARM的)

1. 备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak    #先备份原文件sources.list
sudo vim /etc/apt/sources.list  #sudo打开sources.list

2. 删除或注释sources.list中的所有内容,将下面的内容复制进去

清华源

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

科大源:

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse
deb htp://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main universe restricted
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main universe restricted

3. 保存

sudo apt-get update
sudo apt-get upgrade

查看一些信息

1.查看cuda的版本

nvcc -V # 或者nvcc --version

2.查看cudnn的版本

网上的那些一般输进去没有反应,仔细考虑过觉得这样才是正确的

cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

3.查看opencv的版本

pkg-config --modversion opencv

一开始不能查看opencv版本,原因是由于没有找到opencv.pc,而jetpack4.4+刷机刷的opencv是opencv4
将/usr/lib/aarch64-linux-gnu/pkgconfig中的opencv4.pc,复制到/usr/lib/pkgconfig下,并改名为opencv.pc就可以了。

cd  /usr/lib/aarch64-linux-gnu/pkgconfig
sudo cp opencv4.pc /usr/lib/pkgconfig/opencv.pc

默认是4.1.1

4.查看TensorRT的版本

dpkg -l | grep TensorRT

5.查看系统版本

cat /etc/lsb-release

6.查看正在运行的进程

top

一些软件的安装

1.安装todesk远程软件

sudo dpkg -i todesk_x.x.x_aarch64.deb

2.装jtop查询系统工具

sudo -H python3 -m pip install jetson-stats

修改默认python、pip版本

1. 修改python版本

默认板子刷机后是自带python为2.7和python3.6.9解析器的(使用python3 -V可以查到),但默认是python2.7 ,如果需要python3.6.9,需使用下面命令调用python3.6版本

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
sudo update-alternatives --config python

2.修改pip版本

sudo apt-get install python3-pip

一些软件的安装

1. torch & torchvision的安装

此处参考官方教程 里面内容十分详尽
本人是下载使用了官方提供的torch-1.8.0-cp36-cp36m-linux_aarch64.whl包

sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
pip3 install Cython
pip3 install numpy torch-1.8.0-cp36-cp36m-linux_aarch64.whl #注意路径下包含刚才下载的“torch-1.8.0”这个包

pytorch应该就被安装好了,安装torchvision的话要注意对应pytorch的版本!

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
git clone --branch v0.9.0 https://github.com/pytorch/vision # 从github上下载对应版本的
python3 setup.py install --user # 在下载下来的文件夹下运行安装程序,编译过程会比较慢,耐心等一下

我遇到的问题:
报这样的错误:

virtual AVCodec* findCodec(AVCodecParameters* params);
^~~~~~~~~~~~~~~~~
/home/paluhin/Downloads/torchvision/torchvision/csrc/io/video_reader/…/decoder/stream.h:52:20: error: expected ‘;’ at end of member declaration
virtual AVCodec* findCodec(AVCodecParameters* params);
^~~~~~~~~
/home/paluhin/Downloads/torchvision/torchvision/csrc/io/video_reader/…/decoder/stream.h:52:47: error: expected ‘)’ before ‘’ token
virtual AVCodec findCodec(AVCodecParameters* params);
^

网上找来找去也没有人提到,最后在论坛找到了方法,希望以后遇到这个问题的人不会像我一样煎熬

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
# 不行的话试一下
$ sudo mv /usr/bin/ffmpeg /usr/bin/ffmpeg_backup

2.archiconda的安装

本人现在是不使用conda的,但之前装过,记录一下
TX2无法使用anaconda,有大佬编译了archiconda,这东西就是anaconda的aarch64的版本。我用这个进行虚拟环境的安装。
直接到https://github.com/Archiconda/build-tools/releases下载.sh文件
然后到你下载文件的地址
sh 你的sh文件

./Archiconda3-0.2.3-Linux-aarch64.sh

之后点yes,安装完毕。安装中间有叫你选择目录,如果不喜欢它默认的可以换。
archiconda的使用和普通的anaconda没有什么区别
如果你在虚拟环境里面使用pytorch,请务必建立python3.6的环境

conda create -n pytorch python=3.6
conda activate pytorch

3.TensorRT的安装

刷机过后会自带TensorRT,下面记录自己之前自行安装的方法。仅记录自己用tar安装tensorRT的流程,对于DEV版本等的安装,请移步其他博客。
参看cuda,cudnn的版本后挑选TensorRT版本(千万不要不符合,不然很麻烦,可能我当时第一次选的不对报了一些奇怪的错误,换了版本就好了)
下面的指令是copy其他博主的

# 在home下将下载的压缩文件进行解压
tar xzvf TensorRT-6.0.1.5.Ubuntu-16.04.x86_64-gnu.cuda-10.1.cudnn7.6.tar.gz# 解压得到TensorRT-6.0.1.5的文件夹,将里边的lib绝对路径添加到环境变量中
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xxxxx/TensorRT-6.0.1.5/lib
# 如果手动添加到.bashrc文件中,需要执行source .bashrc命令,配好的环境才能生效# 安装TensorRT
cd TensorRT-6.0.1.5/python
pip install tensorrt-6.0.1.5-cp37-none-linux_x86_64.whl
# 博主亲测,这里你的python环境并没有限制,py35,py36,py37都可# 安装UFF,支持tensorflow模型转化
cd TensorRT-6.0.1.5/uff
pip install uff-0.6.5-py2.py3-none-any.whl# 安装graphsurgeon,支持自定义结构
cd TensorRT-6.0.1.5/graphsurgeon
pip install graphsurgeon-0.4.1-py2.py3-none-any.whl

4.安装中文输入法

sudo apt install fcitx fcitx-googlepinyin fcitx-table-wbpy fcitx-pinyin fcitx-sunpinyin

在语言设置选项里(langugae support)选择fcitx。
重启电脑,在Fcitx configuration里配置下就好了。

5.安装ROS

1.更换源

我用的是自带的源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

如果需要换源的话可以参考这一篇

2.设置最新的密钥

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

3、安装:

sudo apt-get update
sudo apt-get install ros-melodic-desktop-full
sudo apt-get install ros-melodic-rqt*

4、初始化ROS

sudo apt install python-rosdep
sudo rosdep init
rosdep update

如果出现下面情况,基本是网络问题,换个网络尝试下

ubuntu@ubuntu-d:~$ sudo rosdep init
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

或修改hosts Ubuntu直接在终端输入

sudo gedit /etc/hosts

添加以下内容保存即可

151.101.84.133 raw.githubusercontent.com

这个解决方法来自这里
如果不行试试这个
或者这个
其实我后来依旧出问题

rosdep update
reading in sources list data from /etc/ros/rosdep/sources.list.d
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml]:<urlopen error timed out> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml)
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml]:<urlopen error [Errno 104] Connection reset by peer> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml)
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml]:<urlopen error [Errno 104] Connection reset by peer> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml)
^CTraceback (most recent call last):File "/usr/bin/rosdep", line 11, in <module>load_entry_point('rosdep==0.21.0', 'console_scripts', 'rosdep')()File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 146, in rosdep_mainexit_code = _rosdep_main(args)File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 441, in _rosdep_mainreturn _no_args_handler(command, parser, options, args)File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 450, in _no_args_handlerreturn command_handlers[command](options)File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 662, in command_updateros_distro=options.ros_distro)File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 480, in update_sources_listrosdep_data = download_rosdep_data(source.url)File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 315, in download_rosdep_dataf = urlopen(url_request, timeout=DOWNLOAD_TIMEOUT)File "/usr/lib/python2.7/urllib2.py", line 154, in urlopenreturn opener.open(url, data, timeout)File "/usr/lib/python2.7/urllib2.py", line 429, in openresponse = self._open(req, data)File "/usr/lib/python2.7/urllib2.py", line 447, in _open'_open', req)File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chainresult = func(*args)File "/usr/lib/python2.7/urllib2.py", line 1248, in https_opencontext=self._context)File "/usr/lib/python2.7/urllib2.py", line 1202, in do_openh.request(req.get_method(), req.get_selector(), req.data, headers)File "/usr/lib/python2.7/httplib.py", line 1099, in requestself._send_request(method, url, body, headers)File "/usr/lib/python2.7/httplib.py", line 1139, in _send_requestself.endheaders(body)File "/usr/lib/python2.7/httplib.py", line 1095, in endheadersself._send_output(message_body)File "/usr/lib/python2.7/httplib.py", line 898, in _send_outputself.send(msg)File "/usr/lib/python2.7/httplib.py", line 860, in sendself.connect()File "/usr/lib/python2.7/httplib.py", line 1312, in connectHTTPConnection.connect(self)File "/usr/lib/python2.7/httplib.py", line 837, in connectself.timeout, self.source_address)File "/usr/lib/python2.7/socket.py", line 566, in create_connectionsock.connect(sa)File "/usr/lib/python2.7/socket.py", line 228, in methreturn getattr(self._sock,name)(*args)
KeyboardInterrupt

没办法,买代理吧
如果出现下面情况,是python版本问题,换到python2就可以了
home/rm/.local/lib/python3.6/site-packages/pkg_resources/init.py:119:

PkgResourcesDeprecationWarning: 0.18ubuntu0.18.04.1 is an invalid version and will not be supported in a future releasePkgResourcesDeprecationWarning,
Traceback (most recent call last):File "/usr/bin/rosdep", line 6, in <module>from pkg_resources import load_entry_pointFile "/home/rm/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3266, in <module>@_call_asideFile "/home/rm/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3241, in _call_asidef(*args, **kwargs)File "/home/rm/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3279, in _initialize_master_working_setworking_set = WorkingSet._build_master()File "/home/rm/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 573, in _build_masterws.require(__requires__)File "/home/rm/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 891, in requireneeded = self.resolve(parse_requirements(requirements))File "/home/rm/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 777, in resolveraise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'rosdep==0.21.0' distribution was not found and is required by the application

解决:

sudo update-alternatives --config python
有 2 个候选项可用于替换 python (提供 /usr/bin/python)。选择       路径            优先级  状态
------------------------------------------------------------
* 0            /usr/bin/python3   150       自动模式1            /usr/bin/python2   100       手动模式2            /usr/bin/python3   150       手动模式要维持当前值[*]请按<回车键>,或者键入选择的编号:1
update-alternatives: 使用 /usr/bin/python2 来在手动模式中提供 /usr/bin/python (python)

重新进行初始化等步骤又可以了

sudo rosdep init
Wrote /etc/ros/rosdep/sources.list.d/20-default.list
Recommended: please runrosdep update

5、安装rosinstall

sudo apt-get install python-rosinstall

6、添加ros环境变量

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

完成了

7、测试

可以尝试分别在三个终端下执行这三条命令

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

成功的话,可以方向键操作小海龟,则ROS成功安装。

6. 安装pycharm

1. 下载Pycharm

(1)下载pycharm社区版,下载地址
(2)解压下载文件到任意位置待用。可以使用tar -xf来进行解压。
(3)cd到bin文件夹,运行./pycharm.sh,出现以下报错。问题是缺少JDK环境。

Gtk-Message: 18:05:39.195: GtkDialog mapped without a transient parent. This is discouraged.

2.解决这个问题的方法:

(1)输入以下指令:(jetpack为4.5.1版本)

apt-cache search openjdk
sudo apt-get install openjdk-11-jdk

(2)等待完成后用下面指令检查版本情况

java -version // 查看安装结果
penjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.18.04, mixed mode)

(3)没问题后进行环境变量配置
首先切换用户到root

sudo -i
gedit ~/.bashrc

在末尾加入

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source ~/.bashrc

(4)运行Pycharm
进入刚刚解压的pycharm/bin文件夹运行./pycharm.sh

7.安装DeepStream

Deepstream的安装可以参考官方教程
https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Quickstart.html#jetson-setup
先安装依赖

sudo apt install \
libssl1.0.0 \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstrtspserver-1.0-0 \
libjansson4=2.11-1

在官网Install the DeepStream SDK一栏
我选择了Method 2的方法,原文如下:

Method 2: Using the DeepStream tar package: https://developer.nvidia.com/deepstream_sdk_v6.0.0_jetsontbz2
Download the DeepStream 6.0 Jetson tar package deepstream_sdk_v6.0.0_jetson.tbz2 to the Jetson device.
Enter the following commands to extract and install the DeepStream SDK:

$  sudo tar -xvf deepstream_sdk_v6.0.0_jetson.tbz2 -C /
$ cd /opt/nvidia/deepstream/deepstream-6.0
$ sudo ./install.sh
$ sudo ldconfig

我其实用的是v5.1.0 版本,下的是deepstream_sdk_v5.1.0_jetson.tbz2,操作是一样的
安装完成进入官方例程文件夹

cd /opt/nvidia/deepstream/deepstream-5.1/samples/configs/deepstream-app/
deepstream-app -c source12_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx2.txt

部署yolov5(使用TensorRT)

到github上去下载源码

git clone https://github.com/ultralytics/yolov5.git

在yolov5项目下,右键打开终端,安装依赖
我们已经安装好了pytorch,torchvision,建议把这两个注释掉,以防命令行自动更新了

pip3 install -r requirements -i https://mirror.baidu.com/pypi/sample

下载yolov5的权重,我用的是之前我自己训练好的,需要改名为yolov5s.pt(不改名字就改代码)

TensorRT加速

git clone https://github.com/wang-xinyu/tensorrtx.git

具体编译方法原作者有很详细的说明

cd tensorrtx
cp yolov5/gen_wts.py ~/yolov5
cd ~/yolov5
python gen_wts.py -w yolov5s.pt -o yolov5s.wts

就得到了wts格式的文件

# 需要改一下CLASS NUM的值
cd ~/tensorrtx/yolov5
mkdir build && cd build
mv ~/yolov5/yolov5s.wts ./
cmake ..
make -j

等出现这个就好了

[ 60%] Building CXX object CMakeFiles/yolov5.dir/calibrator.cpp.o
[ 80%] Building CXX object CMakeFiles/yolov5.dir/yolov5.cpp.o
[100%] Linking CXX executable yolov5
[100%] Built target yolov5

表示编译成功

./yolov5 -s yolov5s.wts yolov5s.engine s #生成engine文件需要一段时间

等出现这个就好了

Loading weights: yolov5s.wts
Building engine, please wait for a while...
Build engine successfully!

有了engine就可以调用了
测试一下

./yolov5 -d yolov5s.engine ../samples

samples下面放需要测试的图片

6ms
6ms

会出现推理所用的时间,在build下面会出现推理后的结果
我遇到的问题
1、

[12/24/2021-11:36:38] [E] [TRT] Parameter check failed at: ../builder/Network.cpp::addScale::482, condition: shift.count > 0 ? (shift.values != nullptr) : (shift.values == nullptr)
yolov5: /home/rm/tensorrtx/yolov5/common.hpp:155: nvinfer1::IScaleLayer* addBatchNorm2d(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char>, nvinfer1::Weights>&, nvinfer1::ITensor&, std::__cxx11::string, float): Assertion `scale_1' failed.
Aborted (core dumped)

不知道为什么,重新下载编译了一遍工程就好了,可能文件缺失了吧,又是玄学
2、
编译核心时出现问题

Loading weights: yolov5s.wts
[01/20/2022-18:08:29] [E] [TRT] (Unnamed Layer* 214) [Convolution]: kernel weights has count 3840 but 32640 was expected
[01/20/2022-18:08:29] [E] [TRT] (Unnamed Layer* 214) [Convolution]: count of 3840 weights in kernel, but kernel dimensions (1,1) with 128 input channels, 255 output channels and 1 groups were specified. Expected Weights count is 128 * 1*1 * 255 / 1 = 32640
[01/20/2022-18:08:29] [E] [TRT] (Unnamed Layer* 214) [Convolution]: kernel weights has count 3840 but 32640 was expected
[01/20/2022-18:08:29] [E] [TRT] (Unnamed Layer* 214) [Convolution]: count of 3840 weights in kernel, but kernel dimensions (1,1) with 128 input channels, 255 output channels and 1 groups were specified. Expected Weights count is 128 * 1*1 * 255 / 1 = 32640
[01/20/2022-18:08:29] [E] [TRT] (Unnamed Layer* 214) [Convolution]: kernel weights has count 3840 but 32640 was expected
[01/20/2022-18:08:29] [E] [TRT] (Unnamed Layer* 214) [Convolution]: count of 3840 weights in kernel, but kernel dimensions (1,1) with 128 input channels, 255 output channels and 1 groups were specified. Expected Weights count is 128 * 1*1 * 255 / 1 = 32640
[01/20/2022-18:08:29] [E] [TRT] (Unnamed Layer* 214) [Convolution]: kernel weights has count 3840 but 32640 was expected
[01/20/2022-18:08:29] [E] [TRT] (Unnamed Layer* 214) [Convolution]: count of 3840 weights in kernel, but kernel dimensions (1,1) with 128 input channels, 255 output channels and 1 groups were specified. Expected Weights count is 128 * 1*1 * 255 / 1 = 32640
Building engine, please wait for a while...
[01/20/2022-18:08:29] [E] [TRT] (Unnamed Layer* 214) [Convolution]: kernel weights has count 3840 but 32640 was expected
[01/20/2022-18:08:29] [E] [TRT] (Unnamed Layer* 214) [Convolution]: count of 3840 weights in kernel, but kernel dimensions (1,1) with 128 input channels, 255 output channels and 1 groups were specified. Expected Weights count is 128 * 1*1 * 255 / 1 = 32640
[01/20/2022-18:08:29] [E] [TRT] Could not compute dimensions for (Unnamed Layer* 214) [Convolution]_output, because the network is not valid.
[01/20/2022-18:08:29] [E] [TRT] Network validation failed.
Build engine successfully!
yolov5: /home/ubuntu/tensorrtx-yolov5-RM/yolov5/yolov5.cpp:245: void APIToModel(unsigned int, nvinfer1::IHostMemory**, bool&, float&, float&, std::string&): Assertion `engine != nullptr' failed.
已放弃 (核心已转储)

CALSS_NUM没有改
未完待续。。

安装pycharm

1. 下载Pycharm

(1)下载pycharm社区版,下载地址
(2)解压下载文件到任意位置待用。可以使用tar -xf来进行解压。
(3)cd到bin文件夹,运行./pycharm.sh,出现以下报错。问题是缺少JDK环境。

Gtk-Message: 18:05:39.195: GtkDialog mapped without a transient parent. This is discouraged.

2.解决这个问题的方法:

(1)输入以下指令:(jetpack为4.5.1版本)

apt-cache search openjdk
sudo apt-get install openjdk-11-jdk

(2)等待完成后用下面指令检查版本情况

java -version // 查看安装结果
penjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.18.04, mixed mode)

(3)没问题后进行环境变量配置
首先切换用户到root

sudo -i
gedit ~/.bashrc

在末尾加入

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source ~/.bashrc

(4)运行Pycharm
进入刚刚解压的pycharm/bin文件夹运行./pycharm.sh

TX2刷机和软件安装过程记录相关推荐

  1. 程序员之常用软件安装过程记录

    前言 最近重做系统,顺便整理一下安装常见编程语言和工具过程 本文原创,创作不易,转载请注明!!! Work 这部分主要是开发工具和编程环境的安装与测试运行 C/C++ CodeBlocks 安装与调试 ...

  2. tx2 刷机, cudnn安装失败,手动安装

    手动安装cudnn 所需文件 安装 文件拷贝到cuda的路径 查看cudnn的版本 删除旧版cudnn 最近使用Jetpack 4.2, 刷完系统后,发现cudnn没有装上,因此准备离线安装. 所需文 ...

  3. TX2 刷机 安装 jetpack 卡在determining IP adress问题

    TX2刷机安装jetpack时,flashOS finished后,卡在determining IP adress. 解决方案: 点击安装界面的cancel按键退出,重新执行JetPack****.r ...

  4. 北塔网管软件BTSO2.5安装过程记录

    北塔网管软件据说是同类比较好的,原来的BTIM系列好像停止更新了,用BTSO版本代替,叫智慧运维平台,据说有各种改进,先把安装过程记录下来,以备以后重装. BTSO分两个部分:平台服务器和注册服务器, ...

  5. Auvidea J120 TX2开发板 Jetpack刷机与驱动安装

    Auvidea J120 TX2开发板 Jetpack刷机与驱动安装 一.刷机准备 下载Nvidia SDK Manager 网址:https://developer.nvidia.com/nvidi ...

  6. Jetson TX2刷机教程

    一.参考资料 Jetson TX2官方文档 Jetpack开发者文档 Jetson官方安装教程 jetson tx2刷机 [TX2]NVIDIA Jetson Tx2刷机指南(JetPack-4.4. ...

  7. Jetson TX2刷机(Jetpack4.2.0)

    文章参考以下链接:https://www.jianshu.com/p/b70701660db3.https://blog.csdn.net/zt1091574181/article/details/8 ...

  8. Nvidia TX2 刷机全过程

    TX2刷机 实验室需要用tx2进行基于zed的物体识别及距离检测,但老的tx2版本过低,直接刷机. 最后成功安装Jetpack 4.6.2,自带cuda10.2+cudnn8.0的版本(不需要自己安装 ...

  9. TX2刷机 JetPack4.4

    TX2刷机 JetPack4.4 Ubuntu18.04 虚拟机安装 SDK Manager 安装 TX2系统刷入 Jetson OS 安装宝塔 资源配置查看 TX2 DesktopSharing 无 ...

最新文章

  1. PHP中 对象自动调用的方法:__set()、__get()、__tostring()
  2. pb 如何导出csv_如何计算指数温度?
  3. SpringCloud stream连接RabbitMQ收发信息
  4. 集合框架(Set容器)
  5. CSS 普通流 和 行格式化上下文 IFC
  6. es6 迭代器对象的 return(),throw()
  7. centos编译安装python_CentOS编译安装Python3
  8. java web乱码问题_Java Web中文乱码问题解决
  9. 维护项目的管理策略案例
  10. struts2 传递json对象时的延迟加载异常处理方法
  11. C/S和B/S和RIA
  12. jtag接口_一份很好的JTAG完全解读资料
  13. 在线生成android ios icon,一键生成Android/Android-HD/IOS 多尺寸ICON
  14. word 中如何去掉复制的文字的底纹?
  15. CSS3的clac()函数无效,警告提示“invalid property value”
  16. uni-app实现一键登录
  17. 一般熟练盲打需要多久_练习拼音打字练到[盲打]的境界一般需要多久(时间)?...
  18. 零遁NAS伴侣实现WOL远程唤醒
  19. 什么是Pythonic?
  20. 示波器探头基础入门指南

热门文章

  1. 【Plumed教程(一)】增强采样Plumed入门
  2. c语言数据块写入函数,C语言数据块读写函数:fread和fwrite
  3. win7和ubuntu实现相互复制粘贴文件
  4. 统一门户系统解决方案,协同办公更敏捷
  5. LWN: kernel中GCC plugin的未来命运!
  6. 自定义view----六边形战斗力图表
  7. 把Apple ID 账号改成QQ邮箱教程
  8. 程序员 神经衰弱 植物神经紊乱 神经官能症 惊恐障碍 惊恐发作 焦虑症
  9. 盘点2016最值得突击的七大海外市场:最后一年窗口期,不出海就出局!
  10. Xilinx 7系列原语使用(时钟相关)——(一)