(前言)Jetson TX2推理效果展示:

配套原项目地址Antigen Detector(新冠试剂盒检测)

1 推理时间

YOLOE+Faiss-cpu检索Infer Time在400ms-700ms左右

2 可视化检测结果展示


部署流程

步骤一:Jetson TX2刷机

(我的电脑是双系统,在给Jetson TX2刷机的时候,使用的是Ubuntu18.04)

1.1 Jetson TX2开箱。


包含以下东西:

①主板

②主板电源线(不知道为什么,我收到的电源线少了一半,没有插头~ ~ ~ ~,霉神附体)

③两根天线、一根micro-usb线(用于刷机使用)还有一根白色不知名的线

确认完东西之后,便可以准备开始刷机了!!!

1.2 刷机

英伟达官网下载SDKManager,可登录NVIDIA Jetpack下载,并在Ubuntu18.04上安装好。

下载完SDKManager之后,在host端安装即可:终端输入sudo dpkg -i <XXX.deb> 进行安装。

安装完成后,输入sdkmanager即可运行。

先进行登录:

紧接着,根据界面提示一直傻瓜式操作即可。Step3的时候,要进行留意:

此时选择manual setup不要选择 automatic setup

接下来,将TX2用micro-usb与主机连接,再让TX2进入recovery模式:按住左下角红色POWER BIN上电,然后按按钮REC按钮,然后松开即可。

进入恢复模式后,TX2是黑屏的。你可以在主机的终端中输入lsusb,若显示nvidia crop,即连接成功。点击flash开始安装。

当安装进度约为45%左右(即jetpack os安装完成),TX2会点亮屏幕。此时,不会继续安装。先在TX2上设置用户信息、密码、语言、时区等信息,进入ubuntu桌面。然后在主机上输入刚刚设置的用户名和密码,再继续安装。

Note:整个刷机过程中,最最最重要的事情!!!!!!!!!!!!

1、在安装过程中,如果出现安装失败的提示(Step 3的时候),不要直接退出软件,点击RETRY FAILED ITEMS对失败的部分重新安装,不然重新启动软件后它会重装所有选择的条目。由于网络的原因可能会多次失败,要一直重试直到所有软件安装完毕。亲测有效!!!!

2、再上述重新安装的时候,有时可能会出现连接不到Jetson TX2的情况,这时只需要重新插拔一下即可!!!

步骤二:Jetson TX2端推理环境配置

2.1 安装archiconda

先下载archiconda的安装文件,该文件已经放入该项目下的数据集里,可下载拷贝至Jetson TX2中。

进入到archiconda安装文件所在的目录下,然后在终端运行如下图所示命令开始安装。

之后一路yes即可完成安装!!!

2.2 创建虚拟环境

紧接着创建名为antigener_detecion的虚拟环境,使用python3.6。注意创建虚拟环境的时候,名字可以随意,但是python必须使用3.6版本!!!

2.3 激活虚拟环境。

2.4 在虚拟环境下配置相关依赖

分别为paddlepaddle-gpu arm、opencv-python、faiss-cpu和pyyaml。其中paddlepaddle-gpu有在arm架构上编译好的whl文件,我也放到了本项目数据集中,可直接下载使用。

步骤三:Jetson TX2端推理

3.1 直接推理

配置好上述环境之后,可拷贝部署代码至Jetson TX2上进行部署。(部署代码在本项目所附的数据集中,可下载拷贝!!!)拷贝完成解压后,进入项目文件夹直接运行python antigener_detection_v2.py便执行推理程序,可输入待检测图片的路径完成推理并可视化检测结果,同时也会输出检测结果日志。

检测结果日志如下图所示:

检测结果可视化(部分):




FastDeploy部署

如果要使用FastDeploy部署,烧录TX2系统时一定要注意烧录Jetpack>=4.6版本的!!!

1 python包编译环境准备

·gcc/g++ >= 5.4·cmake >= 3.18.0·jetpack >= 4.6·python >= 3.6

Cmake版本升级

刷完机后Cmake的版本可能不满足要求,需要对Cmake进行一下升级。

首先下载所需要的版本的Cmake:

wget https://cmake.org/files/v3.18/cmake-3.18.1.tar.gz
# 解压
tar -xvzf cmake-3.18.1.tar.gz
# 进入目录下
chmod 777 ./configure
./configure
# 编译,安装
make
sudo make install
# 最后替代旧版的cmake
sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force

