许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  玩转Jetson TX2 NX(十二):板载摄像头+UNet算法实时显著目标分割(详细教程+错误解决)

玩转Jetson TX2 NX(十二):板载摄像头+UNet算法实时显著目标分割(详细教程+错误解决)

阅读数 4
点赞 0
article_banner

2 jetcam运行板载CSI摄像头

首先输入命令,安装traitlets,参考大佬文章: Jetson nano使用jetcam运行CSI摄像头

pip3 install traitlets==4.3.3

如图所示:

在这里插入图片描述

   然后,安装jetcam,依次输入命令

git clone https://github.com/NVIDIA-AI-IOT/jetcam
cd jetcam
sudo python3 setup.py install

如图所示:

在这里插入图片描述

   安装成功,如图所示:

在这里插入图片描述

   运行程序,测试摄像头

from jetcam.csi_camera import CSICamera
import cv2

camera0 = CSICamera(capture_device=0, width=224, height=224)
image0 = camera0.read()
print(image0.shape)

print(camera0.value.shape)
while 1:
    image0 = camera0.read()
    cv2.imshow("CSI Camera0", image0)
    kk = cv2.waitKey(1)
    if kk == ord('q'):  # 按下 q 键,退出
        break

如图所示:

在这里插入图片描述

3 基于UNet算法实时显著目标分割

利用板载摄像头实时显著目标分割代码如下:

from jetcam.csi_camera import CSICamera
import cv2
import tensorrt as trt
import numpy as np
import inference as inference_utils 

camera0 = CSICamera(capture_device=0, width=480, height=320)

image0 = camera0.read()
print(image0.shape)

print(camera0.value.shape)

# 1. 网络构建
# Precision command line argument -> TRT Engine datatype
TRT_PRECISION_TO_DATATYPE = {
    16: trt.DataType.HALF,
    32: trt.DataType.FLOAT
}
# datatype: float 32
trt_engine_datatype = TRT_PRECISION_TO_DATATYPE[16]
# batch size = 1
max_batch_size = 1
engine_file_path = "/home/tx2_lei/WHL/unet_lei/models/unet_deconv.trt"
onnx_file_path = "/home/tx2_lei/WHL/unet_lei/models/unet_deconv.onnx"
new_width, new_height = 480, 320
output_shapes = [(1, new_height, new_width)]
trt_inference_wrapper = inference_utils.TRTInference(
    engine_file_path, onnx_file_path,
    trt_engine_datatype, max_batch_size,
)

while 1:

    image0 = camera0.read()
 
    # 2. 图像预处理
    img = image0
    # inference
    trt_outputs = trt_inference_wrapper.infer(img, output_shapes, new_width, new_height)[0]
    # 输出后处理
    out_threshold = 0.5
    print("the size of tensorrt output : {}".format(trt_outputs.shape))
    output = trt_outputs.transpose((1, 2, 0))
    # # 0/1像素值
    output[output > out_threshold] = 255
    output[output <= out_threshold] = 0
    
    output = output.astype(np.uint8)


    cv2.imshow("CSI Camera0", output)
    kk = cv2.waitKey(1)
    if kk == ord('q'):  # 按下 q 键,退出
        break

运行被killed,如图所示:

在这里插入图片描述

   解决上述问题,增加swap分区大小,首先输入命令查看swp分区

sudo jtop

如图所示,分区大小为2GB

在这里插入图片描述

   接下俩增加Swap内存,依次输入命令

#1)新增swapfile文件大小自定义
sudo fallocate -l 6G /var/swapfile
#2)配置该文件的权限
sudo chmod 600 /var/swapfile
#3)建立交换分区
sudo mkswap /var/swapfile
#4)启用交换分区
sudo swapon /var/swapfile

如图所示:

在这里插入图片描述

   再次输入命令查看swp分区大小

sudo jtop

如图所示,swap内存大小为8GB

在这里插入图片描述

   设置为自启动swapfile,输入命令

sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'

如图所示:

在这里插入图片描述

   然后回到vscode,运行程序,成功,如图所示,利用板载摄像头实时显著目标分割

在这里插入图片描述

   按q,退出,如图所示:

在这里插入图片描述
B站视频链接: 【手把手一起在Jetson TX2 NX部署UNet实时显著目标分割】

https://www.bilibili.com/video/BV1ia4y1K79h/?share_source=copy_web&vd_source=5271dc99222d62df6a8cbae2ba96fdf1


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删




相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空