编译FastDeploy python包

# 先git FastDeploy仓库代码
git clone https://github.com/PaddlePaddle/FastDeploy.git
# 进入目录
cd FastDeploy/python
# 编译相关配置
export ENABLE_ORT_BACKEND=ON
export ENABLE_TRT_BACKEND=ON
export WITH_GPU=ON
export ENABLE_VISION=ON
export BUILD_ON_JETSON=ON# 编译包
python setup.py build
python setup.py bdist_wheel

安装

直接pip install wheel包即可。

使用FastDeploy预测改写代码

import fastdeploy as fd
import osdef build_option():option = fd.RuntimeOption()option.use_gpu()option.use_trt_backend()return optionruntime_option = build_option()"""
"/home/hansansui/TX2Deploy/antigener_detection/params/infer_cfg.yml"
下面的config_file根据上述路径下的infer_cfg.yml修改。
然后保存到:/home/hansansui/TX2Deploy/antigener_detection/params/detection_model/infer_cfg.yml
"""
model_dir = "/home/hansansui/TX2Deploy/antigener_detection/params/detection_model"
model_file = os.path.join(model_dir, "inference.pdmodel")
params_file = os.path.join(model_dir, "inference.pdiparams")
config_file = os.path.join(model_dir, "infer_cfg.yml")model = fd.vision.detection.PPYOLOE(model_file, params_file, config_file, runtime_option=runtime_option)def antigener_classification_fastdeploy(img, model, det_threshed=0.6, negative_threshed=0.65):results = model.predict(img, det_threshed)count = 0results_dict = {'positive':[], 'negative':[]}for result in results:count += 1x1, y1, x2, y2 = result['bbox']roi_img = img[int(y1):int(y2), int(x1):int(x2)]if result['label_name'] == 'positive':"""输出为positive+confidence.经后处理如果也认定阳性,输出为positive, confidence为1."""length = postprocess_after_detection(roi_img, count)if length == 2:results_dict['positive'].append([x1, y1, x2, y2, 1.0])else:results_dict['positive'].append([x1, y1, x2, y2, result['score']])else: #阴性if result['score'] > negative_threshed:length = postprocess_after_detection(roi_img, count)if length == 1:results_dict['negative'].append([x1, y1, x2, y2, 1.0])else:results_dict['negative'].append([x1, y1, x2, y2, result['score']])else:"""小于这个阈值,输出为positive,confidence为1-confidence。经后处理后若认为为positive, confidence为1。"""length = postprocess_after_detection(roi_img, count)if length == 2:results_dict['positive'].append([x1, y1, x2, y2, 1.0])else:results_dict['positive'].append([x1, y1, x2, y2, 1 - result['score']])
ict['positive'].append([x1, y1, x2, y2, 1 - result['score']])return results_dict

总结

这次的部署任务,踩了一些小坑,也耗费了很多时间。不过还好,最终还是部署上了。

部署模型是一个很重要的阶段,因为很多时候是只有落地部署了才能发挥它们的价值。因此,关于模型部署的很多知识、很多工具还是要好好学习的。

而飞桨的AI达人创造营便提供了这样的机会,免费发放硬件供大家部署学习!!!

感谢飞桨,感谢AI达人创造营组委会!!!

此文章为搬运
原项目链接

【AI达人创造营三期-Antigen Detector(新冠试剂盒检测)部署】相关推荐

  1. 【AI达人创造营三期】在地平线X3上部署车牌识别系统

    [AI达人创造营三期]在地平线X3上部署车牌识别系统 一. 项目介绍 本项目属于AI达人创造营三期项目,主要探索如何将PaddleOCR训练的车牌识别模型部署在地平线X3的板子上,并实现实时推理. 二 ...

  2. 【AI达人创造营三期】Jetson Nano实时监测学生坐姿,预防近视

    1.前言 本来以为jetson nano就是一台小型计算机而已,把模型复制到上面运行就可以了,可实际操作起来遇到了很多问题,踩了很多坑,现在整理一下. 参考资料: 基于FastDeploy将PicoD ...

  3. 【AI达人创造营三期】Fastdeploy与英特尔NUC推动智慧城市巡检应用落地

    Fastdeploy与英特尔NUC推动智慧城市巡检应用落地 1.项目背景 智慧城市是指利用大数据.物联网(IoT)人工智能和5G等数字技术,提高政府公共服务水平.社会治理效能.推动经济增长和不断增强人 ...

  4. 【AI达人创造营三期】Jetson Nano篮球和运动员检测分割的部署

    简介 1.1 背景与意义简介 目标跟踪是计算机视觉领域的一个重要问题,目前广泛应用在体育赛事转播.安防监控和无人机.无人车.机器人等领域.在篮球比赛的场景中,主要是针对篮球和运动员的检测.通过对这些目 ...

  5. 【AI达人创造营第二期】基于PaddleClas的新冠肺炎CT影像的分类

    转自AI Studio,原文链接:[AI达人创造营第二期]基于PaddleClas的新冠肺炎CT影像的分类 - 飞桨AI Studio 一.项目背景 新近爆发的2019新型冠状病毒(SARS-CoV- ...

  6. 笔记 | 百度飞浆AI达人创造营:深度学习模型训练和关键参数调优详解

    笔记 | 百度飞浆AI达人创造营:深度学习模型训练和关键参数调优详解 针对特定场景任务从模型选择.模型训练.超参优化.效果展示这四个方面进行模型开发. 一.模型选择 从任务类型出发,选择最合适的模型. ...

  7. 飞浆领航团AI达人创造营第01课|让人拍案叫绝的创意都是如何诞生的?

     时间:2021年7月27日 下午18:25 内容:创意的获取渠道和创意的评估方法 昨晚看了飞桨领航团AI达人创造营的第一节直播,现在将第一节的笔记以及感受整理如下,依次来激励自己的后续学习,希望能过 ...

  8. 【AI达人创造营第二期】基于Jetson nano的餐厅自助结账系统部署

    基于Jetson nano的餐厅自助结账系统部署 一. 前言 二. 开发环境 2.1 硬件 2.2 软件 三. Jetson nano基础环境配置 3.1 镜像烧录 3.2 网络连接 3.3 更换镜像 ...

  9. 百度AI达人创造营|第一课、拍案叫绝的创意

    百度AI达人创造营 课程设计 课程 内容 第一课 让人拍案叫绝的创意都是如何诞生的 第二课 数据集的获取途径和数据处理的技巧 第三课 深度学习模型训练和关键参数调优详解 第四课 教你5种简单高效的部署 ...

最新文章

  1. (C++)string 的两种输入方式和输出方式
  2. Median of Two Sorted Arrays
  3. 比较正宗的验证邮箱的正则表达式js代码详解
  4. Android之sqlite的使用 (转载)
  5. RabbitMQ系列笔记work模式
  6. IronRuby 发布第一个版本
  7. Go语言的变量、函数、Socks5代理服务器 1
  8. [linux] redhat 7 iptables 配置
  9. brave+kafka+zipkin+cassandra搭建分布式链路跟踪系统
  10. QinQ、VLAN Mapping原理和配置
  11. easyphp(xctf)
  12. 【IoT】 产品设计之拆机报告:天猫精灵之万能红外遥控器
  13. 《数据结构(C语言版)》严蔚敏代码实现———顺序表
  14. 使用Riverbed SteelCentral NetProfiler,大海捞针不再难
  15. POI 导出Excel
  16. 2018年8月win10教育版education最新激活密钥
  17. v.douyin.com/xxx v.ixigua.com/xxx抖音西瓜网址官方生成制作抖音西瓜缩短口令网址(仅供参考学习)
  18. shell字符串,字符数组,遍历
  19. 软考高项真题解析-关键路径的计算
  20. 计算机科学与技术文献翻译,计算机科学与技术外文文献翻译.doc

热门文章

  1. Settings学习总结(一)
  2. postgresql计算两点距离
  3. 你知道 Compiler 与 Interpreter 的区别吗?
  4. 机器学习之sklearn使用下载MNIST数据集进行分类识别
  5. 互联网五层、七层结构
  6. 如何从VDS明网下载钱包
  7. Java新手学习指南(2020最新推荐版)
  8. win10 JDK-8u231安装点击下一步没反应 解决方法-JDK安装记录
  9. 可编程定时/计数器 8253/8254
  10. 彻底分清机器学习中的上采样、下采样、过采样、欠采样【总结】