diff --git a/docs/zh-CN/CN_Getting_Started.md b/docs/zh-CN/CN_Getting_Started.md index 2f65c7007fa9..4867b1fa0662 100644 --- a/docs/zh-CN/CN_Getting_Started.md +++ b/docs/zh-CN/CN_Getting_Started.md @@ -172,21 +172,6 @@ last_update:

pir

-## ✨ 特别感谢 - -### **XIAO 拇指开发板**章节翻译团队 - -感谢来自 贵州师范学院 的学生对“**XIAO 拇指开发板**”章节的翻译的校对。 - -

pir

- -- 金菊 同学 -- 赵桂莹 同学 -- 吴飞飞 同学 -- Chen Lei 同学 -- Xin Ping Li 同学 -- 王桥 老师 - ## 技术支持和产品讨论 非常感谢您选择我们的产品!我们在此为您提供不同的支持,以确保您在使用我们产品的过程中获得尽可能顺畅的体验。我们提供多种沟通渠道,以满足不同的偏好和需求。 diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/How_to_Train_and_Deploy_YOLOv8_on_reComputer.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/How_to_Train_and_Deploy_YOLOv8_on_reComputer.md new file mode 100644 index 000000000000..08b1f7d9461e --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/How_to_Train_and_Deploy_YOLOv8_on_reComputer.md @@ -0,0 +1,356 @@ +--- +description: 如何在reComputer上训练和部署YOLOv8 +title: 如何在reComputer上训练和部署YOLOv8 +keywords: +- reComputer +- Train YOLOv8 +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/How_to_Train_and_Deploy_YOLOv8_on_reComputer +last_update: + date: 12/6/2023 + author: Youjiang +--- + + +# 如何在reComputer上训练和部署YOLOv8 + +## 介绍 +面对日益复杂和动态的挑战,人工智能的应用为解决问题开辟了新途径,并对全球社会的可持续发展和人民生活质量的提高做出了重要贡献。通常在部署人工智能算法之前,AI模型的设计和训练都是在高性能计算服务器上进行的。一旦模型训练完成,它就被导出到边缘计算设备进行推断。事实上,所有这些过程都可以直接在边缘计算设备上进行。具体来说,准备数据集、训练神经网络、验证神经网络和部署模型等任务都可以在边缘设备上执行。这不仅确保了数据安全,还节省了购买额外设备的成本。 + +
+ +
+ +
+ Get One Now 🖱️ + +
+ +在这份文档中,我们在 [reComputer J4012](https://www.seeedstudio.com/reComputer-J4012-p-5586.html?queryID=f6de8f6c8d814c021e13f4455d041d03&objectID=5586&indexName=bazaar_retailer_products) 上为交通场景训练和部署物体检测模型。本文以 [YOLOv8](https://www.ultralytics.com/) 物体检测算法为例,详细概述整个过程。请注意,以下所有操作均在 Jetson 边缘计算设备上进行,确保 Jetson 设备安装了 [JetPack 5.0](https://wiki.seeedstudio.com/NVIDIA_Jetson/) 或更高版本的操作系统。 + +## 数据集 +机器学习的过程涉及在给定数据中找到模式,然后使用函数捕获这些模式。因此,数据集的质量直接影响模型的性能。一般来说,训练数据的质量和数量越好,训练的模型就越好。因此,数据集的准备至关重要。 + +收集训练数据集的方法有很多种。这里介绍了两种方法:1. 下载预先注释的开源公共数据集。2. 收集并注释训练数据。最后,整合所有数据以准备后续的训练阶段。 + +### 下载公共数据集 +公共数据集是在机器学习和人工智能研究中广泛使用的共享标准化数据资源。它们为研究人员提供了评估算法性能的标准基准,促进领域内的创新和合作。这些数据集推动着人工智能社区朝着更加开放、创新和可持续的方向发展。 + +在许多平台上,您可以自由下载数据集,例如 +[Roboflow](https://roboflow.com/), +[Kaggle](https://www.kaggle.com/), +等等。这里,我们从 Kaggle 下载一个有关交通场景的标注数据集,名为, [Traffic Detection Project](https://www.kaggle.com/datasets/yusufberksardoan/traffic-detection-project/download?datasetVersionNumber=1), + + +提取后的文件结构如下: + +```sh +archive +├── data.yaml +├── README.dataset.txt +├── README.roboflow.txt +├── test +│ ├── images +│ │ ├── aguanambi-1000_png_jpg.rf.7179a0df58ad6448028bc5bc21dca41e.jpg +│ │ ├── aguanambi-1095_png_jpg.rf.4d9f0370f1c09fb2a1d1666b155911e3.jpg +│ │ ├── ... +│ └── labels +│ ├── aguanambi-1000_png_jpg.rf.7179a0df58ad6448028bc5bc21dca41e.txt +│ ├── aguanambi-1095_png_jpg.rf.4d9f0370f1c09fb2a1d1666b155911e3.txt +│ ├── ... +├── train +│ ├── images +│ │ ├── aguanambi-1000_png_jpg.rf.0ab6f274892b9b370e6441886b2d7b9d.jpg +│ │ ├── aguanambi-1000_png_jpg.rf.dc59d3c5df5d991c1475e5957ea9948c.jpg +│ │ ├── ... +│ └── labels +│ ├── aguanambi-1000_png_jpg.rf.0ab6f274892b9b370e6441886b2d7b9d.txt +│ ├── aguanambi-1000_png_jpg.rf.dc59d3c5df5d991c1475e5957ea9948c.txt +│ ├── ... +└── valid + ├── images + │ ├── aguanambi-1085_png_jpg.rf.0608a42a5c9090a4efaf9567f80fa992.jpg + │ ├── aguanambi-1105_png_jpg.rf.0aa6c5d1769ce60a33d7b51247f2a627.jpg + │ ├── ... + └── labels + ├── aguanambi-1085_png_jpg.rf.0608a42a5c9090a4efaf9567f80fa992.txt + ├── aguanambi-1105_png_jpg.rf.0aa6c5d1769ce60a33d7b51247f2a627.txt + ├──... +``` + +每个图像都有一个相应的文本文件,其中包含该图像的完整注释信息。`data.json`文件记录了训练、测试和验证集的位置,您需要修改路径: + +```json +train: ./train/images +val: ./valid/images +test: ./test/images + +nc: 5 +names: ['bicycle', 'bus', 'car', 'motorbike', 'person'] +``` + +### 收集和注解数据。 + +当公共数据集无法满足用户需求时,需要考虑收集和创建定制数据集,以满足特定需求。可以通过收集、标注和组织相关数据来实现这一目标。 +为了演示目的,我从[YouTube](https://www.youtube.com/watch?v=iJZcjZD0fw0)上捕捉并保存了三张图片,尝试使用[Label Studio](https://www.youtube.com/watch?v=iJZcjZD0fw0)来标注这些图片。 + +第1步。收集原始数据: + +
+ +
+ +**步骤2.** 安装并运行标注工具: +```bash +sudo groupadd docker +sudo gpasswd -a ${USER} docker +sudo systemctl restart docker +sudo chmod a+rw /var/run/docker.sock + +mkdir label_studio_data +sudo chmod -R 776 label_studio_data +docker run -it -p 8080:8080 -v $(pwd)/label_studio_data:/label-studio/data heartexlabs/label-studio:latest +``` + +**步骤 3.** 创建一个新项目,并根据提示完成标注。 +[标签工作室参考文档。](https://labelstud.io/blog/quickly-create-datasets-for-training-yolo-object-detection-with-label-studio/#output-the-dataset-in-yolo-format) + +
+ +
+ +完成标注后,您可以将数据集以YOLO格式导出,并将标注数据与下载的数据整理在一起。最简单的方法是将所有图像复制到公共数据集的train/images文件夹中,将生成的标注文本文件复制到公共数据集的train/labels文件夹中。 + +此时,我们已经通过两种不同的方法获取了训练数据并进行了整合。如果您希望获得更高质量的训练数据,还有许多额外的步骤需要考虑,比如数据清洗、类别平衡等。由于我们的任务相对简单,我们将暂时跳过这些步骤,并使用上面获得的数据进行训练。 + +## 模型 +在这一部分,我们将在reComputer上下载YOLOv8源代码,并配置运行时环境。 + +**第1步。**使用以下命令下载源代码: + +```bash +git clone https://github.com/ultralytics/ultralytics.git +cd ultralytics +``` + +**第2步.** 打开requirements.txt并修改相关内容。 + +```bash +# Use the `vi` command to open the file +vi requirements.txt + +# Press `a` to enter edit mode, and modify the following content: +torch>=1.7.0 --> # torch>=1.7.0 +torchvision>=0.8.1 --> # torchvision>=0.8.1 + +# Press `ESC` to exit edit mode, and finally input `:wq` to save and exit the file. + +第3步。运行以下命令来下载YOLO所需的依赖并安装YOLOv8: +pip3 install -e . +cd .. +``` + +**第4步.** 安装Jetson版本的PyTorch: + +```bash +sudo apt-get install -y libopenblas-base libopenmpi-dev +wget https://developer.download.nvidia.cn/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl -O torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl +pip3 install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl +``` + +**第5步.** 安装对应的torchvision: +```bash +sudo apt install -y libjpeg-dev zlib1g-dev +git clone --branch v0.16.0 https://github.com/pytorch/vision torchvision +cd torchvision +python3 setup.py install --user +cd .. +``` + +**第6步.** 请使用以下命令确保YOLO已成功安装: +```bash +yolo detect predict model=yolov8s.pt source='https://ultralytics.com/images/bus.jpg' +``` + +## 训练 +模型训练是更新模型权重的过程。通过对模型进行训练,机器学习算法可以从数据中学习识别模式和关系,从而实现对新数据的预测和决策。 + +**第1步。**创建一个用于训练的Python脚本: + +```bash +vi train.py +``` + +请按`a`键进入编辑模式,并修改以下内容: + +```bash +from ultralytics import YOLO + +# 加载模型 +model = YOLO('yolov8s.pt') + +# 训练模型。 +results = model.train( + data='/home/nvidia/Everything_Happens_Locally/Dataset/data.yaml', + batch=8, epochs=100, imgsz=640, save_period=5 +) +``` + +按`ESC`退出编辑模式,最后输入`:wq`保存并退出文件。`YOLO.train()`方法有很多配置参数;请参考[文档](https://docs.ultralytics.com/modes/train/#arguments)获取详细信息。此外,您还可以使用更简洁的`CLI`方法根据您的特定要求开始训练。 + +**第2步.** 请使用以下命令开始训练: +```bash +python3 train.py +``` + +接下来是漫长的等待过程。考虑到在等待过程中关闭远程连接窗口的可能性,本教程使用[Tmux](https://github.com/tmux/tmux/wiki)终端复用器。因此,我在整个过程中看到的界面是这样的: + +
+ +
+ +Tmux是可选的;只要模型正常训练即可。训练程序完成后,您可以在指定文件夹中找到在训练过程中保存的模型权重文件。 + +
+ +
+ +## 验证 +验证过程包括使用部分数据来验证模型的可靠性。这个过程有助于确保模型能够在真实世界的应用中准确而稳健地执行任务。如果你仔细观察训练过程中的信息输出,你会注意到许多验证过程穿插在训练中。本节不会分析每个评估指标的含义,而是通过检查预测结果来分析模型的可用性。 + +**步骤 1.** 使用训练好的模型来推断特定图像: + +```bash +yolo detect predict \ + model='./runs/detect/train2/weights/best.pt' \ + source='./datas/test/images/ant_sales-2615_png_jpg.rf.0ceaf2af2a89d4080000f35af44d1b03.jpg' \ + save=True show=False +``` + +
+ +
+ +**步骤 2.** 查看推理结果。 + +根据检测结果,可以观察到训练模型达到了预期的检测性能。 + +
+ +
+ +## 部署 +部署是将经过训练的机器学习或深度学习模型应用于真实场景的过程。上面介绍的内容已经验证了模型的可行性,但并未考虑模型的推理效率。在部署阶段,有必要在检测精度和效率之间找到平衡。可以使用TensorRT推理引擎来提高模型的推理速度。 + +**步骤 1.** 为了直观展示轻量级模型和原始模型之间的对比,使用vi工具创建一个新的`inference.py`文件来实现视频文件推断。您可以通过修改第8和第9行来替换推断模型和输入视频。此文档中的输入是我用手机拍摄的视频。 + +```python +from ultralytics import YOLO +import os +import cv2 +import time +import datetime + + +model = YOLO("/home/nvidia/Everything_Happens_Locally/runs/detect/train2/weights/best.pt") +cap = cv2.VideoCapture('./sample_video.mp4') + +save_dir = os.path.join('runs/inference_test', datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')) +if not os.path.exists(save_dir): + os.makedirs(save_dir) +fourcc = cv2.VideoWriter_fourcc(*'mp4v') +fps = cap.get(cv2.CAP_PROP_FPS) +size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) +output = cv2.VideoWriter(os.path.join(save_dir, 'result.mp4'), fourcc, fps, size) + +while cap.isOpened(): + success, frame = cap.read() + if success: + start_time = time.time() + results = model(frame) + annotated_frame = results[0].plot() + total_time = time.time() - start_time + fps = 1/total_time + cv2.rectangle(annotated_frame, (20, 20), (200, 60), (55, 104, 0), -1) + cv2.putText(annotated_frame, f'FPS: {round(fps, 2)}', (30, 50), 0, 0.9, (255, 255, 255), thickness=2, lineType=cv2.LINE_AA) + print(f'FPS: {fps}') + cv2.imshow("YOLOv8 Inference", annotated_frame) + output.write(annotated_frame) + if cv2.waitKey(1) & 0xFF == ord("q"): + break + else: + break + +cv2.destroyAllWindows() +cap.release() +output.release() +``` + +**步骤 2.** 运行以下命令,并记录模型量化之前的推理速度: +```bash +python3 inference.py +``` + +
+ +
+ +模型量化之前的推理速度为21.9帧每秒。 + +**步骤 3.** 生成量化模型: + +```bash +pip3 install onnx +yolo export model=/home/nvidia/Everything_Happens_Locally/runs/detect/train2/weights/best.pt format=engine half=True device=0 +``` + +完成程序后(大约10-20分钟),在与输入模型相同的目录中将生成一个`.engine`文件。这个文件是量化后的模型。 + +
+ +
+ +**步骤 4.** 使用量化模型测试推断速度。 + +在这里,您需要修改在第1步创建的脚本中的第8行内容。 + +```bash +model = YOLO() --> model = YOLO() +``` + +然后,重新运行推断命令: + +```bash +python3 inference.py +``` + +
+ +
+ +从推理效率的角度来看,量化模型显示出推理速度显著提高。 + +## 摘要 + +本文为读者提供了一个全面指南,涵盖了从数据收集和模型训练到部署的各个方面。重要的是,所有的流程都在reComputer中进行,消除了用户额外需要GPU的需求。 + + + + + + + +## 技术支持与产品讨论 + +感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您对我们的产品的体验尽可能顺利。我们提供多种沟通渠道,以满足不同的偏好和需求。 + +
+ + +
+ +
+ + +
\ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Jetson-Nano-MaskCam.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Jetson-Nano-MaskCam.md new file mode 100644 index 000000000000..d0014ad19fda --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Jetson-Nano-MaskCam.md @@ -0,0 +1,236 @@ +--- +description: 口罩相机 - 基于Jetson Nano的人群口罩使用监测 +title: 口罩相机 - 基于Jetson Nano的人群口罩使用监测 +keywords: + - Edge + - reComputer Application +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/Jetson-Nano-MaskCam +last_update: + date: 01/04/2023 + author: w0x7ce + +no_comments: false # for Disqus + +--- + +# 口罩相机 - 基于Jetson Nano的人群口罩使用监测 + +## **简介** + +由于新冠疫情的破坏,在许多公共场所,我们经常看到要求佩戴口罩。通常在区域门口有管理人员观察人们是否佩戴口罩。对于人类来说,这可能是一个非常简单的任务,但如果我们将其与Jetson Nano、图形捕捉和边缘计算相结合,这将是一个非常有趣和具有社会价值的任务。 + +MaskCam由伯克利设计技术公司(BDTI)和Tryolabs S.A.开发,开发资金由NVIDIA提供。MaskCam采用MIT许可证发布。有关MaskCam的更多信息,[请参阅BDTI的报告](https://www.bdti.com/maskcam)。如果您有疑问,请发送电子邮件至maskcam@bdti.com。 + +在这个项目中,我们将使用[NVIDIA® Jetson Nano™ 4GB Developer Kit](https://www.seeedstudio.com/NVIDIA-Jetson-Nano-Development-Kit-B01-p-4437.html)及其他配件。与此同时,您也可以选择Seeed的[A206 Carrier Board](https://www.seeedstudio.com/A206-Carrier-Board-for-Jetson-Nano-Xavier-NX-p-5132.html),它与NVIDIA官方的载板具有相同的尺寸和功能设计,同时具有出色的稳定性和多功能性。 + + +## **准备工作。** + +### **硬件要求** + +- [英伟达® Jetson Nano™ 4GB 开发者套件](https://www.seeedstudio.com/NVIDIA-Jetson-Nano-Development-Kit-B01-p-4437.html) (JetPack 4.6) + +- [A206 载板](https://www.seeedstudio.com/A206-Carrier-Board-for-Jetson-Nano-Xavier-NX-p-5132.html)(optional) + +- 7英寸HDMI监视器和HDMI连接线 + +- USB 坞式扩展底座 + +- 鼠标和键盘 + +- 5V 4A 电源适配器 + +- USB 摄像头 + +- 以太网线 + +- 安装 Windows11(或 Windows10/Ubuntu18.04/OSX Big Sur)的个人电脑 +### **软件需求** + +- docker + +- docker-compose + +- 视频软件(显示RTSP流,如VLC/QuickTime/PotPlayer) + +## **开始吧。** + +### **Jetson Nano 设置** + +- #### **步骤 1.** 从Docker Hub下载MaskCam容器 + +```shell +sudo docker pull maskcam/maskcam-beta +``` + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu12.png) + +- #### **步骤 2.** 使用以下命令查找Jetson Nano的IP地址。 ```ifconfig``` + +```shell +sudo ifconfig +``` + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu5.png) + +- #### **步骤 3.** 使用docker启动MaskCam。 + +记得将你的Jetson Nano与USB摄像头连接,然后在终端中输入以下命令。 + +```shell +sudo docker run --runtime nvidia --privileged --rm -it --env MASKCAM_DEVICE_ADDRESS= -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta +``` + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu1.png) + +**注意:** 请在这个命令中用您的Jetson Nano的IP地址替换``````。 + +如果你不想使用默认输入设备,也有两个不同的命令可供选择和替换上述命令。 + +请使用/dev/video1摄像头设备: + +```shell +#使用 /dev/video1 相机设备。 +sudo docker run --runtime nvidia --privileged --rm -it --env MASKCAM_INPUT=v4l2:///dev/video1 --env MASKCAM_DEVICE_ADDRESS= -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta +``` + +请使用CSI相机设备。 + +```shell +#请使用CSI摄像头设备。 +sudo docker run --runtime nvidia --privileged --rm -it --env MASKCAM_INPUT=v4l2://0 --env MASKCAM_DEVICE_ADDRESS= -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta +``` + +- #### **步骤 4.** 通过观看直播视频流。 ```MASKCAM_DEVICE_ADDRESS``` + +```shell +Streaming at rtsp://aaa.bbb.ccc.ddd:8554/maskcam +``` + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu3.png) + +**Note:** ```aaa.bbb.ccc.ddd```是您之前在```MASKCAM_DEVICE_ADDRESS```中提供的地址。 + +您可以将该URL复制粘贴到另一台电脑上的RSTP流媒体查看器中。在视频流中,如果您没有戴口罩,您的面部将显示为红色框架。否则,您将看到绿色框架。 + +### **MQTT服务器设置** + + 除了基本功能外,这个库还包括了远程服务器功能,这意味着您的计算机可以从设备接收统计信息,将其存储在数据库中,并拥有基于web的GUI前端来展示这些统计数据。 + +在本文中,关于服务器的所有演示都基于Windows 11系统主机,您也可以通过本文找到在Linux系统上的指导:[Maskcam](https://github.com/bdtinc/maskcam)。 + +- #### **步骤1.** 在您的个人电脑上安装Docker和Docker-compose。 + +从官方网站[https://docs.docker.com/get-docker/]下载[Docker](https://www.docker.com/)的安装包。 + +请注意:如果在安装过程中出现消息```WLS 2 安装不完整```,请点击提示框中的链接,下载并安装 Linux 内核更新包。然后可以运行```docker```。 + +- #### **步骤2.** 设置构建目录。 + +以管理员身份运行```Windows PowerShell``` + +转到您将使用的驱动器根目录,例如: + +```shell +cd e:\ +``` + +下载 MaskCam 代码库: + +```shell +Invoke-WebRequest https://github.com/bdtinc/maskcam/archive/refs/heads/main.zip -OutFile e:\maskcam.zip +``` + +解压到指定路径。 ```e:\maskcam``` : + +```shell +Expand-Archive e:\maskcam.zip -DestinationPath e:\maskcam +``` + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu14.png) + +转到maskcam服务器文件夹,其中包含四个容器:Mosquitto代理、后端API、数据库和Streamlit前端。 + +```shell +cd maskcam\maskcam-main\server +``` + +然后,通过复制默认模板来创建 ```.env``` 文件。 + +```shell +cp database.env.template database.env +cp frontend.env.template frontend.env +cp backend.env.template backend.env +``` + +打开。 ```database.env``` : + +```shell +notepad database.env +``` + +请用您自己的值替换``````,``````和``````字段。 + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu15.png) + +- #### **步骤3.** 构建和运行本地服务器。 + +编辑完数据库环境文件后,您可以准备使用单个命令构建所有容器并运行它们。 + +```shell +sudo docker-compose up -d +``` + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu6.png) + +接下来,打开一个网络浏览器,输入服务器IP地址,访问前端网页。 + +```http://:8501/``` + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu8.png) + +**Note:** 请用您自己的IP地址替换```<服务器IP>```。 + +如果在前端看到```ConnectionError```,请等待几秒钟并重新加载页面。后端容器可能需要一些时间来完成数据库设置。 + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu7.png) + +如果您等待几秒钟并重新加载页面,但前端仍然显示```ConnectionError```,请确保端口:<5432>和<80>没有被占用或被监听。 + +如果您第一次成功访问前端网页,但下次失败,请目前重新安装docker是解决问题的最佳方法。 + +- #### **步骤4.** Point Jetson Nano at your local server + +返回到Jetson Nano的终端,然后使用以下命令运行maskcam容器: + +```shell +sudo docker run --runtime nvidia --privileged --rm -it --env MQTT_BROKER_IP= --env MQTT_DEVICE_NAME=my-jetson-1 --env MASKCAM_DEVICE_ADDRESS= -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta +``` + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu9.png) + +**Note:** 请用您自己的服务器和Jetson Nano的IP地址替换``````和``````。 + +之后,您可以在网页上选择您的设备,如下所示: + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu10.png) + +最后,您可以看到Jetson Nano收集的数据传输到服务器。 + +![](https://files.seeedstudio.com/wiki/Jetson-Nano-MaskCam/tu11.png) + +## 技术支持与产品讨论 + +感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们的产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同偏好和需求。 + +
+ + +
+ +
+ + +
+ diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Security_Scan.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Security_Scan.md new file mode 100644 index 000000000000..49994f2bbd6a --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Security_Scan.md @@ -0,0 +1,253 @@ +--- +description: 刀具检测:基于reComputer部署在Triton推理服务器上的物体检测模型 +title: 刀具检测:基于reComputer部署在Triton推理服务器上的物体检测模型 +keywords: + - Edge + - reComputer Application +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/Security_Scan +last_update: + date: 01/04/2023 + author: w0x7ce + +no_comments: false # for Disqus + +--- + +# 刀具检测:基于reComputer部署在Triton推理服务器上的物体检测模型 + +< iframe width={560} height={315} src="https://www.youtube.com/embed/niS0TLzyn-s" title="YouTube video player" frameBorder={0} allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen /> + +安全检查是为了乘客和运输行业的安全考虑而设立的警报,旨在防止危险,通常应用于机场、火车站、地铁站等公共交通场所。在现有的安全检查领域,安全检查设备被部署在公共交通的进站通道上。一般来说,这需要多个设备同时工作。 + +尽管如此,由于安检过程中检测到的物体重叠,X射线图像中禁止物品的检测性能仍然不尽如人意。为此,基于Triton接口服务器中的去遮挡模块,在X射线图像中部署禁止物品检测算法可以更有效地进行识别。 + +因此,感谢 [Yanlu Wei, Renshuai Tao 等](https://arxiv.org/abs/2004.08656),我们提供这个基础性项目,计划在 [reComputer J1010](https://www.seeedstudio.com/Jetson-10-1-A0-p-5336.html) 上部署一个深度学习模型,能够检测禁带物品(刀具)。我们将使用一台 reComputer J1010 作为推理服务器,另外两台 Raspberry Pi 模拟安全检查机器以发送图像。 [reComputer 1020](https://www.seeedstudio.com/Jetson-10-1-H0-p-5335.html)、[reComputer J2011](https://www.seeedstudio.com/Jetson-20-1-H1-p-5328.html)、[reComputer J2012](https://www.seeedstudio.com/Jetson-20-1-H2-p-5329.html) 和 [Nvidia Jetson AGX Xavier](https://www.seeedstudio.com/Jetson-Xavier-AGX-H01-Kit-p-5283.html) 均得到支持。 + +## 开始使用 + +[Triton推理服务器](https://developer.nvidia.com/nvidia-triton-inference-server) 提供云端和边缘推理解决方案,旨在优化CPU和GPU的性能。Triton支持HTTP/REST和GRPC协议,允许远程客户端请求对服务器管理的任何模型进行推理。在这里,我们将使用Triton(Triton推理服务器)作为我们的本地服务器,部署检测模型。 + +### 硬件 + +#### 所需硬件 + +在本项目中,所需设备如下: + +- [Raspberry Pi 4B](https://www.seeedstudio.com/Dual-GbE-Carrier-Board-with-4GB-RAM-32GB-eMMC-RPi-CM-4-p-4898.html)*2 +- [reComputer J1010](https://www.seeedstudio.com/Jetson-10-1-A0-p-5336.html) +- HDMI 显示屏,鼠标和键盘 +- 电脑 + +#### 硬件设置 + +两个树莓派和reComputer应接通电源,并且它们都应在**同一网络**下。在这个项目中,我们使用两个树莓派来模拟安全机器的工作,因为安全检查机器在大多数情况下是由多个设备使用的。因此,两者都需要协同工作。 + +
+ +一个树莓派也可以用于这个项目。然而,在两个设备上同时进行刀具检测的演示,可以更好地展示Triton推理服务器的动态批处理能力。在接下来的指导中,我们将介绍如何在树莓派和reComputer J1010上设置软件。 + +### 软件 + +我们在这里使用[X射线图像数据集](https://drive.google.com/file/d/12moaa-ylpVu0KmUCZj_XXeA5TxZuCQ3o/view)作为我们的**输入数据**,该数据将放置在**树莓派**上。之后,reComputer将向树莓派输出处理过的推理结果。最后,树莓派将完成最终工作并在屏幕上显示,即推理模型的最后一层将在树莓派上部署。 + +#### 设置树莓派 + +我们将在这里向您展示如何在树莓派上设置所需的软件。 + +**步骤 1.** 从 [官方网站](https://www.raspberrypi.com/documentation/computers/getting-started.html#using-network-installation) 安装 Raspbian Buster 系统和基本配置。在本项目中,我们使用 RASPBERRY PI OS(64 位)作为操作系统。 + +
+ +**步骤 2.** 配置树莓派的SSH端口(可选)。 + +在部署环境之前,我们可以打开树莓派的SSH端口,并在PC上通过[SSH接口](https://wiki.seeedstudio.com/remote_connect/)远程访问它。 + +> 注意:确保PC和树莓派在同一局域网内。 + +
+ +**步骤 3.** 配置 Python 环境。 + +我们需要在树莓派上部署推理模型所需的环境,包括**Python、PyTorch、Tritonclient 和 TorchVision**,以及用于图像显示的**OpenCV**。以下是我们提供的说明: + +**Python** + +我们可以执行 `python –V` 命令以确保 Python 版本为 3.9.2。我们需要安装 PyTorch、Torchclient 和 TorchVision,确保这些库的版本与 Python 3.9.2 兼容。您可以参考 [这里](https://www.python.org/downloads/) 下载并安装 Python。 + +**PyTorch** + +如果Python版本正确,我们现在可以安装Pytorch。 + +> 注意:在安装Pytorch之前,我们必须检查Raspbian版本。 + +
+ +执行下列命令以安装 Pytorch: + +```python +# get a fresh start +sudo apt-get update +sudo apt-get upgrade + +# install the dependencies +sudo apt-get install python3-pip libjpeg-dev libopenblas-dev libopenmpi-dev libomp-dev + +# above 58.3.0 you get version issues +sudo -H pip3 install setuptools==58.3.0 +sudo -H pip3 install Cython + +# install gdown to download from Google drive +sudo -H pip3 install gdown + +# Buster OS +# download the wheel +gdown https://drive.google.com/uc?id=1gAxP9q94pMeHQ1XOvLHqjEcmgyxjlY_R +# install PyTorch 1.11.0 +sudo -H pip3 install torch-1.11.0a0+gitbc2c6ed-cp39-cp39-linux_aarch64.whl +# clean up +rm torch-1.11.0a0+gitbc2c6ed-cp39-cp39m-linux_aarch64.whl +``` + + +安装成功后,我们可以在**启动后** `python`后使用以下命令检查 PyTorch: + +```python +import torch as tr +print(tr.__version__) +``` + +
+ +>注意:可以在此找到用于树莓派4的PyTorch轮子。 + +**Tritonclient** + +我们可以执行 `pip3 install tritonclient[all]` 来下载 Tritonclient。 + +
+ +**TorchVision** + +在安装了Pytorch之后,我们可以进行Torchvision的安装。以下是相关命令: + +```python +# download the wheel +gdown https://drive.google.com/uc?id=1oDsJEHoVNEXe53S9f1zEzx9UZCFWbExh +# install torchvision 0.12.0 +sudo -H pip3 install torchvision-0.12.0a0+9b5a3fe-cp39-cp39-linux_aarch64.whl +# clean up +rm torchvision-0.12.0a0+9b5a3fe-cp39-cp39-linux_aarch64.whl +``` + +
+ +**OpenCV** + +我们可以直接执行 `pip3 install opencv-python` 来安装 OpenCV: + +
+ +### 设置 reComputer J1010 + +在本项目中,我们将把Triton推理服务器部署到reComputer J1010上。为了提高训练模型的交互性和部署便利性,我们将把模型转换为**ONNX格式**。 + +**步骤 1.** [安装](https://wiki.seeedstudio.com/reComputer_J1010_J101_Flash_Jetpack/) Jetpack 4.6.1 into reComputer J1010. + +**步骤 2.**在“home/server/docs/examples/model_repository”中创建一个新的文件夹“opi/1”。然后下载训练和转换后的[model.onnx](https://drive.google.com/file/d/1RcHK_gthCXHsJLeDOUQ6c3r0RlAUgRfV/view?usp=sharing),并将其放入“1”文件夹中。 + +
+ +>如果您需要另一个通用服务器,可以按照以下步骤操作。 + +打开一个新的终端并执行: + +```python +git clone https://github.com/triton-inference-server/server +cd ~/server/docs/examples +sh fetch_models.sh +``` + +**步骤 3.** 安装适用于 JetPack 4.6.1 的 Triton 版本,并在附带的 tar 文件中提供: [tritonserver2.21.0-jetpack5.0.tgz](https://github.com/triton-inference-server/server/releases/download/v2.19.0/tritonserver2.19.0-jetpack4.6.1.tgz)。 + +
+ +这里的 tar 文件包含 Triton 服务器可执行文件和共享库,包括 C++ 和 Python 客户端库及示例。有关如何在 JetPack 上安装和使用 Triton 的更多信息,请参考 [这里](https://github.com/triton-inference-server/server/blob/r22.04/docs/jetson.md)。 + +**步骤 4.** 请提供您希望执行的命令,我将帮助您。 + +```python + +mkdir ~/TritonServer && tar -xzvf tritonserver2.19.0-jetpack4.6.1.tgz -C ~/TritonServer +cd ~/TritonServer/bin +./tritonserver --model-repository=/home/seeed/server/docs/examples/model_repository --backend-directory=/home/seeed/TritonServer/backends --strict-model-config=false --min-supported-compute-capability=5.3 +``` + +
+ +好的,您已经完成了所有准备工作。接下来您需要进行什么操作?我可以帮助您。 + +## Operating the Program + +既然已经部署了所有需要的环境,我们就可以按照以下步骤运行项目了。 + +**步骤 1.** 下载模型和相关文件。 + +1. 从 GitHub 克隆模块。 + +打开一个新的终端并执行:. + +```python +git clone https://github.com/LemonCANDY42/Seeed_SMG_AIOT.git +cd Seeed_SMG_AIOT/ +git clone https://github.com/LemonCANDY42/OPIXray.git +``` + +2. 新建一个文件夹 “weights”,用于存储该算法的训练权重 “DOAM.pth”。下载 [weight file](https://files.seeedstudio.com/wiki/SecurityCheck/DOAM.pth.zip) 并执行: + +- `cd OPIXray/DOAM` +- `mkdir weights` + +
+ +3. 创建一个新的 “数据集 ”文件夹来存储 [X 射线图像数据集](https://drive.google.com/file/d/12moaa-ylpVu0KmUCZj_XXeA5TxZuCQ3o/view?usp=sharing)。 + +
+ +**步骤 2.** 运行推理模型。 + +执行 `python OPIXray_grpc_image_client.py -u 192.168.8.230:8001 -m opi Dataset` + +
+ +结果如下图所示: + +
+ +## 故障排除 + +> 登录 Triton 服务器时,可能会遇到以下错误: + +>1. 如果 libb64.so.0d 出错,执行: +`sudo apt-get install libb64-0d` + +>2. 如果 libre2.so.2 出错,执行 +`sudo apt-get install libre2-dev` + +>3. if error: creation server: Internal - failed to load all models, execute: +`--exit-on-error=false` + +## 技术支持与产品讨论 + +感谢您选择我们的产品!我们将为您提供各种支持,确保您在使用我们的产品时获得最顺畅的体验。我们提供多种沟通渠道,以满足不同的喜好和需求。 + +
+ + +
+ +
+ + +
+ diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Traffic-Management-DeepStream-SDK.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Traffic-Management-DeepStream-SDK.md new file mode 100644 index 000000000000..45d19cf180ac --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Traffic-Management-DeepStream-SDK.md @@ -0,0 +1,199 @@ +--- +description: 基于 DeepStream SDK的智能交通管理系统 +title: 基于 DeepStream SDK的智能交通管理系统 +keywords: + - Edge + - reComputer Application +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/Traffic-Management-DeepStream-SDK +last_update: + date: 01/04/2023 + author: w0x7ce + +no_comments: false # for Disqus + +--- + +# 基于 DeepStream SDK的智能交通管理系统 + +
+ +## 概述 + +随着城市日益增长,道路上的车辆数量也在增加。由于这一点,交通拥堵也快速增长,这反过来会严重影响国家的发展。这篇WiKi基于AI视觉提出了解决这个问题的方案。可以捕获每个红绿灯已经部署CCTV摄像头的流视频,执行目标检测以检测所有车辆,然后根据车辆拥堵情况来控制交通信号灯。此外,这些数据连同车辆制造商和行人数量一起发送到数据库以供进一步分析。该方案可以通过Jetson等设备实现。 + +为了实现这个AI视觉应用程序,我们将使用NVIDIA提供的DeepStream SDK在NVIDIA Jetson设备上进行边缘推理。此外,我们将使用 [NVIDIA NGC 模型目录](https://catalog.ngc.nvidia.com/models) 中的预训练模型来快速简便地完成部署过程。NVIDIA NGC模型目录还为许多其他不同应用程序提供了大量预训练模型。 + +## 什么是 DeepStream SDK? + +NVIDIA的 [DeepStream SDK](https://developer.nvidia.com/deepstream-sdk) 提供了一个完整的流分析工具包,用于基于AI的多传感器处理、视频、音频和图像理解。DeepStream为开发者提供了C/C ++、Python等开发语言选择或使用图形合成器进行低代码图形编程的选项,具有较高的开发灵活性。同时,DeepStream还内置了各种硬件加速插件和扩展。 + +
+ +DeepStream既适用于开发人员,也适用于企业,并为流行的目标检测和分割模型(如最先进的SSD、YOLO、FasterRCNN和MaskRCNN)提供广泛的AI模型支持。你还可以在DeepStream中集成自定义的函数和库。 + +DeepStream提供了从快速原型到完整生产级解决方案的灵活性。它还允许你选择推理路径。通过与NVIDIA Triton推理服务器的本地集成,你可以在原生框架(如PyTorch和TensorFlow)中部署模型进行推理。使用NVIDIA TensorRT进行高吞吐量推理,并提供多GPU、多流和批处理支持选项,你可以获得最佳性能。 + +## 硬件支持 + +DeepStream SDK支持以下硬件: + +- Seeed的开发板: + + - 搭载Jetson Nano的reComputer J1010 + - 搭载Jetson Nano的reComputer J1020 + - 搭载Jetson Xavier NX 8GB的reComputer J2011 + - 搭载Jetson Xavier NX 16GB的reComputer J2012 + +- Seeed的载板: + + - Jetson Mate + - Jetson SUB Mini PC + - Jetson Xavier AGX H01 Kit + - A203载板 + - A203(版本2)载板 + - A205载板 + - A206载板 + +- NVIDIA官方的开发套件: + + - NVIDIA® Jetson Nano开发套件 + - NVIDIA® Jetson Xavier NX开发套件 + - NVIDIA® Jetson AGX Xavier开发套件 + - NVIDIA® Jetson TX2开发套件 + - NVIDIA® Jetson AGX Orin开发套件 + +- NVIDIA官方的SoMs: + + - NVIDIA® Jetson Nano模块 + - NVIDIA® Jetson Xavier NX模块 + - NVIDIA® Jetson TX2 NX模块 + - NVIDIA® Jetson TX2模块 + - NVIDIA® Jetson AGX Xavier模块 + +## 先决条件 + +- 任何一种搭载上述JetPack的Jetson设备 +- 键盘和HDMI显示器 +- 具有Windows、Linux或Mac操作系统的主机PC +- USB网络摄像头或MIPI CSI摄像头,且该摄像头可以由你的Jetson设备支持 + +## 入门指南 + +在本例中,我们将使用 [DashCamNet model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/dashcamnet) 它作为主要检测器,检测感兴趣的对象,对于每辆检测到的汽车, [VehicleTypeNet model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/vehicletypenet) 和 [VehicleMakeNet model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/vehiclemakenet) 作为二级分类器,分别确定车辆的类型和制造商。VehicleTypeNet可以对以下车型进行分类:双门轿车、四门轿车、SUV、货车、大型车辆和卡车。而VehicleMakeNet可以对以下车辆进行分类:讴歌、奥迪、宝马、雪佛兰、克莱斯勒、道奇、福特、道朗格、本田、现代、英菲尼迪、Jeep、起亚、雷克萨斯、马自达、奔驰、日产、斯巴鲁、丰田和大众。 + +> 以下工作流程是在搭载[JetPack 4.6.1](https://developer.nvidia.com/embedded/jetpack-sdk-461)的 [reComputer J1010](https://www.seeedstudio.com/Jetson-10-1-H0-p-5335.html) 上运行测试的。 + +**步骤 1:**请确保你已正确地在Jetson设备上安装了所有**SDK组件**和**DeepStream SDK**。 (点击 [WiKi](https://wiki.seeedstudio.com/reComputer_J1020_A206_Flash_JetPack/) 阅读安装指南) + +**注意:** 建议使用 **NVIDIA SDK Manager** 安装所有SDK组件和DeepStream SDK。 + +**步骤 2:** 下载配置文件 + +```sh +git clone https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps.git +cd deepstream_reference_apps/deepstream_app_tao_configs/ +sudo cp -a * /opt/nvidia/deepstream/deepstream/samples/configs/tao_pretrained_models/ +``` + +**步骤 3:** 下载模型 + +```sh +sudo apt install -y wget zip +cd /opt/nvidia/deepstream/deepstream/samples/configs/tao_pretrained_models/ +sudo ./download_models.sh +``` + +**步骤 4:** 打开 **deepstream_app_source1_dashcamnet_vehiclemakenet_vehicletypenet.txt** + +```sh +vi deepstream_app_source1_dashcamnet_vehiclemakenet_vehicletypenet.txt +``` + +**步骤 5:** 将[sink0]下的**sync=1** 修改成 **sync=0** + +```sh +[sink0] +enable=1 +#Type - 1=FakeSink 2=EglSink 3=File +type=2 +sync=0 +source-id=0 +gpu-id=0 +``` + +**步骤 6:** 将 [primary-gie] 下的 model-engine-file 改为 **../../models/tao_pretrained_models/dashcamnet/resnet18_dashcamnet_pruned.etlt_b1_gpu0_fp16.engine** + +```sh +[primary-gie] +enable=1 +gpu-id=0 +# Modify as necessary +model-engine-file=../../models/tao_pretrained_models/dashcamnet/resnet18_dashcamnet_pruned.etlt_b1_gpu0_fp16.engine +batch-size=1 +#Required by the app for OSD, not a plugin property +bbox-border-color0=1;0;0;1 +bbox-border-color1=0;1;1;1 +bbox-border-color2=0;0;1;1 +bbox-border-color3=0;1;0;1 +gie-unique-id=1 +config-file=config_infer_primary_dashcamnet.txt +``` + +**步骤 7:** 将 [secondary-gie0] 下的 model-engine-file 改为 **../../models/tao_pretrained_models/vehiclemakenet/resnet18_vehiclemakenet_pruned.etlt_b4_gpu0_fp16.engine** + +```sh +[secondary-gie0] +enable=1 +model-engine-file=../../models/tao_pretrained_models/vehiclemakenet/resnet18_vehiclemakenet_pruned.etlt_b4_gpu0_fp16.engine +gpu-id=0 +batch-size=4 +gie-unique-id=4 +operate-on-gie-id=1 +operate-on-class-ids=0; +config-file=config_infer_secondary_vehiclemakenet.txt +``` + +**步骤 8:** 将 [secondary-gie1] 下的 model-engine-file 改为 **../../models/tao_pretrained_models/vehicletypenet/resnet18_vehicletypenet_pruned.etlt_b4_gpu0_fp16.engine** + +```sh +[secondary-gie1] +enable=1 +model-engine-file=../../models/tao_pretrained_models/vehicletypenet/resnet18_vehicletypenet_pruned.etlt_b4_gpu0_fp16.engine +gpu-id=0 +batch-size=4 +gie-unique-id=5 +operate-on-gie-id=1 +operate-on-class-ids=0; +config-file=config_infer_secondary_vehicletypenet.txt +``` + +**步骤 9:** 将摄像头、键盘和HDMI显示器连接到Jetson设备上,然后执行以下操作: + +```sh +sudo deepstream-app -c deepstream_app_source1_dashcamnet_vehiclemakenet_vehicletypenet.txt +``` + +现在你可以在连接的HDMI显示器上显示如下的可视化demo: + +
+ +如果你想尝试 **/opt/nvidia/deepstream/deepstream/samples/configs/tao_pretrained_models/** 下可用的其他示例,你可以按如下方式运行它们: + +```sh +sudo deepstream-app -c deepstream_app_source1_$MODEL.txt +``` + +## 技术支持与项目讨论 + +非常感谢您选择我们的产品!我们提供不同的支持方式,以确保您在使用我们的产品时拥有尽可能流畅的体验。我们提供多种沟通渠道,以适应不同的偏好和需求。 + +
+ + +
+ +
+ + +
diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv5-Object-Detection-Jetson.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv5-Object-Detection-Jetson.md new file mode 100644 index 000000000000..d4fcb4f52924 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv5-Object-Detection-Jetson.md @@ -0,0 +1,1001 @@ +--- +description: 使用YOLOv5和Roboflow进行少样本目标检测 +title: 使用YOLOv5和Roboflow进行少样本目标检测 +tags: + - Data Label + - AI model train + - AI model deploy + - Roboflow +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/YOLOv5-Object-Detection-Jetson +last_update: + date: 01/04/2023 + author: w0x7ce +--- + +# 使用YOLOv5和Roboflow进行少样本目标检测 + +## 介绍 + +[YOLO](https://docs.ultralytics.com) 是现有最著名的目标检测算法之一。它只需要**少量样本进行训练**,同时提供**更快的训练时间**和**高精度**。我们将逐一演示这些特点,并逐步解释完整的机器学习流程,其中你可以通过在边缘设备(如**NVIDIA Jetson平台**)上运行训练模型来使用训练数据进行目标检测,具体流程其中包括 **收集数据、标记数据、训练数据和检测对象**。同时,我们还将比较使用自定义数据集和公共数据集之间的差异。 + +## 什么是 YOLOv5? + +YOLO 是 ‘You Only Look Once’的缩写。 它是一种实时检测和识别图像中各种对象的算法。。 Ultralytics的 [YOLOv5](https://ultralytics.com/yolov5) 是YOLO的版本之一,其现在是基于PyTorch框架。 + +
+ +## 什么是少样本目标检测? + +传统上,如果你想训练机器学习模型,你会使用像Pascal VOC 2012数据集之类的公共数据集,其中大约包含17112张图像。然而,我们将使用迁移学习来实现用YOLOv5进行少样本目标检测,只需要非常少的训练样本。我们将在本Wiki中演示这一点。 + +## 硬件支持 + +YOLOv5受以下硬件支持: + +- NVIDIA官方的开发套件: + + - NVIDIA® Jetson Nano开发套件 + - NVIDIA® Jetson Xavier NX开发套件 + - NVIDIA® Jetson AGX Xavier开发套件 + - NVIDIA® Jetson TX2开发套件 + +- NVIDIA官方的SoMs: + + - NVIDIA® Jetson Nano模块 + - NVIDIA® Jetson Xavier NX模块 + - NVIDIA® Jetson TX2 NX模块 + - NVIDIA® Jetson TX2模块 + - NVIDIA® Jetson AGX Xavier模块 + +- Seeed推出的载板产品: + + - Jetson Mate + - Jetson SUB Mini PC + - Jetson Xavier AGX H01 Kit + - A203载板 + - A203 (版本2)载板 + - A205载板 + - A206载板 + +## 先决条件 + +- 以上任何一款Jetson设备都可以安装最新的JetPack v4.6.1,包括所有的SDK组件 (点击 [ wiki](https://wiki.seeedstudio.com/reComputer_J1020_A206_Flash_JetPack/) 参考进行安装) + +- 主机 PC + + - 本地训练需要使用Linux PC(最好是Ubuntu) + - 云端训练可以在任何操作系统的PC上进行 + +## 入门 + +在像Jetson平台这样的边缘设备上运行第一个物体检测项目只需要四个主要步骤! + +1. 收集数据集或使用公开可用的数据集 + + - 手动收集数据集 + - 使用公开可用的数据集 + +2. 使用Roboflow进行数据集注释 + +3. 在本地PC或云端训练 + + - 在本地PC(Linux)上训练 + - 在Google Colab上训练 + +4. 在Jetson设备上进行推理(inference) + +## 收集数据集或使用公开可用的数据集 + +物体检测项目的第一步是获取训练数据。您可以从公开可用的数据集下载数据,或创建自己的数据集!通常公开数据集用于教育和研究目的。然而,如果您想构建特定的物体检测项目,而公开数据集中没有您想要检测的对象,那么您可能需要构建自己的数据集。 + +### 手动收集数据集 + +建议首先录制要识别的物体的视频镜头。您必须确保覆盖物体的所有角度(360度),将物体放置在不同的环境中,不同的光照和不同的天气条件下进行拍摄。 +我们录制的总视频时长为9分钟,其中4.5分钟用于拍摄花朵,剩余的4.5分钟用于拍摄叶子。录制可以分如下: + +
+ +1. 早晨晴天 +2. 早晨有风天气 +3. 早晨雨天 +4. 中午晴天 +5. 中午有风天气 +6. 中午雨天 +7. 晚上晴天 +8. 晚上有风天气 +9. 晚上雨天 + +**注意:** 后续我们将把这段视频镜头转换为一系列图像,以组成训练数据集。 + +### 使用公开可用的数据集 + +您可以下载多个公开可用的数据集,例如 [COCO 数据集](https://cocodataset.org), [Pascal VOC 数据集](http://host.robots.ox.ac.uk/pascal/VOC) 等。建议使用 [Roboflow Universe](https://universe.roboflow.com) 平台该平台提供了广泛的数据集,可用于构建计算机视觉模型,包括 [90,000多个数据集,共计6600多万张图像](https://blog.roboflow.com/computer-vision-datasets-and-apis) 。此外,您可以在Google上简单搜索**开源数据集**,并从可用的各种数据集中进行选择。 + +## 使用Roboflow对数据集进行注释w + +接下来,我们将转到对数据集进行注释。注释就是简单地在我们要检测的每个物体周围画一个矩形框,并为其分配标签。我们将说明如何使用Roboflow实现这一点。 + +[Roboflow](https://roboflow.com) 是一种基于在线的注释工具。在这里,我们可以直接将之前录制的视频镜头导入到Roboflow中,并将其导出为一系列图像。这个工具非常方便,因为它会让我们帮助将数据集划分为“训练、验证和测试”。此外,在标记图像之后,这个工具还允许我们添加更多的处理。此外,它还可以轻松地将带有标签的数据集导出为**YOLOV5 PyTorch格式**,这正是我们需要的! + +- **步骤 1.** 点击 [这里](https://app.roboflow.com/login) 注册一个Roboflow账户 + +- **步骤 2.** 点击 **创建新项目**开始我们的项目。 + +
+ +- **步骤 3.** 填写 **Project Name**,保留 **License (CC BY 4.0)** 和**Project Type (Object Detection (Bounding Box))** 作为默认设置。在 **What will your model predict?** 列下,填写一个注释组名称。例如,在我们的情况下,我们选择 **plants**。这个名称应该突出你数据集中的所有类别。最后,点击**Create Public Project**。 + +
+ +- **步骤 4.** 拖放你之前录制的视频镜头 + +
+ +- **步骤 5.** 选择一个帧率,使得视频可以分割成一系列图像。在这里,我们将使用默认帧速率 **1 frame/second**,总共会生成542张图像。一旦您通过滑动滑块选择了帧速率,单击**Choose Frame Rate**。这个过程需要几秒钟到几分钟的时间(取决于视频长度)来完成。 + +
+ +- **步骤 6.** 图像处理完成后,单击**Finish Uploading**。请耐心等待直到图像完成上传。 + + +
+ +- **步骤 7.** 图像上传完成后,单击**Assign Images**。 + +
+ +- **步骤 8.** 选择一张图片,在花朵周围画一个矩形框,选择标签为**pink flower**,然后按下**ENTER**键。 + +
+ +- **步骤 9.** 对于剩下的花朵,重复同样的操作。 + +
+ +- **步骤 10.** 画一个矩形框在叶子周围,选择标签为**leaf**,然后按下**ENTER**键。 + +
+ +- **步骤 11.** 对于剩下的叶子,重复同样的操作。 + +
+ +**注意:** 尝试标记图像中所见到的所有对象。如果只有对象的一部分可见,也请尝试标记它。 + +- **步骤 12.** 继续注释数据集中的所有图像。 + +Roboflow有一个名为**Label Assist**的功能,它可以预测标签,使标注速度更快。然而,它不适用于所有类型的物体,而是适用于一种特定类型的物体。要使用此功能,您只需点击**Label Assist**按钮,然后**select a model**、**select the classes**,浏览图像,您将看到带有边界框的预测标签。 + +
+ +
+ +
+ +如上所述,它只能帮助预测上面列出的80个类别的标签。如果您的图像不包含上述对象类别,则不能使用标签辅助功能。 + +- **步骤 13.** 一旦标注完成,单击 **Add images to Dataset** + +
+ +- **步骤 14.** 接下来我们将根据“训练集、验证集和测试集”划分图像。保留默认比例来进行分配,然后单击 **Add Images** + +
+ +- **步骤 15.** 单击 **Generate New Version** + +
+ +- **步骤 16.** 现在,如果你想的画可以添加 **Preprocessing** 和 **Augmentation** 。在这里我们将 **删除** **Resize** 选项并保留原始图像大小。 + +
+ +- **步骤 17.** 接下来,继续执行其余的默认设置,然后单击 **Generate**。 + +
+ +- **步骤 18.** 单击 **Export** + +
+ +- **步骤 19.** 选择 **download zip to computer**, 在 "Select a Format" 下选择 **YOLO v5 PyTorch** 并且单击 **Continue** + +
+ +- **步骤 20.** 之后一个 **.zip 文件** 会被下载到您的计算机上,我们稍后需要这个.zip文件进行训练。 + +## 在本地PC或云端训练 + +在对数据集进行注释后,我们需要对数据集进行训练。对于训练,我们将介绍两种方法。一种方法基于在线(Google Colab),另一种方法基于本地PC(Linux)。 + +对于Google Colab训练,我们将使用两种方法。在第一种方法中,我们将使用Ultralytics HUB上传数据集,在Colab上设置训练,监测训练并获取训练好的模型。在第二种方法中,我们将通过Roboflow api从Roboflow获取数据集,在Colab上进行训练并下载训练好的模型。 + +### 使用Ultralytics HUB和Google Colab + +是一个平台,您可以在不需要编写任何代码的情况下训练模型。只需将数据上传到Ultralytics HUB,训练模型并将其部署到现实世界中!这是一个快速、简单和易于使用的平台。任何人都轻松上手! + +- **步骤 1.** 访问 [网页链接](https://hub.ultralytics.com) 去注册一个免费的 Ultralytics HUB 账号 + +- **步骤 2.** 输入您的凭据并**使用电子邮件进行注册**或使用**Google、GitHub或Apple账户**进行注册。 + +
+ +在你登录Ultralytics HUB之后, 您会看到下面这样的仪表板: + +
+ +- **步骤 3.** 解压之前从Roboflow下载并得到的zip文件,并将其中的所有文件放入一个新的文件夹中。 + +- **步骤 4.** 确保您的**数据集yaml文件**和**根目录文件夹**(之前创建的文件夹)拥有相同的名称。例如,如果您将yaml文件命名为**pinkflowers.yaml**,则根目录应该命名为**pinkflowers**。 + +- **步骤 5.** 打开 **pinkflowers.yaml** 文件并且编辑 **train** 和 **val** 目录结构,如下所示: + +```sh +train: train/images +val: valid/images +``` + +- **步骤 6.** 将根目录文件夹压缩为 **.zip**文件,并与根目录文件夹名称相同(例如,本例中为**pinkflowers.zip**)。 + +现在,我们已经准备好将该数据集上传到Ultralytics HUB上进行训练。 + +- **步骤 7.** 单击**数据集**选项卡,然后单击**上传数据集**。 + +
+ +- **步骤 8.** 输入数据集的**名称**。如果需要,输入**描述**。将我们之前创建的.zip文件拖放到**数据集**区域下,然后单击**上传数据集**。 + +
+ +- **步骤 9.** 数据集上传后,单击数据集以查看更多详细信息。 + +
+ +- **步骤 10.** 单击 **Projects** 选项卡 然后单击 **Create Project** + +
+ +- **步骤 11.** 为项目输入一个**名称**,如果需要,输入一个**描述**,如果需要添加一个**封面图像**,然后单击**创建项目**。 + +
+ +- **步骤 12.** 进入新创建的项目,点击 **创建模型**。 + +
+ +- **步骤 13.** 输入 **模型名称** ,选择 **YOLOv5n** 作为预训练模型,然后点击 **下一步**。 + +
+ +**注意:**通常情况下,首选的预训练模型是 **YOLOv5n6**,因为它适用于像Jetson平台这样的边缘计算设备。然而,Ultralytics HUB目前还没有支持它。因此,我们使用稍微相似的模型 **YOLOv5n**。 + +- **步骤 14.** 选择我们之前上传的数据集,单击 **Next** + +
+ +- **步骤 15.** 选择 **Google Colab** 作为训练平台然后单击**Advanced Options** 下拉菜单。 在这里,我们可以更改一些训练设置。例如,我们将把训练的epoch次数从300更改为100,并保持其它设置不变。然后点击 **保存**。 + +
+ +**注意:** 如果您计划进行本地培训,还可以选择 **Bring your own agent** + +- **步骤 16.** 复制 **API key** 并且点击 **Open Colab** + +
+ +- **步骤 17.** 将 **MODEL_KEY** 替换为之前复制的 **API密钥**。 + +
+ +- **步骤 18.** 点击 `Runtime > Rull All` 来运行所有代码单元格,开始训练过程。 + +
+ +- **步骤 19.** 当 Ultralytics HUB 的状态变为蓝色时,返回到 Ultralytics HUB 界面,然后点击 **完成** 。此时,您还会看到 Colab 的状态显示为 **已连接**。 + +
+ +现在你可以在HUB上看到训练过程 + +
+ +- **步骤 20.** 训练完成后,点击 PyTorch 按钮以下载以 PyTorch 格式保存的已训练模型。PyTorch 是在 Jetson 设备上进行推断所需的格式。 + +
+ +**注意:** 您还可以将模型导出成其他在 **格式** 下显示的格式 。 + +如果您返回到谷歌 Colab,您可以看到更多详细信息,如下所示: + +
+ +这里的准确率 `mAP@.5` 叶子的大约为90%和花朵的大约为99.4%,而总体准确率的 `mAP@.5` 大约为94.7%。 + +### 使用 Google Colab 和 Roboflow api + +在这里,我们使用谷歌 Colaboratory 环境在云端进行训练。此外,我们在 Colab 中使用 Roboflow api 轻松下载我们的数据集。 + +- **步骤 1.** 单击 [这](https://colab.research.google.com/gist/lakshanthad/645de50b7cc5870f4070b720be770f8b/yolov5-training-for-jetson.ipynb) 打开已准备好的谷歌 Colab 工作区,并按照工作区中提到的步骤进行操作。 + +
+ +训练玩之后, 你会看到如下输出: + +
+ +这里的准确率 `mAP@.5` 叶子的大约为91.6%和花朵的大约为99.4%,而总体准确率的 `mAP@.5` 大约为95.5%。 + +- **步骤 2.** 在 **文件** 选项卡下, 如果您导航到 `runs/train/exp/weights` ,您会看到一个名为 **best.pt** 的文件。这是训练生成的模型。下载此文件并将其复制到 Jetson 设备上,因为这是我们稍后要在 Jetson 设备上进行推论所使用的模型。 + +
+ +### 使用本地PC端 + +在这里,您可以使用安装了 Linux 操作系统的个人电脑进行训练。我们在此示例中使用了 Ubuntu 20.04 个人电脑。 + +- **步骤 1.** 克隆 **YOLOv5 repo** 并在**Python>=3.7.0** 的环境下安装 **requirements.txt** 文件。 + +```sh +git clone https://github.com/ultralytics/yolov5 +cd yolov5 +pip install -r requirements.txt +``` + +- **步骤 2.** 将之前从 Roboflow 下载的 .zip 文件复制并粘贴到 **yolov5** 目录下,然后解压它。 + +```sh +# example +cp ~/Downloads/pink-flowers.v1i.yolov5pytorch.zip ~/yolov5 +unzip pink-flowers.v1i.yolov5pytorch.zip +``` + +- **步骤 3.** 请打开 **data.yaml** 文件,并将 **train** 和 **val** 目录按如下所示进行编辑: + +```sh +train: train/images +val: valid/images +``` + +- **步骤 4.** 执行以下命令开始训练: + +```sh +python3 train.py --data data.yaml --img-size 640 --batch-size -1 --epoch 100 --weights yolov5n6.pt +``` + +由于我们的数据集相对较小(约500张图像),因此 **迁移学习** 有望比从头开始训练产生更好的结果。我们使用预训练的 COCO 模型的权重对模型进行了初始化,通过将模型名称(yolov5n6)传递给“权重”参数来实现。在此,我们使用了 **yolov5n6**,因为它非常适合边缘设备。这里将 **image size** 设置为 **640x640**。我们将 **batch-size** 设置为 **-1**,因为这将自动确定最佳的批大小。但是,如果出现“GPU内存不足”的错误,请选择批量大小为 **32**,甚至是 **16**。您也可以根据自己的喜好更改 **迭代轮数** + +训练完成之后, 你会看到如下输出: + +
+ +这里的准确率 `mAP@.5` 叶子的约为90.6% 而花的约为99.4% , 并且总体准确率 `mAP@.5` 约为 95%. + +- **步骤 5.** 如果您导航到 `runs/train/exp/weights`,您会看到一个名为 **best.pt** 的文件。这是训练生成的模型。将此文件复制粘贴到 Jetson 设备上,因为这是我们稍后要在 Jetson 设备上进行推理所使用的模型。 + +
+ +## 在Jetson设备上进行推理 + +### 使用TensorRT + +现在,我们将使用Jetson设备,使用之前训练生成的模型来对图像进行推断(识别物体)。 这里将使用 [NVIDIA TensorRT](https://developer.nvidia.com/tensorrt) 来增加 Jetson 平台上的推断性能。 + +- **步骤 1.** 进入 Jetson 设备的终端,install pip 并update它。 + +```sh +sudo apt update +sudo apt install -y python3-pip +pip3 install --upgrade pip +``` + +- **步骤 2.** 克隆如下 repo + +```sh +git clone https://github.com/ultralytics/yolov5 +``` + +- **步骤 3.** 打开 **requirements.txt** + +```sh +cd yolov5 +vi requirements.txt +``` + +- **步骤 4.** 编辑以下行。在这里,您需要先按下 **i** 进入可编辑模式。编辑完成后,按下 **ESC**,然后键入 **:wq** 以保存并退出。 + +```sh +matplotlib==3.2.2 +numpy==1.19.4 +# torch>=1.7.0 +# torchvision>=0.8.1 +``` + +**注意:** 我们在这里包含了固定版本的 **matplotlib** 和 **numpy**,以确保稍后运行YOLOv5时不会出现错误。此外,因为稍后将安装它们,此时将排除 **torch** 和 **torchvision**。 + +- **步骤 5.** 安装以下依赖项: + +```sh +sudo apt install -y libfreetype6-dev +``` + +- **步骤 6.** 安装必要的软件包 + +```sh +pip3 install -r requirements.txt +``` + +- **步骤 7.** 安装 torch + +```sh +cd ~ +sudo apt-get install -y libopenblas-base libopenmpi-dev +wget https://nvidia.box.com/shared/static/fjtbno0vpo676a25cgvuqc1wty0fkkg6.whl -O torch-1.10.0-cp36-cp36m-linux_aarch64.whl +pip3 install torch-1.10.0-cp36-cp36m-linux_aarch64.whl +``` + +- **步骤 8.** 安装 torchvision + +```sh +sudo apt install -y libjpeg-dev zlib1g-dev +git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision +cd torchvision +sudo python3 setup.py install +``` + +- **步骤 9.** 克隆如下 repo + +```sh +cd ~ +git clone https://github.com/wang-xinyu/tensorrtx +``` + +- **步骤 10.** 将之前训练生成的 **best.pt** 文件复制到 **yolov5** 目录中。 + +- **步骤 11.** 将 **tensorrtx/yolov5** 目录下的 **gen_wts.py** 文件复制到 **yolov5** 目录中。 + +```sh +cp tensorrtx/yolov5/gen_wts.py yolov5 +``` + +- **步骤 12.** 使用 PyTorch **.pt** 文件生成 **.wts** 文件 + +```sh +cd yolov5 +python3 gen_wts.py -w best.pt -o best.wts +``` + +- **步骤 13.** 导航至 **tensorrtx/yolov5** + +```sh +cd ~ +cd tensorrtx/yolov5 +``` + +- **步骤 14.** 使用 **vi text editor**打开 **yololayer.h** + +```sh +vi yololayer.h +``` + +- **步骤 15.** 将 **CLASS_NUM** 更改为您模型所训练的类别数。在我们的示例中,为2。 + +```sh +CLASS_NUM = 2 +``` + +- **步骤 16.** 创建一个新的 **build** 目录并进入其中: + +```sh +mkdir build +cd build +``` + +- **步骤 17.** 将之前生成的 **best.wts** 文件复制到这个 **build** 目录中: + +```sh +cp ~/yolov5/best.wts . +``` + +- **步骤 18.** 编译它 + +```sh +cmake .. +make +``` + +- **步骤 19.** 序列化模型 + +```sh +sudo ./yolov5 -s [.wts] [.engine] [n/s/m/l/x/n6/s6/m6/l6/x6 or c/c6 gd gw] +#example +sudo ./yolov5 -s best.wts best.engine n6 +``` + +在这里,我们使用 **n6**,因为它被推荐用于像 NVIDIA Jetson 平台这样的边缘设备。但是,如果您使用 Ultralytics HUB 来设置训练,那么您只能使用 **n**,因为 HUB 目前尚未支持 **n6**。 + +- **步骤 20.** 将您希望模型检测到的图像复制到新文件夹中,例如 **tensorrtx/yolov5/images**。 + +- **步骤 21.** 以下是反序列化和对图像运行推理的命令: + +```sh +sudo ./yolov5 -d best.engine images +``` + +以下是在Jetson Nano和Jetson Xavier NX上运行推理的时间对比: + +#### Jetson Nano + +在这里,量化设置为FP16 + +
+ +从上面的结果中,我们可以取平均值约为 **47ms**。将此值转换为每秒帧数:1000/47 = 21.2766 = **21fps**。 + +#### Jetson Xavier NX + +在这里,量化设置为FP16 + +
+ +从上面的结果中,我们可以取平均值约为 **20ms**。将此值转换为每秒帧数:1000 / 20 = **50fps**。 + +此外,输出图像将如下所示,显示检测到的对象: + +
+ +
+ +### 使用 TensorRT 和 DeepStream SDK + +在这里,我们将使用 [NVIDIA TensorRT](https://developer.nvidia.com/tensorrt) 和 [NVIDIA DeepStream SDK](https://developer.nvidia.com/deepstream-sdk) 来对视频进行推理。 + +- **步骤 1.** 确保您已正确地在 Jetson 设备上安装了所有 **SDK组件** 和 **DeepStream SDK**。(点击 [此wiki](https://wiki.seeedstudio.com/Tutorial-of-A20X-Carrier-Boards) 参考安装) + +**注意:** 建议使用 NVIDIA SDK 管理器安装所有 SDK 组件和 DeepStream SDK。 + +- **步骤 2.** 进入 Jetson 设备的终端,安装 pip 并升级它 + +```sh +sudo apt update +sudo apt install -y python3-pip +pip3 install --upgrade pip +``` + +- **步骤 3.** 克隆如下 repo + +```sh +git clone https://github.com/ultralytics/yolov5 +``` + +- **步骤 4.** 打开 **requirements.txt** + +```sh +cd yolov5 +vi requirements.txt +``` + +- **步骤 5.** 编辑以下行。在这里,您需要先按下 **i** 进入可编辑模式。编辑完成后,按下 **ESC**,然后键入 **:wq** 以保存并退出。 + +```sh +matplotlib==3.2.2 +numpy==1.19.4 +# torch>=1.7.0 +# torchvision>=0.8.1 +``` + +**注意:** 我们在这里包含了固定版本的 **matplotlib** 和 **numpy**,以确保稍后运行 YOLOv5 时不会出现错误。此外,因为稍后将安装它们,此时将排除 **torch** 和 **torchvision**。 + +- **步骤 6.** 安装如下依赖: + +```sh +sudo apt install -y libfreetype6-dev +``` + +- **步骤 7.** 安装必要的软件包 + +```sh +pip3 install -r requirements.txt +``` + +- **步骤 8.** 安装 torch + +```sh +cd ~ +sudo apt-get install -y libopenblas-base libopenmpi-dev +wget https://nvidia.box.com/shared/static/fjtbno0vpo676a25cgvuqc1wty0fkkg6.whl -O torch-1.10.0-cp36-cp36m-linux_aarch64.whl +pip3 install torch-1.10.0-cp36-cp36m-linux_aarch64.whl +``` + +- **步骤 9.** 安装 torchvision + +```sh +sudo apt install -y libjpeg-dev zlib1g-dev +git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision +cd torchvision +sudo python3 setup.py install +``` + +- **步骤 10.** 克隆如下 repo + +```sh +cd ~ +git clone https://github.com/marcoslucianops/DeepStream-Yolo +``` + +- **步骤 11.** 将 **DeepStream-Yolo/utils** 目录下的 **gen_wts_yoloV5.py** 文件复制到 **yolov5** 目录中。 + +```sh +cp DeepStream-Yolo/utils/gen_wts_yoloV5.py yolov5 +``` + +- **步骤 12.** 在 yolov5 仓库中,从 YOLOv5 发布中下载 **pt 文件**(以 YOLOv5s 6.1 为例): + +```sh +cd yolov5 +wget https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s.pt +``` + +- **步骤 13.** 生成 **cfg** 和 **wts** 文件 + +```sh +python3 gen_wts_yoloV5.py -w yolov5s.pt +``` + +**注意**: 要更改推理尺寸(默认为640) + +```sh +-s SIZE +--size SIZE +-s HEIGHT WIDTH +--size HEIGHT WIDTH + +Example for 1280: +-s 1280 +or +-s 1280 1280 +``` + +- **步骤 14.** 将生成的 **cfg** 和 **wts** 文件复制到 **DeepStream-Yolo** 文件夹中。 + +```sh +cp yolov5s.cfg ~/DeepStream-Yolo +cp yolov5s.wts ~/DeepStream-Yolo +``` + +- **步骤 15.** 在打开 **DeepStream-Yolo** 文件夹之后,编译库 + +```sh +cd ~/DeepStream-Yolo +# For DeepStream 6.1 +CUDA_VER=11.4 make -C nvdsinfer_custom_impl_Yolo +# For DeepStream 6.0.1 / 6.0 +CUDA_VER=10.2 make -C nvdsinfer_custom_impl_Yolo +``` + +- **步骤 16.** 根据您的模型编辑 **config_infer_primary_yoloV5.txt** 文件。 + +```sh +[property] +... +custom-network-config=yolov5s.cfg +model-file=yolov5s.wts +... +``` + +- **步骤 17.** 编辑 **deepstream_app_config** 文件 + +```sh +... +[primary-gie] +... +config-file=config_infer_primary_yoloV5.txt +``` + +- **步骤 18.** 运行推理 + +```sh +deepstream-app -c deepstream_app_config.txt +``` + +
+ +上面的结果在 **Jetson Xavier NX** 上使用 **FP32** 和 **YOLOv5s 640x640** 进行推理。我们可以看到 **FPS** 约为 **30**。 + +#### INT8 校准 + +如果您想在推理过程中使用INT8精度,则需要按照以下步骤操作: + +- **步骤 1.** 安装 OpenCV + +```sh +sudo apt-get install libopencv-dev +``` + +- **步骤 2.** 使用 OpenCV 支持编译 / 重新编译的 **nvdsinfer_custom_impl_Yolo** 库 + +```sh +cd ~/DeepStream-Yolo +# For DeepStream 6.1 +CUDA_VER=11.4 OPENCV=1 make -C nvdsinfer_custom_impl_Yolo +# For DeepStream 6.0.1 / 6.0 +CUDA_VER=10.2 OPENCV=1 make -C nvdsinfer_custom_impl_Yolo +``` + +- **步骤 3.** 对于 COCO 数据集,请下载 [val2017](https://drive.google.com/file/d/1gbvfn7mcsGDRZ_luJwtITL-ru2kK99aK/view?usp=sharing), 然后将其解压并移动到 **DeepStream-Yolo** 文件夹中。 + +- **步骤 4.** 为校准图像创建一个新目录: + +```sh +mkdir calibration +``` + +- **步骤 5.** 运行以下命令,从 COCO 数据集中选择1000张随机图像来运行校准: + +```sh +for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do \ + cp ${jpg} calibration/; \ +done +``` + +**注意:** NVIDIA 建议至少使用 500 张图像来获取良好的准确性。在此示例中,选择 1000 张图像以获得更好的准确度(图像越多 = 准确度越高)。更高的 INT8_CALIB_BATCH_SIZE 值将导致更高的准确率和更快的校准速度。请根据您的 GPU 内存设置它。您可以将其设置为 **head -1000**。例如,对于 2000 张图像,使用 **head -2000**。此过程可能需要很长时间。 + + +- **步骤 6.** 创建包含所有选定图像的 **calibration.txt** 文件: + +```sh +realpath calibration/*jpg > calibration.txt +``` + +- **步骤 7.** 设置环境变量: + +```sh +export INT8_CALIB_IMG_PATH=calibration.txt +export INT8_CALIB_BATCH_SIZE=1 +``` + +- **步骤 8.** 更新 **config_infer_primary_yoloV5.txt** 文件 + +从 + +```sh +... +model-engine-file=model_b1_gpu0_fp32.engine +#int8-calib-file=calib.table +... +network-mode=0 +... +``` + +到 + +```sh +... +model-engine-file=model_b1_gpu0_int8.engine +int8-calib-file=calib.table +... +network-mode=1 +... +``` + +- **步骤 9.** 运行推理 + +```sh +deepstream-app -c deepstream_app_config.txt +``` + +
+ +上述结果在 **Jetson Xavier NX** 上使用 **INT8** 和 **YOLOv5s 640x640** 进行推理。我们可以看到 **FPS** 约为 **60**。 + +#### 基准测试结果: + +下表总结了在 **Jetson Xavier NX** 上不同模型的表现。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模型名字精度推理尺寸推理时间 (ms)FPS
YOLOv5sFP32320x32016.6660
FP32640x64033.3330
INT8640x64016.6660
YOLOv5nFP32640x64016.6660
+ +## 使用公共数据集与自定义数据集的比较: + +现在我们将比较使用公共数据集和自己定制数据集时,训练样本数量和训练时间之间的差异。 + +### 训练样本数量 + +#### 自定义数据集 + +在这篇文章中,我们首先将植物数据集以视频的形式收集起来,然后使用Roboflow将视频转化为一系列图像。这样,我们得到了542张图片,与公共数据集相比,这是一个非常小的数据集。 + +
+ +#### 公共数据集 + +公共数据集例如**Pascal VOC 2012**和**Microsoft COCO 2017**数据集中分别包含约**17112**张和**121408**张图像。 + +##### Pascal VOC 2012 数据集 + +
+ +##### Microsoft COCO 2017 数据集 + +
+ +### 训练时间 + +#### 本地训练 + +该训练是在一张搭载有6GB显存的NVIDIA GeForce GTX 1660 Super显卡上完成的。 + +##### 自定义数据集的本地训练 + +###### 540 张图片数据集 + +根据我们之前针对植物数据集进行的本地训练,我们得到了以下结果: + +
+ +在这次本地训练中,我们只花费了**2.2小时**训练了100个epochs,相对于使用公共数据集训练而言,训练速度较快。 + +###### 240 张图片数据集 + +我们将数据集缩减为240张图片,再次进行了训练,并获得了以下结果: + +
+ +在这次训练中,只花费了约**1小时**训练了100个epochs,相对于使用公共数据集训练而言,训练速度较快。 + +##### 使用Pascal VOC 2012数据集进行本地训练 + +在这个场景中,我们使用Pascal VOC 2012数据集进行训练,同时保持相同的训练参数。我们发现每个epoch需要大约 **50分钟(0.846小时*60)**,因此我们在训练1个epoch后停止了训练。 + +
+ +如果我们计算100个epochs的训练时间,大约需要**50 * 100分钟 = 5000分钟= 83小时**,这比训练自定义数据集所需的时间要长得多。 + +##### 使用Microsoft COCO 2017数据集进行本地训练 + +在这个场景中,我们使用Microsoft COCO 2017数据集进行训练,并保持相同的训练参数。我们发现每个epoch大约需要**7.5小时**的时间,因此我们在完成一个epoch之前就停止了训练。 + +
+ +如果我们计算100个epochs的训练时间,大约需要**7.5小时*100 = 750小时**,这比训练自定义数据集所需的时间要长得多。 + +#### Google Colab 训练 + +这次训练是在一张拥有12GB显存的NVIDIA Tesla K80显卡上进行的。 + +##### 自定义数据集 + +###### 540 张图像数据集 + +根据我们之前在Google Colab平台上使用540张图像进行的植物训练,我们得到了以下结果: + +
+ +在这次使用Google Colab平台进行的540张图像的植物训练中,只花费了约**1.3小时**训练了100个epochs,相对于使用公共数据集训练而言,训练速度较快。 + +###### 240 张图像数据集 + +我们将数据集缩减为240张图片,再次进行了训练,并获得了以下结果: + +
+ +在这次使用Google Colab平台进行的240张图像的植物训练中,只花费了约**42分钟**训练了100个epochs,相对于使用公共数据集训练而言,训练速度较快。 + +##### 使用Google Colab平台进行Pascal VOC 2012数据集训练 + +在这个场景中,我们使用Pascal VOC 2012数据集进行训练,并保持相同的训练参数。我们发现每个epoch大约需要**9 分钟 (0.148 小时 * 60)** 的时间,因此我们在完成1个epoch后停止了训练。 + +
+ +如果我们计算100个epochs的训练时间,大约需要**9 * 100分钟 = 900分钟 = 15小时**,这比训练自定义数据集所需的时间要长得多。但相比在本地环境或使用GPU较弱的云计算平台上训练,使用Google Colab进行训练可大大缩短训练时间。 + +##### 使用Google Colab平台进行Microsoft COCO 2017数据集训练 + +在这个场景中,我们使用Microsoft COCO 2017数据集进行训练,并保持相同的训练参数。我们发现每个epoch预计需要大约**1.25个小时**的时间,因此我们在完成一个epoch之前就停止了训练。 + +
+ +如果我们计算100个epochs的训练时间,大约需要**1.25小时*100 = 125小时**,这比训练自定义数据集所需的时间要长得多。但相比在本地环境或使用GPU配置较弱的云计算平台上训练,使用Google Colab进行训练可大幅缩短训练时间。 + +### 训练样本数量和训练时间总结 + +| 数据集 | 训练样本数量 | 本地PC训练时长 (GTX 1660 Super) | Google Colab的训练时间 (NVIDIA Tesla K80) | +|---|---|---|---| +| Custom | 542 | 2.2 hours | 1.3 hours | +| | 240 | 1 hour | 42 minutes | +| Pascal VOC 2012 | 17112 | 83 hours | 15 hours | +| Microsoft COCO 2017 | 121408 | 750 hours | 125 hours | + +## 预训练模型的比较 + +可以从以下表格中了解更多关于预训练模型的信息。在我们的场景中,我们在**Google Colab平台**上训练了模型,并在**Jetson Nano**和**Jetson Xavier NX**上进行了推理,并使用**YOLOv5n6**作为预训练模型。 + +| 模型 | size (pixels) | mAPval 0.5:0.95 | mAPval 0.5 | Speed CPU b1 (ms) | Speed V100 b1 (ms) | Speed V100 b32 (ms) | Speed Jetson Nano FP16 (ms) | Speed Jetson Xavier NX FP16 (ms) | params (M) | FLOPs @640 (B) | +|---|---|---|---|---|---|---|---|---|---|---| +| YOLOv5n | 640 | 28.0 | 45.7 | 45 | 6.3 | 0.6 | | | 1.9 | 4.5 | +| YOLOv5s | 640 | 37.4 | 56.8 | 98 | 6.4 | 0.9 | | | 7.2 | 16.5 | +| YOLOv5m | 640 | 45.4 | 64.1 | 224 | 8.2 | 1.7 | | | 21.2 | 49.0 | +| YOLOv5l | 640 | 49.0 | 67.3 | 430 | 10.1 | 2.7 | | | 46.5 | 109.1 | +| YOLOv5x | 640 | 50.7 | 68.9 | 766 | 12.1 | 4.8 | | | 86.7 | 205.7 | +| **YOLOv5n6** | **640** | **71.7** | **95.5** | **153** | **8.1** | **2.1** | **47** | **20** | **3.1** | **4.6** | +| YOLOv5s6 | 1280 | 44.8 | 63.7 | 385 | 8.2 | 3.6 | | | 12.6 | 16.8 | +| YOLOv5m6 | 1280 | 51.3 | 69.3 | 887 | 11.1 | 6.8 | | | 35.7 | 50.0 | +| YOLOv5l6 | 1280 | 53.7 | 71.3 | 1784 | 15.8 | 10.5 | | | 76.8 | 111.4 | +| YOLOv5x6 + [TTA] | 1280 1536 | 55.0 55.8 | 72.7 72.7 | 3136 - | 26.2 - | 19.4 - | | | 140.7 - | 209.8 - | + +> 参考: [YOLOv5 GitHub](https://github.com/ultralytics/yolov5) + +## 额外应用 + +由于上述所解释的所有步骤对于任何类型的目标检测应用程序都是通用的,因此您只需要针对您自己的目标检测应用程序更改数据集即可! + +### 路标识别 + +这里我们使用了来自Roboflow的[路标数据集](https://universe.roboflow.com/usmanchaudhry622-gmail-com/traffic-and-road-signs/1) 并在NVIDIA Jetson上进行了推断! + +
+ +### 野火烟雾检测 + +我们在这里使用了来自Roboflow的 [野火烟雾数据集](https://public.roboflow.com/object-detection/wildfire-smoke) ,并在NVIDIA Jetson上进行了推断! + +
+ +## 来源: + +- **[网页]** [YOLOv5 Documentation](https://docs.ultralytics.com) + +- **[网页]** [Ultralytics HUB](https://ultralytics.com/hub) + +- **[网页]** [Roboflow Documentation](https://docs.roboflow.com) + +## 技术支持与项目讨论 + +非常感谢您选择我们的产品!我们提供不同的支持方式,以确保您在使用我们的产品时拥有尽可能流畅的体验。我们提供多种沟通渠道,以适应不同的偏好和需求。 + +
+ + +
+ +
+ + +
diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8-DeepStream-TRT-Jetson.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8-DeepStream-TRT-Jetson.md new file mode 100644 index 000000000000..2740741ea7b9 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8-DeepStream-TRT-Jetson.md @@ -0,0 +1,533 @@ +--- +description: 在NVIDIA Jetson上使用TensorRT和DeepStream SDK部署YOLOv8 +title: 在NVIDIA Jetson上使用TensorRT和DeepStream SDK部署YOLOv8 +tags: + - Data Label + - AI model train + - AI model deploy + - Yolov8 +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/YOLOv8-DeepStream-TRT-Jetson +last_update: + date: 04/21/2023 + author: Lakshantha +--- + +# 在NVIDIA Jetson上使用TensorRT和DeepStream SDK部署YOLOv8 + +本指南解释了如何将训练好的AI模型部署到NVIDIA Jetson平台,并使用TensorRT和DeepStream SDK进行推理。在这里,我们使用TensorRT来最大化Jetson平台上的推理性能。 + +
+ +## 先决条件 + +- Ubuntu 主机 PC:系统安装或使用VMware Workstation Player的虚拟机 +- [reComputer Jetson](https://www.seeedstudio.com/reComputer-J4012-p-5586.html) 或任何其他运行 JetPack 4.6 或更高版本的 NVIDIA Jetson 设备 + +## DeepStream 版本与 JetPack 版本对应表 + +为了使 YOLOv8 与 DeepStream 协同工作,我们使用这个 [DeepStram-YOLO](https://github.com/marcoslucianops/DeepStream-Yolo) 仓库,它支持不同版本的 DeepStream。因此,请确保根据 DeepStream 的正确版本使用相应版本的 JetPack。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DeepStream 版本JetPack 版本
6.25.1.1
5.1
6.1.15.0.2
6.15.0.1 DP
6.0.14.6.3
4.6.2
4.6.1
6.04.6
+ +为了验证这个wiki, 我们在运行**JetPack 5.1.1**系统的[reComputer J4012](https://www.seeedstudio.com/reComputer-J4012-p-5586.html)上安装 **DeepStream SDK 6.2** 。 + +## 将 JetPack 刷入 Jetson 设备 + +现在,您需要确保 Jetson 设备已经刷入了包含 SDK 组件的 [JetPack](https://developer.nvidia.com/embedded/jetpack) 系统,例如 CUDA、TensorRT、cuDNN 等。您可以使用 NVIDIA SDK Manager 或命令行将 JetPack 刷入设备。 + +对于 Seeed Jetson 驱动的设备刷写指南,请参考以下链接: +- [reComputer J1010 | J101](https://wiki.seeedstudio.com/reComputer_J1010_J101_Flash_Jetpack) +- [reComputer J2021 | J202](https://wiki.seeedstudio.com/reComputer_J2021_J202_Flash_Jetpack) +- [reComputer J1020 | A206](https://wiki.seeedstudio.com/reComputer_J1020_A206_Flash_JetPack) +- [reComputer J4012 | J401](https://wiki.seeedstudio.com/reComputer_J4012_Flash_Jetpack) +- [A203 Carrier Board](https://wiki.seeedstudio.com/reComputer_A203_Flash_System) +- [A205 Carrier Board](https://wiki.seeedstudio.com/reComputer_A205_Flash_System) +- [Jetson Xavier AGX H01 Kit](https://wiki.seeedstudio.com/Jetson_Xavier_AGX_H01_Driver_Installation) +- [Jetson AGX Orin 32GB H01 Kit](https://wiki.seeedstudio.com/Jetson_AGX_Orin_32GB_H01_Flash_Jetpack) + +## 安装 DeepStream + +有多种方法可以将 DeepStream 安装到 Jetson 设备上。您可以按照[此指南](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Quickstart.html)了解更多信息。然而,我们建议您通过 SDK Manager 安装 DeepStream,因为它可以确保安装成功且易于操作。 + +如果您使用 SDK Manager 安装 DeepStream,您需要在系统启动后执行以下命令,这些是 DeepStream 的附加依赖项。 + +```sh +sudo apt install \ +libssl1.1 \ +libgstreamer1.0-0 \ +gstreamer1.0-tools \ +gstreamer1.0-plugins-good \ +gstreamer1.0-plugins-bad \ +gstreamer1.0-plugins-ugly \ +gstreamer1.0-libav \ +libgstreamer-plugins-base1.0-dev \ +libgstrtspserver-1.0-0 \ +libjansson4 \ +libyaml-cpp-dev +``` + +## 安装必要包 + +- **步骤 1.** 访问 Jetson 设备的终端,并安装 pip 并升级它 + +```sh +sudo apt update +sudo apt install -y python3-pip +pip3 install --upgrade pip +``` + +- **步骤 2.** 克隆如下 repo + +```sh +git clone https://github.com/ultralytics/ultralytics.git +``` + +- **步骤 3.** 打开 requirements.txt 文件 + +```sh +cd ultralytics +vi requirements.txt +``` + +- **步骤 4.** 编辑以下行。在这里,您需要先按 `i` 键进入编辑模式。按 `ESC`键,然后输入 : `:wq` 保存并退出。 + +```sh +# torch>=1.7.0 +# torchvision>=0.8.1 +``` + +**注意:** 目前暂时不包括 torch 和 torchvision,因为它们将在稍后安装。 + +- **步骤 5.** 安装必要包 + +```sh +pip3 install -r requirements.txt +``` + +如果安装程序提示 **python-dateutil** 包已过时,可以通过以下方式升级它: + +```sh +pip3 install python-dateutil --upgrade +``` + +## 安装 PyTorch 和 Torchvision + +我们不能通过 pip 安装 PyTorch 和 Torchvision,因为它们与基于 **ARM aarch64 架构**的 Jetson 平台不兼容。因此,我们需要手动安装预构建的 PyTorch pip wheel 包,并从源代码编译/安装 Torchvision。 + +请访问 [此网页](https://forums.developer.nvidia.com/t/pytorch-for-jetson) 以获取所有 PyTorch 和 Torchvision 的链接。 + +以下是 JetPack 5.0 及以上版本支持的一些版本。 + +**PyTorch v1.11.0** + +支持使用 Python 3.8版本的 JetPack 5.0 (L4T R34.1.0) / JetPack 5.0.1 (L4T R34.1.1) / JetPack 5.0.2 (L4T R35.1.0) + +**文件名:** torch-1.11.0-cp38-cp38-linux_aarch64.whl + +**URL:** https://nvidia.box.com/shared/static/ssf2v7pf5i245fk4i0q926hy4imzs2ph.whl + +**PyTorch v1.12.0** + +支持使用 Python 3.8 版本的 JetPack 5.0 (L4T R34.1.0) / JetPack 5.0.1 (L4T R34.1.1) / JetPack 5.0.2 (L4T R35.1.0) + +**文件名:** torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl + +**URL:** https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl + +- **步骤 1.** + +```sh +wget -O +pip3 install +``` + +例如,我们这里运行的是 **JP5.0.2**,因此我们选择安装 **PyTorch v1.12.0**。 + +```sh +sudo apt-get install -y libopenblas-base libopenmpi-dev +wget https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl -O torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl +pip3 install torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl +``` + +- **步骤 2.** 根据您安装的 PyTorch 版本安装 torchvision。例如,我们选择了 PyTorch v1.12.0,这意味着我们需要选择安装 Torchvision v0.13.0。 + +```sh +sudo apt install -y libjpeg-dev zlib1g-dev +git clone --branch v0.13.0 https://github.com/pytorch/vision torchvision +cd torchvision +python3 setup.py install --user +``` + +以下是您需要根据PyTorch版本安装的相应torchvision版本列表: + +- PyTorch v1.11 - torchvision v0.12.0 +- PyTorch v1.12 - torchvision v0.13.0 + +如果您需要更详细的列表,请查看 [此链接](https://github.com/pytorch/vision/blob/main/README.rst). + +## YOLOv8的DeepStream配置 + +- **步骤 1.** 克隆如下 repo + +```sh +cd ~ +git clone https://github.com/marcoslucianops/DeepStream-Yolo +``` + +- **步骤 2.** 检出代码库: + +```sh +cd DeepStream-Yolo +git checkout 68f762d5bdeae7ac3458529bfe6fed72714336ca +``` + +- **步骤 3.** 从 **DeepStream-Yolo/utils** 文件夹中复制 **gen_wts_yoloV8.py** 到 **ultralytics** 文件夹中 + +```sh +cp utils/gen_wts_yoloV8.py ~/ultralytics +``` + +- **步骤 4.** 在ultralytics代码库中,从[YOLOv8 发布版](https://github.com/ultralytics/assets/releases/)中下载 **pt file** (例如: YOLOv8s) + +```sh +wget https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s.pt +``` + +**注意:** 您可以使用自定义模型,但重要的是在您的**配置文件(cfg)**和**权重文件名(weights/wts)**中保留YOLO模型的参考(例如,以yolov8_开头),以确保正确生成引擎。 + +- **步骤 5.** 生成cfg、wts和labels.txt(如果有的话)文件的指导,以YOLOv8s为例 + +```sh +python3 gen_wts_yoloV8.py -w yolov8s.pt +``` + +**注意:** 改变推理尺寸(默认为640像素) + +```sh +-s SIZE +--size SIZE +-s HEIGHT WIDTH +--size HEIGHT WIDTH + +Example for 1280: + +-s 1280 +or +-s 1280 1280 +``` + +- **步骤 6.** 复制生成的 **cfg**, **wts** 和 **labels.txt** (如有生成) 文件到 **DeepStream-Yolo** 文件夹中 + +```sh +cp yolov8s.cfg ~/DeepStream-Yolo +cp yolov8s.wts ~/DeepStream-Yolo +cp labels.txt ~/DeepStream-Yolo +``` + +- **步骤 7.** 打开 **DeepStream-Yolo** 文件夹并编译库 + +```sh +cd ~/DeepStream-Yolo +CUDA_VER=11.4 make -C nvdsinfer_custom_impl_Yolo # for DeepStream 6.2/ 6.1.1 / 6.1 +CUDA_VER=10.2 make -C nvdsinfer_custom_impl_Yolo # for DeepStream 6.0.1 / 6.0 +``` + +- **步骤 8.** 编辑**config_infer_primary_yoloV8.txt**文件以适应你的YOLOv8s模型(假设有80个类别) + +```sh +[property] +... +custom-network-config=yolov8s.cfg +model-file=yolov8s.wts +... +num-detected-classes=80 +... +``` + +- **步骤 9.** 编辑 **deepstream_app_config.txt** 文件 + +```sh +... +[primary-gie] +... +config-file=config_infer_primary_yoloV8.txt +``` + +- **步骤 10.** 更改**deepstream_app_config.txt**文件中的视频源。 如你所见,这里加载了一个默认的视频文件。 + +```sh +... +[source0] +... +uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 +``` + +## 运行推理 + +```sh +deepstream-app -c deepstream_app_config.txt +``` + +
+ +上述结果在搭载FP32精度的YOLOv8s模型的Jetson AGX Orin 32GB H01开发板上运行,分辨率为640x640。我们可以看到,帧率(FPS)大约为60,但这并不是真实的FPS。因为当我们在**deepstream_app_config.txt**文件中 **[sink0]** 部分设置**type=2**时,FPS会被限制为监视器的刷新率,而我们用于此次测试的监视器是60Hz的。 然而,如果你将此值更改为**type=1**,你将能够获得最大FPS,但不会有实时检测输出。 + +对于同样的视频源和上面使用的相同模型,在将 **[sink0]**下的**type更改为1**之后,可以获得以下结果。 + +
+ +正如你所见,我们可以得到大约139的帧率(FPS),这与真实的帧率值相对应。 + +## INT8 校准 + +如果您想使用INT8精度进行推理,您需要遵循以下步骤: + +- **步骤 1.** 安装 OpenCV + +```sh +sudo apt-get install libopencv-dev +``` + +- **步骤 2.** 编译或重新编译带有OpenCV支持的**nvdsinfer_custom_impl_Yolo**库 + +```sh +cd ~/DeepStream-Yolo +CUDA_VER=11.4 OPENCV=1 make -C nvdsinfer_custom_impl_Yolo # for DeepStream 6.2/ 6.1.1 / 6.1 +CUDA_VER=10.2 OPENCV=1 make -C nvdsinfer_custom_impl_Yolo # for DeepStream 6.0.1 / 6.0 +``` + +- **步骤 3.** 对于 COCO 数据集, 请下载 [val2017](https://drive.google.com/file/d/1gbvfn7mcsGDRZ_luJwtITL-ru2kK99aK/view?usp=sharing)数据集, 解压,然后将其移动到**DeepStream-Yolo**文件夹中。 + +- **步骤 4.** 为校准图像创建一个新的目录。 + +```sh +mkdir calibration +``` + +- **步骤 5.** 运行以下命令从COCO数据集中随机选择1000张图像进行校准。 + +```sh +for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do \ + cp ${jpg} calibration/; \ +done +``` + +**注意**:NVIDIA建议至少使用500张图像以获得良好的准确性。在这个例子中,选择了1000张图像以获得更高的准确性(图像越多,准确性越高)。更高的INT8_CALIB_BATCH_SIZE值将带来更高的准确性和更快的校准速度。根据你的GPU内存设置它。你可以更改设置中header-1000。例如,对于2000张图像,header设置为-2000。这个过程可能需要很长时间。 + +- **步骤 6.** 创建一个名为**calibration.txt**的文件,并在其中列出所有选定的图像, + +```sh +realpath calibration/*jpg > calibration.txt +``` + +- **步骤 7.** 设置环境变量 + +```sh +export INT8_CALIB_IMG_PATH=calibration.txt +export INT8_CALIB_BATCH_SIZE=1 +``` + +- **步骤 8.** 更新 **config_infer_primary_yoloV8.txt** 文件 + +将原本的: + +```sh +... +model-engine-file=model_b1_gpu0_fp32.engine +#int8-calib-file=calib.table +... +network-mode=0 +... +``` + +修改为: + +```sh +... +model-engine-file=model_b1_gpu0_int8.engine +int8-calib-file=calib.table +... +network-mode=1 +... +``` + +- **步骤 9.** 在运行推理之前,如前所述,在d**eepstream_app_config.txt**文件中的 **[sink0]** 部分设置**type=2**,以获得最大帧率(FPS)性能。 + +- **步骤 10.** 运行推理 + +```sh +deepstream-app -c deepstream_app_config.txt +``` + +
+ +在这里我们得到FPS的值大约为 350! + +## 多流配置 + +NVIDIA DeepStream允许您在一个配置文件中轻松设置多个流,以构建多流视频分析应用程序。我们将在本维基的后面部分演示具有高FPS性能的模型如何真正有助于多流应用,以及一些基准测试。 + +在这里,我们将以9个流作为示例。我们将更改 **deepstream_app_config.txt** 文件。 + +- **步骤 1.** 在 **[tiled-display]** 部分内,将行和列更改为3和3,这样我们就可以得到一个3x3的网格,包含9个流。 + +```sh +[tiled-display] +rows=3 +columns=3 +``` + +- **步骤 2.** 在 **[source0]** 部分中, 设置 **num-sources=9** 并添加更多的 **uri**。在这里,我们将简单地将当前示例视频文件复制8次,以构成总共9个流。然而,您可以根据应用程序的需要更改为不同的视频流。 + +```sh +[source0] +enable=1 +type=3 +uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 +uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 +uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 +uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 +uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 +uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 +uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 +uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 +uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 +num-sources=9 +``` + +现在,如果您再次使用 **deepstream-app -c deepstream_app_config.txt** 命令, 您将看到以下输出: + +
+ +## trtexec 工具 + +包含在样本目录中的是一个名为[trtexec](https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#trtexec)的命令行包装工具。 trtexec是一个无需开发自己的应用程序即可使用TensorRT的工具。trtexec工具有三个主要目的: + +- 对随机或用户提供的输入数据进行网络基准测试。 +- 从模型生成序列化引擎。 +- 从构建器生成序列化时序缓存。 + +在这里,我们可以使用trtexec工具快速对不同参数的模型进行基准测试。但首先,您需要有一个ONNX模型,我们可以通过使用ultralytics yolov8生成这个ONNX模型。 + +- **步骤 1.** 构建 ONNX 模型: + +```sh +yolo mode=export model=yolov8s.pt format=onnx +``` + +- **步骤 2.** 使用trtexec构建引擎文件,步骤如下: + +```sh +cd /usr/src/tensorrt/bin +./trtexec --onnx= --saveEngine= +``` + +例如: + +```sh +./trtexec --onnx=/home/nvidia/yolov8s.onnx --saveEngine=/home/nvidia/yolov8s.engine +``` + +这将输出如下的性能结果以及生成的 **.engine** 文件。默认情况下,它会将ONNX转换为TensorRT优化的文件,精度为 **FP32**,你可以看到如下的输出结果。 + +
+ +在这里,我们可以将平均延迟设为7.2毫秒,这相当于139帧每秒(FPS)。这是我们在之前的DeepStream演示中获得的相同性能。 + +然而,如果你想要 **INT8** 精度,它提供了更好的性能,你可以按照以下方式执行上述命令。 + +```sh +./trtexec --onnx=/home/nvidia/yolov8s.onnx --int8 --saveEngine=/home/nvidia/yolov8s.engine +``` + +
+ +在这里,我们可以将平均延迟设为3.2毫秒,这相当于313帧每秒(FPS)。 + +## YOLOv8 基准测试结果 + +我们在 [reComputer J4012](https://www.seeedstudio.com/reComputer-J4012-p-5586.html), [AGX Orin 32GB H01 Kit](https://www.seeedstudio.com/AGX-Orin-32GB-H01-Kit-p-5569.html) 和 [reComputer J2021](https://www.seeedstudio.com/reComputer-J2021-p-5438.html)上运行了不同 YOLOv8 模型的性能基准测试。 + +
+ +想要了解更多我们使用 YOLOv8 模型进行的性能基准测试,请查看[我们的博客](https://www.seeedstudio.com/blog/2023/03/30/yolov8-performance-benchmarks-on-nvidia-jetson-devices). + +## 多流模型基准测试。 + +
+ +在 reComputer Jetson Orin 系列产品上运行了几个 DeepStream 应用程序后,我们使用 YOLOv8s 模型进行了基准测试。 + +- 首先,我们使用了单个 AI 模型,并在同一 AI 模型上运行了多个流。 +- 其次,我们使用了多个 AI 模型,并在多个 AI 模型上运行了多个流。 + +所有这些基准测试都是在以下条件下进行的: + +- YOLOv8s 640x640 图像输入 +- 禁用 UI(用户界面) +- 开启最大电源和最高性能模式。 + + + +从这些基准测试中,我们可以看到,对于最高配置的 Orin NX 16GB 设备,使用单个 YOLOv8s 模型在 INT8 精度下,你可以使用大约 40 个摄像头,大约每秒 5 帧;而使用多个 YOLOv8s 模型在 INT8 精度下,每个流可以使用大约 11 个摄像头,大约每秒 15 帧。对于多模型应用,摄像头的数量较少,因为设备的 RAM 限制以及每个模型占用大量的 RAM。 + +总结来说,当仅使用 YOLOv8 模型而没有运行应用程序时,Jetson Orin Nano 8GB 可以支持 4-6 个流,而 Jetson Orin NX 16GB 可以管理最多 16-18 个流。然而,这些数字可能会在实际应用中随着 RAM 资源的使用而减少。因此,建议将这些数字作为指导,并在您的特定条件下进行自己的测试。 + +## 来源 + +- [YOLOv8 文档](https://docs.ultralytics.com) +- [TensorRT 文档](https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html) +- [DeepStream SDK 文档](https://docs.nvidia.com/metropolis/deepstream/dev-guide) + +## 技术支持与项目讨论 + +非常感谢您选择我们的产品!我们提供不同的支持方式,以确保您在使用我们的产品时拥有尽可能流畅的体验。我们提供多种沟通渠道,以适应不同的偏好和需求。 + +
+ + +
+ +
+ + +
\ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8-TRT-Jetson.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8-TRT-Jetson.md new file mode 100644 index 000000000000..ed152d145a1f --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8-TRT-Jetson.md @@ -0,0 +1,1039 @@ +--- +description: 在NVIDIA Jetson上使用TensorRT部署YOLOv8 +title: 在NVIDIA Jetson上使用TensorRT部署YOLOv8 +tags: + - Data Label + - AI model train + - AI model deploy + - Yolov8 +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/YOLOv8-TRT-Jetson +last_update: + date: 07/17/2023 + author: Lakshantha +--- + +# 在NVIDIA Jetson上使用TensorRT部署YOLOv8 + +这篇维基指南解释了如何将YOLOv8模型部署到NVIDIA Jetson平台,并使用TensorRT进行推理。在这里,我们使用TensorRT来最大化Jetson平台上的推理性能。 + +这里将介绍不同的计算机视觉任务,包括: + +- 目标检测 +- 图像分割 +- 图像分类 +- 姿态估计 +- 目标跟踪 + +
+ +## 先决条件 + +- Ubuntu 主机 PC 系统安装或使用VMware Workstation Player的虚拟机 +- [reComputer Jetson](https://www.seeedstudio.com/reComputer-J4012-p-5586.html) 任何其他运行 JetPack 5.1.1 或更高版本的 NVIDIA Jetson 设备 + +:::注意 +此 wiki 已在 [reComputer J4012](https://www.seeedstudio.com/reComputer-J4012-p-5586.html) 和 [reComputer Industrial J4012](https://www.seeedstudio.com/reComputer-Industrial-J4012-p-5684.html) 上进行测试并验证,该设备由 NVIDIA Jetson 或 NX 16GB 模块驱动 +::: + +## 刷写 JetPack 到 Jetson + +现在您需要确保 Jetson 设备已刷写 [JetPack](https://developer.nvidia.com/embedded/jetpack) 系统。您可以使用 NVIDIA SDK Manager 或命令行来刷写 JetPack 到设备。 + +对于 Seeed Jetson 驱动设备的刷写指南,请参考以下链接: +- [reComputer J1010 | J101](https://wiki.seeedstudio.com/reComputer_J1010_J101_Flash_Jetpack) +- [reComputer J2021 | J202](https://wiki.seeedstudio.com/reComputer_J2021_J202_Flash_Jetpack) +- [reComputer J1020 | A206](https://wiki.seeedstudio.com/reComputer_J1020_A206_Flash_JetPack) +- [reComputer J4012 | J401](https://wiki.seeedstudio.com/reComputer_J4012_Flash_Jetpack) +- [A203 Carrier Board](https://wiki.seeedstudio.com/reComputer_A203_Flash_System) +- [A205 Carrier Board](https://wiki.seeedstudio.com/reComputer_A205_Flash_System) +- [Jetson Xavier AGX H01 Kit](https://wiki.seeedstudio.com/Jetson_Xavier_AGX_H01_Driver_Installation) +- [Jetson AGX Orin 32GB H01 Kit](https://wiki.seeedstudio.com/Jetson_AGX_Orin_32GB_H01_Flash_Jetpack) + +:::注意 +请确保刷写 JetPack 版本 5.1.1,因为这是我们在本 wiki 中验证过的版本 +::: + +## 一行代码将 YOLOv8 部署到 Jetson! + +在您将 Jetson 设备刷写 JetPack 系统后,您可以简单地运行以下命令来运行 YOLOv8 模型。这将首先下载并安装必要的包、依赖项,设置环境,并从 YOLOv8 下载预训练模型以执行对象检测、图像分割、姿态估计和图像分类任务! + +```sh +wget files.seeedstudio.com/YOLOv8-Jetson.py && python YOLOv8-Jetson.py +``` + +:::注意 +上述脚本的源代码可以在此找到。[here](https://github.com/yuyoujiang/Run-YOLOv8-in-One-Line-on-Jetson) +::: + +## 使用预训练模型 + +开始使用 YOLOv8 的最快方式是使用 YOLOv8 提供的预训练模型。然而,这些是 PyTorch 模型,因此在 Jetson 上进行推理时将仅利用 CPU。如果您希望在 Jetson 上运行 GPU 时获得这些模型的最佳性能,可以通过遵循本 wiki 的这一部分将 PyTorch 模型导出到 TensorRT。 + +```sh +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + + + + +YOLOv8 提供了 5 种针对对象检测任务的预训练 PyTorch 模型权重,这些模型是在 COCO 数据集上训练的,输入图像尺寸为 640x640。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模型尺寸
(像素)
mAPval
50-95
CPU ONNX
速度
(ms)
A100 TensorRT
速度
(ms)
参数
(M)
FLOPs
(B)
YOLOv8n64037.380.40.993.28.7
YOLOv8s64044.9128.41.2011.228.6
YOLOv8m64050.2234.71.8325.978.9
YOLOv8l64052.9375.22.3943.7165.2
YOLOv8x64053.9479.13.5368.2257.8
+ + +参考: https://docs.ultralytics.com/tasks/detect + +您可以选择并从上表下载您所需的模型,然后执行以下命令在图像上进行推理。 + +```sh +yolo detect predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg' show=True +``` + +在这里,对于模型,您可以更改为 yolov8s.pt、yolov8m.pt、yolov8l.pt 或 yolov8x.pt 中的任何一个,它将下载相应的预训练模型。 + +您还可以连接一个网络摄像头,并执行以下命令。 + +```sh +yolo detect predict model=yolov8n.pt source='0' show=True +``` + +:::注意 +如果在执行上述命令时遇到任何错误,请尝试在命令的末尾添加 "device=0"。 +::: + +
+ +:::注意 +上述操作是在 reComputer J4012 或 reComputer Industrial J4012 上运行的,并使用经过 640x640 输入尺寸训练的 YOLOv8s 模型,并采用 TensorRT FP16 精度。 +::: + +
+ + +YOLOv8 提供了 5 种针对图像分类任务的预训练 PyTorch 模型权重,这些模型是在 ImageNet 数据集上训练的,输入图像尺寸为 224x224。您可以在下面找到它们。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模型尺寸
(像素)
acc
top1
acc
top5
CPU ONNX
速度
(ms)
A100 TensorRT
速度
(ms)

参数
(M)
FLOPs
(B) at 640
YOLOv8n-cls22466.687.012.90.312.74.3
YOLOv8s-cls22472.391.123.40.356.413.5
YOLOv8m-cls22476.493.285.40.6217.042.7
YOLOv8l-cls22478.094.1163.00.8737.599.7
YOLOv8x-cls22478.494.3232.01.0157.4154.8
+ +参考: https://docs.ultralytics.com/tasks/classify + +您可以选择您想要的模型,并执行以下命令在图像上运行推理。 + +```sh +yolo classify predict model=yolov8n-cls.pt source='https://ultralytics.com/images/bus.jpg' show=True +``` + +在这里,对于模型,您可以更改为 yolov8s-cls.pt、yolov8m-cls.pt、yolov8l-cls.pt 或 yolov8x-cls.pt 中的任何一个,它将下载相应的预训练模型。 + +您还可以连接一个网络摄像头,并执行以下命令。 + +```sh +yolo classify predict model=yolov8n-cls.pt source='0' show=True +``` + +:::注意 +如果您在执行上述命令时遇到任何错误,请尝试在命令的末尾添加"device=0"。 +::: + +(更新为 224 像素推理。) +
+ +:::注意 +上述操作是在 reComputer J4012 或 reComputer Industrial J4012 上运行的,并使用经过 224x224 输入尺寸训练的 YOLOv8s-cls 模型,并采用 TensorRT FP16 精度。同时,在使用 TensorRT 导出的模型时,请确保在推理命令中传递参数 **imgsz=224**,因为推理引擎默认接受 640 像素的图像尺寸。 +::: + +
+ + +YOLOv8 提供了 5 种针对图像分割任务的预训练 PyTorch 模型权重,这些模型是在 COCO 数据集上训练的,输入图像尺寸为 640x640。您可以在下面找到它们: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模型尺寸
(像素)
mAPbox
50-95
mAPmask
50-95
CPU ONNX
速度
(ms)
A100 TensorRT
速度
(ms)
参数
(M)
FLOPs
(B)
YOLOv8n-seg64036.730.596.11.213.412.6
YOLOv8s-seg64044.636.8155.71.4711.842.6
YOLOv8m-seg64049.940.8317.02.1827.3110.2
YOLOv8l-seg64052.342.6572.42.7946.0220.5
YOLOv8x-seg64053.443.4712.14.0271.8344.1
+ +参考: https://docs.ultralytics.com/tasks/segment + + +您可以选择您想要的模型,并执行以下命令在图像上运行推理 + +```sh +yolo segment predict model=yolov8n-seg.pt source='https://ultralytics.com/images/bus.jpg' show=True +``` + +在这里,对于模型,您可以更改为 yolov8s.pt、yolov8m.pt、yolov8l.pt 或 yolov8x.pt 中的任何一个,它将下载相应的预训练模型。 + +您还可以连接一个网络摄像头,并执行以下命令。 + +```sh +yolo segment predict model=yolov8n-seg.pt source='0' show=True +``` + +:::注意 +如果您在执行上述命令时遇到任何错误,请尝试在命令的末尾添加 "device=0"。 +::: + +
+ +:::注意 +上述操作是在 reComputer J4012 或 reComputer Industrial J4012 上运行的,并使用经过 640x640 输入尺寸训练的 YOLOv8s-seg 模型,并采用 TensorRT FP16 精度。 +::: + +
+ + +YOLOv8 提供了 6 种针对姿态估计任务的预训练 PyTorch 模型权重,这些模型是在 COCO 关键点数据集上训练的,输入图像尺寸为 640x640。您可以在下面找到它们: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模型尺寸
(像素)
mAPpose
50-95
mAPpose
50
CPU ONNX
速度
(ms)
A100 TensorRT
速度
(ms)
参数
(M)
FLOPs
(B)
YOLOv8n-pose64050.480.1131.81.183.39.2
YOLOv8s-pose64060.086.2233.21.4211.630.2
YOLOv8m-pose64065.088.8456.32.0026.481.0
YOLOv8l-pose64067.690.0784.52.5944.4168.6
YOLOv8x-pose64069.290.21607.13.7369.4263.2
YOLOv8x-pose-p6128071.691.24088.710.0499.11066.4
+ +参考: https://docs.ultralytics.com/tasks/pose + +选择您所需的模型后,您可以执行以下命令来对图像进行推理: + +```sh +yolo pose predict model=yolov8n-pose.pt source='https://ultralytics.com/images/bus.jpg' +``` + +在这里,对于模型,您可以更改为 yolov8s.pt、yolov8m.pt、yolov8l.pt 或 yolov8x.pt 中的任何一个,它将下载相应的预训练模型。 + +您还可以连接一个网络摄像头,并执行以下命令。 + +```sh +yolo pose predict model=yolov8n-pose.pt source='0' +``` + +:::注意 +如果您在执行上述命令时遇到任何错误,请尝试在命令的末尾添加"device=0"。 +::: + +
+ +
+ + +对象跟踪是一项涉及识别视频中对象的位置和类别,然后为该检测分配一个唯一 ID 的任务。 + +基本上,对象跟踪的输出与对象检测相同,只是增加了对象 ID。 + +参考: https://docs.ultralytics.com/modes/track + +您可以选择基于对象检测或图像分割的所需模型,并执行以下命令在视频上运行推理: + +```sh +yolo track model=yolov8n.pt source="https://youtu.be/Zgi9g1ksQHc" +``` + +在这里,对于模型,您可以更改为 yolov8n.pt, yolov8s.pt, yolov8m.pt, yolov8l.pt, yolov8x.pt, yolov8n-seg.pt, yolov8s-seg.pt, yolov8m-seg.pt, yolov8l-seg.pt, yolov8x-seg.pt 中的任何一个,它将下载相应的预训练模型。 + +您还可以连接一个网络摄像头,并执行以下命令。 + +```sh +yolo track model=yolov8n.pt source="0" +``` + +:::注意 +如果您在执行上述命令时遇到任何错误,请尝试在命令的末尾添加 "device=0"。 +::: + +
+ +
+ +
+
+ + + +--- + +## 使用 TensorRT 提高推理速度 + +正如我们之前提到的,如果您想要提高在 Jetson 上运行 YOLOv8 模型的推理速度,您首先需要将原始的 PyTorch 模型转换为 TensorRT 模型。 + +按照以下步骤将 YOLOv8 PyTorch 模型转换为 TensorRT 模型。 + +:::注意 +这对我们之前提到的所有四种计算机视觉任务都有效 +::: + +- **步骤 1.** 执行导出命令时,请指定模型路径。 + +```sh +yolo export model= format=engine device=0 +``` + +例如: + +```sh +yolo export model=yolov8n.pt format=engine device=0 +``` + +:::注意 +如果您遇到有关 cmake 的错误,您可以忽略它。请耐心等待 TensorRT 导出完成。这可能需要几分钟时间。 +::: + +TensorRT 模型文件 (.engine) 创建完成后,您将看到如下输出: + +
+ +- **步骤 2.** +如果您想要传递额外的参数,您可以通过以下表格进行: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyValueDescription
imgsz640Image size as scalar or (h, w) list, i.e. (640, 480)
halfFalseFP16 quantization
dynamicFalseDynamic axes
simplifyFalseSimplify model
workspace4Workspace size (GB)
+ +例如,如果您想要将您的 PyTorch 模型转换为 FP16 量化的 TensorRT 模型,请执行以下命令: + +```sh +yolo export model=yolov8n.pt format=engine half=True device=0 +``` + +一旦模型成功导出,您可以在运行 4 项任务(检测、分类、分割、姿态估计)时,在 **yolo** 的 **predict** 命令中使用 **model=** 参数替换此模型。以下是如何执行此操作的示例: + +例如, 在目标检测中: + +```sh +yolo detect predict model=yolov8n.engine source='0' show=True +``` + +## 使用自己的AI模型 + +### 数据收集和标注 + +如果您有特定的 AI 应用,并希望使用适合您应用的自带 AI 模型,您可以收集自己的数据集,对它们进行标注,然后使用 YOLOv8 进行训练。 + +如果您不想自己收集数据,您也可以选择已经准备好的公共数据集。您可以下载许多公开可用的数据集,例如 [COCO dataset](https://cocodataset.org), [Pascal VOC dataset](http://host.robots.ox.ac.uk/pascal/VOC)等。[Roboflow Universe](https://universe.roboflow.com) 是一个十分好用的平台,它提供了广泛的数据集,拥有超过[90,000+ datasets with 66+ million images](https://blog.roboflow.com/computer-vision-datasets-and-apis) 个数据集和 66+ 百万图像,适用于构建计算机视觉模型。此外,您也可以简单地在 Google 上搜索开源数据集,并从可用的多种数据集中进行选择。 + +如果您有自己的数据集并希望对图像进行标注,我们建议您使用[Roboflow](https://roboflow.com)提供的标注工具。 请按照 [这里](https://wiki.seeedstudio.com/YOLOv5-Object-Detection-Jetson/#annotate-dataset-using-roboflow) 了解更多信息。您也可以遵循 [本指引](https://docs.roboflow.com/annotate/use-roboflow-annotate) 学习标注 + +### 训练 + +这里我们有三种训练模型的方法。 + +1. 第一种方法是使用 [Ultralytics HUB](https://ultralytics.com/hub)。您可以轻松地将 Roboflow 集成到 Ultralytics HUB 中,这样您所有的 Roboflow 项目都将随时可用于训练。这里它提供了一个 Google Colab 笔记本,以便您轻松开始训练过程,并且还可以实时查看训练进度。 + +2. 第二种方法是使用我们创建的 Google Colab 工作区来简化训练过程。在这里,我们使用 Roboflow API 从 Roboflow 项目下载数据集。 + +3. 第三种方法是使用本地 PC 进行训练过程。在这里,您需要确保您拥有足够强大的 GPU,并且还需要手动下载数据集。 + + + + + + +在这里,我们使用 Ultralytics HUB 加载 Roboflow 项目,然后在 Google Colab 上进行训练。 + +- **步骤 1.** 访问 [此网站](https://hub.ultralytics.com/signup) 并注册一个 Ultralytics 账户。 + +- **步骤 2.** 当您使用新创建的账户登录后,您将看到如下控制面板。 + +
+ +- **步骤 3.** 访问[此网站](https://app.roboflow.com/login) ,并注册一个 Roboflow 账户。 + +- **步骤 4.** 当您使用新创建的账户登录后,您将看到如下控制面板。 + +
+ +- **步骤 5.** 创建一个新的工作区,并根据我们为您准备的[维基指南](https://wiki.seeedstudio.com/YOLOv5-Object-Detection-Jetson/#annotate-dataset-using-roboflow),在工作区内创建一个新项目。您也可以[点击这里](https://blog.roboflow.com/getting-started-with-roboflow),从官方的 Roboflow 文档中了解更多信息。 + +- **步骤 6.** 一旦您在工作区内创建了几个项目,界面将如下所示: + +
+ +- **步骤 7.** 前往 **Settings** 并点击 **Roboflow API** + +
+ +- **步骤 8.** 点击 **copy** 按钮以复制 **Private API Key** + +
+ +- **步骤 9.** 返回到 Ultralytics HUB 的仪表板,点击 **集成(Integrations)**,将我们之前复制的 API 密钥粘贴到空列中,然后点击 **添加(Add)**。 + +
+ +- **步骤 10** 如果您看到您的工作空间名称被列出,这意味着集成已成功。 + +
+ +- **步骤 11** 转到 **数据集(Datasets)**页面,您将在这里看到您所有的 Roboflow 项目。 + +
+ +- **步骤 12** 点击一个项目以查看有关数据集的更多信息。在这里,我选择了一个能够检测健康和损坏苹果的数据集。 + +
+ +- **步骤 13** 点击 **Train Model** + +
+ +- **步骤 14** 选择**架构**,设置**模型名称(可选)**,然后点击**继续**。在这里,我们选择了YOLOv8s作为模型架构。 + +
+ +- **步骤 15** 在**高级选项**下,根据你的偏好配置设置,复制并粘贴Colab代码(这将在稍后粘贴到Colab工作区),然后点击打开**Google Colab**。 + +
+ +- **步骤 16** 如果你还没有登录你的Google账户,请登录。 + +
+ +- **步骤 17** 导航至 `Runtime > Change runtime type` + +
+ +- **步骤 18** 在**硬件加速器**下选择**GPU**,然后选择**GPU类型**中可用的最高选项,并点击**保存**。 + +
+ +- **步骤 19** 点击 **Connect** + +
+ +- **步骤 20** 点击**RAM, Disk**按钮来检查硬件资源的使用情况。 + +
+ +- **步骤 21** 点击**Play按钮**来运行第一个代码单元。 + +
+ +- **步骤 22** 将我们之前从Ultralytics HUB复制的代码单元粘贴在**开始**部分下面,并运行它以开始训练。 + +
+ +- **步骤 23** 现在,如果你返回到Ultralytics HUB,你会看到**已连接**的消息。点击**完成**。 + +
+ +- **步骤 24** 在这里,你将实时看到模型在Google Colab上训练时的**边框损失(Box Loss)、类别损失(Class Loss)和目标损失(Object Loss)**。 + +
+ +- **步骤 25** 训练完成后,你将在Google Colab上看到以下输出: + +
+ +- **步骤 26** 现在返回到Ultralytics HUB,转到**预览**标签页,上传一张测试图片来检查训练好的模型的表现如何。 + +
+ +- **步骤 27** 最后,转到**部署**标签页,并下载你选择格式的训练好的模型,以便使用YOLOv8进行推理。在这里,我们选择了PyTorch格式。 + +
+ +现在,你可以使用这个下载的模型来执行我们在本维基中之前解释过的任务。你只需要将模型文件替换为你自己的模型即可。 + +例如: +``` +yolo detect predict model= source='0' show=True +``` + +
+ + +在这里,我们使用Google Colaboratory环境在云端进行训练。此外,我们在Colab中使用Roboflow API轻松下载我们的数据集。 + +- **步骤 1.** 点击 [这里](https://colab.research.google.com/gist/lakshanthad/9fbe33058cb7cab49ac8fc345143d849/yolov5-training-for-jetson.ipynb) 打开一个已经准备好的Google Colab工作区并按照工作区中提到的步骤进行操作 + +
+ +在训练完成后,你将会看到如下的输出信息: + +
+ +- **步骤 2.** 在Google Colab的"文件"(File)标签页下,如果你导航到路径 `runs/train/exp/weights`,你会看到一个名为**best.pt**的文件。这个文件是训练过程中生成的最佳模型权重。你需要下载这个文件,然后将其复制到你的Jetson设备上,因为你稍后将在Jetson设备上使用这个模型进行推理。 + +
+ +现在,你可以使用这个下载的模型来执行我们在本维基之前解释过的任务。你只需要将模型文件替换为你自己的模型。 + +例如: +``` +yolo detect predict model= source='0' show=True +``` + +
+ + +在这里,你可以使用装有Linux操作系统的电脑进行训练。我们在这个维基中使用了Ubuntu 20.04操作系统的电脑。 + + +- **步骤 1.** 如果你的系统中没有安装pip,你可以按照以下步骤在Linux系统上安装它: + +```sh +sudo apt install python3-pip -y +``` + +- **步骤 2.** 安装Ultralytics及其依赖项。 + +```sh +pip install ultralytics +``` + +- **步骤 3.** 在Roboflow上,在您的项目中,转到**版本(Versions)**,选择**导出数据集(Export Dataset)**,选择**格式**为**YOLOv8**,选择**下载zip到电脑(download zip to computer)**,然后点击**继续(Continue)**。 + +
+ +- **步骤 4.** 解压下载的 zip 文件 + +- **步骤 5.** 执行以下命令以开始训练。在这里,你需要将**path_to_yaml**替换为解压后的zip文件中.yaml文件的位置。 + +```sh +yolo train data= model=yolov8s.pt epochs=100 imgsz=640 batch=-1 +``` + +:::注意 +这里图像尺寸被设置为640x640像素。我们使用批量大小(batch-size)为-1,这将自动确定最佳的批量大小。你也可以根据你的偏好更改训练周期(epoch)。在这里,你可以将预训练模型更改为任何检测(detect)、分割(segment)、分类(classify)、姿态(pose)模型。 +::: + +训练完成后,你会看到以下类型的输出: + +
+ +- **步骤 6.** 在目录 **runs/detect/train/weights** 下,你会看到一个名为 **best.pt** 的文件。这是训练过程中生成的最佳模型。你需要下载这个文件,并将其复制到你的Jetson设备上,因为稍后将使用这个模型在Jetson设备上进行推理。 + +
+ +现在,你可以使用这个下载的模型来执行我们在本维基之前解释过的任务。你只需要将模型文件替换为你自己的模型。 + +例如: +``` +yolo detect predict model= source='0' show=True +``` + +
+
+ + + +--- + +## 性能基准测试 + +### 准备 + +我们已经对所有由YOLOv8支持的计算机视觉任务进行了性能基准测试,这些任务在搭载NVIDIA Jetson Orin NX 16GB模块的reComputer J4012或reComputer Industrial J4012上运行。 + +在样本目录中包含了一个名为[trtexec](https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#trtexec)的命令行包装工具。trtexec是一个使用TensorRT而无需开发自己的应用程序的工具。trtexec工具有三个主要目的: + +- 在随机或用户提供的输入数据上对网络进行基准测试。 +- 从模型生成序列化引擎。 +- 从构建器生成序列化的时序缓存。 + +在这里,我们可以使用trtexec工具快速对不同参数的模型进行基准测试。但首先,你需要有一个ONNX模型,我们可以通过使用Ultralytics YOLOv8来生成这个ONNX模型。 + +- **步骤 1.** 构建 ONNX 模型: + +```sh +yolo mode=export model=yolov8s.pt format=onnx +``` + +- **步骤 2.** 使用trtexec构建引擎文件的步骤如下: + +```sh +cd /usr/src/tensorrt/bin +./trtexec --onnx= --saveEngine= +``` + +例如: + +```sh +./trtexec --onnx=/home/nvidia/yolov8s.onnx --saveEngine=/home/nvidia/yolov8s.engine +``` + +这样做将输出以下性能结果,同时会生成一个.engine文件。默认情况下,它会将ONNX转换为FP32精度下优化的TensorRT文件,你可以按照以下方式查看输出结果: + +
+ +如果您希望使用**FP16精度**,它比**FP32**提供更好的性能,您可以按照以下方式执行上述命令: + +```sh +./trtexec --onnx=/home/nvidia/yolov8s.onnx --fp16 --saveEngine=/home/nvidia/yolov8s.engine +``` + +如果您希望使用**INT8**精度,它比**FP16**带来更好的性能,您可以按照以下方式执行上面的命令: + +```sh +./trtexec --onnx=/home/nvidia/yolov8s.onnx --int8 --saveEngine=/home/nvidia/yolov8s.engine +``` + +### 结果 + +以下我们总结了在reComputer J4012和reComputer Industrial J4012上运行的所有四个计算机视觉任务的结果。 + +
+ +## 额外演示:使用YOLOv8进行运动检测和计数器。 + +我们已经构建了一个使用YOLOv8-Pose模型进行运动检测和计数的人体姿态估计演示应用程序。你可以访问[项目页面e](https://github.com/yuyoujiang/Exercise-Counter-with-YOLOv8-on-NVIDIA-Jetson)来了解更多关于这个演示的信息,并将其部署到你自己的Jetson设备上! + +
+ +## 手动为NVIDIA Jetson设备配置YOLOv8 + +如果之前提到的一键脚本存在一些错误,你可以按照下面的步骤逐个准备Jetson设备以使用YOLOv8。 + +### 安装 Ultralytics 包 + +- **步骤 1.** 访问Jetson设备的终端并安装及升级pip + +```sh +sudo apt update +sudo apt install -y python3-pip -y +pip3 install --upgrade pip +``` + +- **步骤 2.** 安装 Ultralytics 包 + +```sh +pip3 install ultralytics +``` + +- **步骤 3.** 更新 numpy 至最新版本 + +```sh +pip3 install numpy -U +``` + +- **步骤 4.** 重启设备 + +```sh +sudo reboot +``` + +### 卸载 Torch 和 Torchvision + +上述的Ultralytics安装过程会安装Torch(PyTorch)和Torchvision。然而,通过pip安装的这两个包与Jetson平台不兼容,因为Jetson平台基于**ARM aarch64**架构。因此,我们需要手动安装预构建的PyTorch pip wheel并从源代码编译/安装Torchvision。 + +```sh +pip3 uninstall torch torchvision +``` + +### 安装 PyTorch 和 Torchvision + +访问 [网页](https://forums.developer.nvidia.com/t/pytorch-for-jetson) 进入 PyTorch 和 Torchvision 链接. + +以下是JetPack 5.0及以上版本支持的一些版本。 + +**PyTorch v2.0.0** + +支持带有Python 3.8的JetPack 5.1 (L4T R35.2.1) / JetPack 5.1.1 (L4T R35.3.1) + +**file_name:** torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl +**URL:** https://nvidia.box.com/shared/static/i8pukc49h3lhak4kkn67tg9j4goqm0m7.whl + +**PyTorch v1.13.0** + +支持带有 Python 3.8的 JetPack 5.0 (L4T R34.1) / JetPack 5.0.2 (L4T R35.1) / JetPack 5.1 (L4T R35.2.1) / JetPack 5.1.1 (L4T R35.3.1) + +**file_name:** torch-1.13.0a0+d0d6b1f2.nv22.10-cp38-cp38-linux_aarch64.whl +**URL:** https://developer.download.nvidia.com/compute/redist/jp/v502/pytorch/torch-1.13.0a0+d0d6b1f2.nv22.10-cp38-cp38-linux_aarch64.whl + +- **步骤 1.** 根据你的JetPack版本,按照以下格式安装torch。 + +```sh +wget -O +pip3 install +``` + +例如,我们这里使用的是**JP5.1.1**版本,因此我们选择了**PyTorch v2.0.0**版本。 + +```sh +sudo apt-get install -y libopenblas-base libopenmpi-dev +wget https://nvidia.box.com/shared/static/i8pukc49h3lhak4kkn67tg9j4goqm0m7.whl -O torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl +pip3 install torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl +``` + +- **步骤 2.** 根据你已经安装的PyTorch版本来安装torchvision。例如,我们选择了PyTorch版本v2.0.0,这就意味着我们需要选择Torchvision版本v0.15.2。 + +```sh +sudo apt install -y libjpeg-dev zlib1g-dev +git clone https://github.com/pytorch/vision torchvision +cd torchvision +git checkout v0.15.2 +python3 setup.py install --user +``` + +这里是一个根据你安装的PyTorch版本需要安装的相应torchvision版本的列表: + +- PyTorch v2.0.0 - torchvision v0.15 +- PyTorch v1.13.0 - torchvision v0.14 + +如果你需要更多详细列表, 请访问 [此链接](https://github.com/pytorch/vision). + +### 安装 ONNX 和降低 Numpy版本 + +这只有在你想要将PyTorch模型转换为TensorRT时才需要。 + +- **步骤 1.** 安装ONNX,这是一个需求。 + +```sh +pip3 install onnx +``` + +- **步骤 2.** 降低Numpy版本以避免报错 + +```sh +pip3 install numpy==1.20.3 +``` + +## 来源 + +- [YOLOv8 documentation](https://docs.ultralytics.com) +- [Roboflow documentation](https://docs.roboflow.com) +- [TensorRT documentation](https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html) + +## 技术支持与项目讨论 + +非常感谢您选择我们的产品!我们提供不同的支持方式,以确保您在使用我们的产品时拥有尽可能流畅的体验。我们提供多种沟通渠道,以适应不同的偏好和需求。 + +
+ + +
+ +
+ + +
\ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8_custom_classification_model.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8_custom_classification_model.md new file mode 100644 index 000000000000..20ab1bce0712 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8_custom_classification_model.md @@ -0,0 +1,602 @@ +--- +description: 使用 YOLOv8 训练和部署自定义分类模型 +title: 使用 YOLOv8 训练和部署自定义分类模型 +keywords: + - yolov8 + - custom classification model + - classification model +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/train_and_deploy_a_custom_classification_model_with_yolov8 +last_update: + date: 06/11/2024 + author: Bruno +--- + + +# 使用 YOLOv8 训练和部署自定义分类模型 + +## 介绍 +本指南将解释如何使用 YOLOv8 训练和部署自定义分类模型。 + +## 概述 +我们将创建一个虚拟环境,安装 YOLOv8,在 roboflow 下载一个分类模型,进行训练并部署它。 + +### 图像分类 +图像分类是计算机视觉中最简单的任务之一,它涉及将图像分类为预定义的类别之一。输出是单个类别标签和置信度分数。 + +图像分类通常在我们不需要知道图像中对象的具体位置,只需要知道图像属于哪个类别时非常有用。例如,图像分类可以用于从图像库中检索图像,将图像根据其内容进行分类,还可以用于自动识别人脸、识别动物等。在这些场景中,我们并不需要知道图像中对象的精确位置,只需要知道它属于哪个类别即可。 + +## 材料需求 + +### 硬件设置 + +对于本教程,我们需要一台 Nvidia [Jetson Orin NX 16GB](https://www.seeedstudio.com/reComputer-J4012-p-5586.html). + +
+ +
+ + + +### 软件设置 + +- 在计算机上安装 JetPack 6.0 +- 一个 Roboflow 账户用于下载数据集。 + +## 准备 reComputer +Seeed Studio 的 reComputer J4012 是一台 Jetson Orin NX 16GB 计算机,拥有强大的性能。但 Tegra Linux 系统默认带有许多功能,并在图形模式下启动。让我们更改一下这种情况。 + +::: 注意 +我将使用VScode和启用X forwarding的SSH终端来运行示例和远程编程。 +X forwarding是SSH的一个选项,它可以在连接的我方而不是远程计算机上运行一些图形化应用程序。 +::: + +如果你将用显示器、键盘和鼠标连接到你的 reComputer,请跳过下一步。 + +### 更改启动模式 +
+ +
+系统默认启用了图形界面,但我们在这里实际上并不需要它的功能。而且,在空闲模式下,系统会占用大约 1.5GB 的内存资源。 + +
+ +
+ +我们将使它在启动时转到命令行界面。 +```bash +sudo systemctl set-default multi-user +``` +现在,我们的 reComputer 将在启动时自动启动 CLI 命令行界面。如果您愿意,您可以现在重新启动,或者我们可以使用一个命令进入 CLI 命令行界面。 +```bash +sudo systemctl isolate multi-user +``` +现在,我们已经将系统从占用 1.5GB 内存的 GUI 模式切换到只占用 700MB 内存的 CLI 模式。在机器学习中,每个内存字节都是重要的资源。 + +### 更改功率模式 +默认情况下,我们的 reComputer 应该运行在 2 级-15W 模式下。当训练或推理 ML 模型时,如果可以使用全功率运行,效果会更好。 + +让我们学习如何更改功率模式。 + +在文件 /etc/nvpmodel.conf 中,我们可以找到可用的功率模式。 +```bash +< POWER_MODEL ID=0 NAME=MAXN > +< POWER_MODEL ID=1 NAME=10W > +< POWER_MODEL ID=2 NAME=15W > +< POWER_MODEL ID=3 NAME=25W > +``` +接下来,我们可以使用 "sudo nvpmodel -m <#power model>" 命令更改的功率模式。同时,根据 [此帖子](https://forums.developer.nvidia.com/t/power-mode-in-terminal/287224)所述, 该设置会保留在重启后的系统中。若要查看当前所在的功率模式,请执行以下操作: + +```bash +sudo nvpmodel -q +``` +
+ +
+ +让我们为训练模型选择最大功率模式: +```bash +sudo nvpmodel -m 0 +``` +
+ +
+ +重新启动后,我们可以确认我们正在以最大功率运行: + +
+ +
+ +## 训练模型 +为了训练模型,我们将使用 YOLOv8 算法。以下是安装 CUDA 支持的 YOLOv8 的步骤。 +我们还需要一个 [roboflow](https://roboflow.com/) 账户。 + +### 模型 +我将创建一个用于识别鸟类的模型。 +这是我计划在花园中放置的一款智能鸟食器项目的一部分,我想知道哪些鸟类正在那里觅食。 + +因为这是一个分类任务,我们不需要知道照片中鸟的位置。 + +您可以使用其他您选择的数据集,只要它是分类数据集或模型。 + +我已经收集了我所在地区常见的12种鸟类,并在 Roboflow 中创建了一个[分类数据集] +(https://universe.roboflow.com/bruno-santos-omqsq/bird-classification-19z7c/dataset/1) in Roboflow. + +我要识别的鸟类包括: + +- 燕子 (Barn Swallow) +- 欧亚冕雀 (Common Firecrest) +- 田鸡 (Common Nightingale) +- 苍头燕雀 (Eurasian Chaffinch) +- 欧亚石画嘴 (Eurasian Crag Martin) +- 欧金翅雀 (European Goldfinch) +- 欧绿雀 (European Greenfinch) +- 欧文雀 (European Serin) +- 家麻雀 (House Sparrow) +- 西班牙麻雀 (Spanish Sparrow) +- 公燕 (Western House Martin) +- 白鹡鸰 (white Wagtail) + + +请选择您的数据集并从 roboflow 下载。选择数据集后,选择“下载数据集”。 - 您需要一个帐户才能执行此操作。 + + +
+ +
+ +接下来,进入数据集页面,选择 "Format"中的 "Folder Structure",并选择 "Show Download Code"。 + +
+ +
+ +接下来,如果您将使用 Jupyter Notebook,则选择 *Jupyter*,如果您计划在终端中执行此操作,则选择 *Terminal*。 + +我选择使用 Jupyter Notebook,复制代码以在 Jupyter Notebook 中使用。 +
+ +
+ +## 创建环境 +我们将创建一个虚拟环境,安装 PyTorch 和 YOLOv8。 +根据 [ YOLOv8 documentation ](https://docs.ultralytics.com/quickstart/#install-ultralytics)文档提示, 最好先安装 PyTorch,然后再安装 ultralytics。 + +此外,我将安装 jupyterlab 包与 VSCode 一起使用。操作笔记附在本教程中。 + +让我们先安装一些依赖项。 + +**注意:** 因为我们要使用 YOLOv8,所以需要做一些通常我们不需要做的步骤。 + +根据[NVIDIA deep learning documentation](https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html) 安装 Torch 即可获得支持 CUDA 的 Torch。 + +如果我们使用 PIP 正常安装 PyTorch,则不会获得 CUDA 支持。 +### 依赖项 + +```bash +sudo apt install libopenblas-dev cuda-toolkit libcudnn8 tensorrt python3-libnvinfer nvidia-l4t-dla-compiler +``` +创建 Python 虚拟环境 +```bash +python -m venv birdClassificationModel +``` +如果出现错误,可能是因为没有安装 python3-venv 包。让我们安装它并重复上面的命令。 + +```bash +sudo apt install python3-venv +``` +激活虚拟环境 + +```bash +source birdClassificationModel/bin/activate +``` + +可以通过提示前面出现虚拟环境的名称来确认虚拟环境是否已激活。 + +### YOLOv8 + +按照 [follow on the documentation tip](https://docs.ultralytics.com/quickstart/#conda-docker-image)文档提示,让我们先安装 PyTorch。 + +我使用的是JetPack 6.0版本,其中包含NVIDIA Jetson Linux 36.3和CUDA 12.2。 +运行以下命令先升级一下PIP。 + +```bash +pip install -U pip +``` + +为了以后能够使用 YOLOv8,我们需要安装 Torch。请您按照[NVIDIA论坛上的步骤]( https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048 )进行操作。 + +请确保在激活虚拟环境后进行安装,以便将其安装在其中。 +从 NVIDIA 下载 Torch 版本2.3 。 + +```bash +wget https://nvidia.box.com/shared/static/mp164asf3sceb570wvjsrezk1p4ftj8t.whl -O torch-2.3.0-cp310-cp310-linux_aarch64.whl +sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev +pip3 install 'Cython<3' +pip install numpy torch-2.3.0-cp310-cp310-linux_aarch64.whl +``` + +此后,让我们编译 torchvision。如果我们从 wheel 安装它,它将不具备 CUDA 支持。 + +请注意分支版本是为所安装的 Torch 版本而设计的。您可以在论坛页面上查看更多详细信息。 + +请记得,您需要激活虚拟环境,以便所有内容都可以在其中安装。 + +```bash +sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev libavcodec-dev libavformat-dev libswscale-dev +git clone --branch v0.18.0 https://github.com/pytorch/vision torchvision +cd torchvision/ +export BUILD_VERSION=0.18.0 +python setup.py install +``` +编译和安装过程可能需要一段时间。 +
+ +
+安装完成之后,让我们检查是否可用 CUDA: +
+ +
+ +从命令行进行检查: +```bash +python -c "import torch;print (torch.cuda.is_available())" +``` +这条命令应该返回 True。 + +#### 安装 YOLOv8 + +现在我们已经安装了支持 CUDA 的 PyTorch,当我们安装 YOLOv8 时,它将使用已安装的版本,而不是尝试安装一个没有 CUDA 支持的新包(尽管版本相同)。 + +```bash +pip install ultralytics +``` + +现在安装 roboflow 和 jupyterlab +```bash +pip install roboflow jupyterlab +``` + +现在,让我们下载数据集 +如果您使用的是笔记本,请在其中替换代码。 + +```python +rf = Roboflow(api_key="") +project = rf.workspace("bruno-santos-omqsq").project("bird-classification-19z7c") +version = project.version(1) +dataset = version.download("folder") +``` + +下载完成后,我们现在拥有一个由三个目录(test、train、valid)组成的数据集,每个目录中有一定数量的图像。每个类别的每张图像都在自己的目录中,不需要为这些图像打标签 +由于这是用于图像分类的任务,因此我们不需要对图像进行标注。 +YOLOv8 将从配置文件中和目录中获取图像的类别。 +
+ +
+ +### 训练 +通常数据集包含图像和标注,标注中包含对象的坐标和对应的类别。然而对于这个分类任务,我们不需要这些。只需要将每张图像放在以它所属类别命名的子目录中即可。 + +#### 准备配置文件 +我们仍然需要一个配置文件,以使 YOLOv8 能够识别每个类别。此文件应放置在数据集目录中,并使用 .yaml 扩展名。文件名并不重要。 + +```bash +cd +vi birdClassificationModel.yaml +``` +请将以下文本插入文件中: + +```bash +train: train/ +valid: valid/ +test: test/ + +# number of classes +nc: 12 + +# class names + +names: ["Barn Swallow","Common Firecrest","Common Nightingale","Eurasian Chaffinch","Eurasian Crag Martin","European Goldfinch","European Greenfinch","European Serin","House Sparrow","Spanish Sparrow","Western House Martin","white Wagtail"] +``` + +对于分类,我们将使用Ultralytics中已经可用的一个[预训练模型]。(https://docs.ultralytics.com/tasks/classify/). + +
+ +
+ +这些模型已经在ImageNet上进行了训练,并被微调用于分类。 +我们将使用它并在我们的数据上进行训练。 + +这就是所谓的[迁移学习](https://neptune.ai/blog/transfer-learning-guide-examples-for-images-and-text-in-keras). + +我将使用 [YOLOv8l-cls]模型(https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8l-cls.pt)。 可能其他模型也可以良好运行,但因为我们不需要实时性,这是速度和准确性之间的权衡的选择。 + +那么,让我们使用YOLOv8的CLI界面来训练模型。 + +```bash +yolo task=classify mode=train model=yolov8l-cls.pt data=Bird-Classification-1 epochs=100 +``` +- task=classify : We're going to classify images +- mode=train : We're training the model +- model=yolov8l-cls.pt : We're using a pre-trained model on classification +- data=Bird-Classification-1 : the directory where our dataset is located +- epochs=100 : for how long we're training the model. + +现在它正在运行,这里是使用jtop(tegra-stats)的一些统计数据。 + +
+ +
+
+ +
+
+ +
+ +经过几个小时的训练,训练已经完成了。 +
+ +
+ +现在,让我们看看模型的表现。我们来进行测试吧。 + +```bash +yolo task=classify mode=predict model='./runs/classify/train6/weights/best.pt' source=Bird-Classification-1/test/**/*.jpg +``` +这将使yolo进入测试目录并尝试对每个目标进行预测。 +
+ +
+
+ +
+
+ +
+
+ +
+ +结果都是正确的。现在让我们试着用两个它从未见过的图像来测试。 + +
+ +
+
+ +
+ +```bash +yolo task=classify mode=predict model='./runs/classify/train6/weights/best.pt' source=house_sparrow.jpg +``` +
+ +
+ +```bash +yolo task=classify mode=predict model='./runs/classify/train6/weights/best.pt' source=white_wagtail.jpg +``` +
+ +
+ +预测的结果都非常好 + +## 导出模型 +我们可以直接使用模型进行推理,只需打开并使用它即可。 +为了获得更快的推理时间,我们可以将其导出为TensorRT 因为我们使用的是NVIDIA Jetson Orin NX,甚至是ONNX。 + +虽然这个项目不需要更快的推理时间 – 我不会在实时视频上使用它,但是我们可以利用我们当前的平台的优势。 + +不幸的是,由于虚拟环境的原因,我无法将其导出到TensorRT。出现了某些问题,我无法在Python中导入tensorrt,但在虚拟环境之外,我使用tensorrt库没有任何问题。 + +### ONNX +我们可以将模型导出成ONNX格式: +```bash +yolo export model='./runs/classify/train6/weights/best.pt' format=onnx imgsz=640 +``` +我们得到了一个best.onnx文件,可以用它来运行推理。 + +要使用ONNX运行推理,我们需要安装onnxruntime_gpu wheel。 + +要在JetPack 6.0上安装onnxruntime-gpu,我们需要从[Jetson Zoo](https://elinux.org/Jetson_Zoo#ONNX_Runtime)上下载它。 + +我们将下载onnxruntime_gpu 1.18.0版本。 + +可根据我们Python版本(Python-3.10)下载适应的pip wheel文件。 + +```bash +wget https://nvidia.box.com/shared/static/48dtuob7meiw6ebgfsfqakc9vse62sg4.whl -O onnxruntime_gpu-1.18.0-cp310-cp310-linux_aarch64.whl +``` +随后进行安装: +```bash +pip install onnxruntime_gpu-1.18.0-cp310-cp310-linux_aarch64.whl +``` + + + +## 推理 +### 图片 +我使用了以下代码来使用best.pt模型运行推理,并查看结果: + +```python +# running inference +from ultralytics import YOLO +# load the model +bird_model = YOLO("./runs/classify/train6/weights/best.pt") +#run inference +results = bird_model("house_sparrow.jpg")[0] +# get class names +class_names = results.names +# get top class with more probability +top1 = results.probs.top1 +# print the class name with the highest probability +print (f" The detected bird is: {class_names[top1]}") +``` + +上述代码的功能是加载模型,对图像运行推理,并将结果保存到results变量中。 + +由于results是类型为列表的[ultralytics.engine.results.Results](http://ultralytics.engine.results.results/)对象,其中有一个成员项为Results对象。通过在results变量中使用[0],我们可以得到我们所需的结果。 + +```python +results = bird_model("house_sparrow.jpg")[0] +``` + +接下来,我们使用结果来获取类别名称。虽然我们已经知道类别名称,但这种方式可以使这段代码在其他模型中也能够工作。 + +```python +class_names = results.names +``` + +其中一个结果是top1变量,它保存具有最高概率的TOP 1类别。该TOP 1类别由probs列表给出。 + +```python +top1 = results.probs.top1 +``` + +接下来,我们打印最高概率类别,应该是这只鸟的物种名称。 + +```python +print (f" The detected bird is: {class_names[top1]}") +The detected bird is: House Sparrow +``` + +### 相机 +现在,让我们使用相机来运行推理。 + +Jetson可以使用USB相机或RPI相机。我将连接一个USB相机。 + +以下代码将检查是否能够显示相机视频。 +```python +#Lets test if we can use a USB camera +import cv2 +cap = cv2.VideoCapture(0) +while True: + ret, img = cap.read() + cv2.imshow('Camera', img) + if cv2.waitKey(1) & 0xFF == ord('q'): + break +cap.release() +cv2.destroyAllWindows +``` +图片是在我的台式计算机上相机画面的我。只需使用*ssh -X username@jetson_ip* 即可将X11窗口转发到您的桌面。相机成功运行,因为我正在使用Linux。所以我认为WSL也可以工作。 + +
+ +
+ +现在,让我们尝试在视频上运行推理,显示概率最高的类别。 + +这是代码: +```python +# again, save this code in a file a run it from the Jetson + +import cv2 +from ultralytics import YOLO +import time +#define confidence level +#only equal or above this level we say it's a class of bird +confidence = 0.95 +# time when processed last frame +prev_frame = 0 +# time processed current frame +cur_time = 0 +# load the model +bird_model = YOLO("./runs/classify/train6/weights/best.pt") +# cv2 font +font = cv2.FONT_HERSHEY_SIMPLEX +# open camera +cap = cv2.VideoCapture(0) +while True: + ret, img = cap.read() + # to display fps + cur_frame = time.time() + fps = 1 / (cur_frame - prev_frame) + prev_frame = cur_frame + fps = int(fps) + fps = str(fps) + cv2.putText (img, fps, (550,50), font, 1, (124,10,120), 2, cv2.LINE_AA) + + # inference current frame + results = bird_model(img, verbose=False)[0] + # get class names + class_names = results.names + # get top class with more probability + top1 = results.probs.top1 + top1conf = results.probs.top1conf.tolist() + # we will only show the class name if the confidence is higher than defined level + # print the class name with the highest probability + if (top1conf >= confidence): + bird_class = class_names[top1] + print (f" The detected bird is: {class_names[top1]}") + # color is in BGR + confid = round(top1conf,2) + img = cv2.putText(img, bird_class, (50,50), font, 0.9, (0, 0, 255), 2, cv2.LINE_AA) + img = cv2.putText(img, "Conf: " + str(confid), (50,80), font, 0.6, (255, 0, 255), 1, cv2.LINE_AA) + cv2.imshow('Camera', img) + else: + img = cv2.imshow('Camera', img) + if cv2.waitKey(1) & 0xFF == ord('q'): + break +cap.release() +cv2.destroyAllWindows +``` + + +这是一个视频,展示了在视频上进行推理的结果。 + + + + + + +### 参考文档 +- [https://github.com/hiyouga/LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory) +- [https://github.com/dusty-nv/jetson-containers]( +https://github.com/dusty-nv/jetson-containers/tree/cb6c847f88df221e705397a1ee98424c2e893243/packages/llm/text-generation-inference) +- [https://github.com/Seeed-Projects/jetson-examples](https://github.com/Seeed-Projects/jetson-examples/tree/main/reComputer/scripts/llama-factory) + +## 技术支持与产品讨论 + +感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们的产品时体验尽可能顺畅。 我们提供多种沟通渠道,以满足不同的偏好和需求。 + +
+ + +
+ +
+ + +
\ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Generative_AI_Intro.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Generative_AI_Intro.md new file mode 100644 index 000000000000..f4db4a95736a --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Generative_AI_Intro.md @@ -0,0 +1,368 @@ +--- +description: 本页面介绍了如何使用Nvidia Jetson平台在reComputer设备上部署生成式AI技术,包括文本生成、图像生成、音频生成、多模态生成和检索增强生成。详细介绍了每种技术的应用场景、技术特性和相关资源链接,为开发人员提供了全面的参考资料和技术支持信息。 +title: 生成式人工智能应用 +keywords: + - Edge + - reComputer + - Jetson +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/Generative_AI_Intro +last_update: + date: 08/06/2024 + author: 于剑锋 +--- + +
+ +
+ +**生成式人工智能**是一种人工智能技术,能够通过学习已有数据生成新的数据,如图片、文本或音频。**Nvidia Jetson**是由NVIDIA开发的边缘AI平台,具有高性能处理能力和低功耗设计,适用于各种嵌入式和物联网设备。它支持深度学习、计算机视觉和其它AI应用,提供强大的计算能力和丰富的开发工具。生成式AI与Jetson的结合能在边缘设备上高效地进行本地实时生成和推断。 + +## 文本生成 + +文本生成是一项使用深度学习和大型语言模型来生成自然语言文本的技术。这些模型在大量数据集上进行训练,使它们能够学习语言的词汇、语法和语义结构。它们可以产生流畅且连贯的文本,不仅限于回答问题或进行对话,还包括写文章、创作故事、生成代码和翻译语言等任务。这里,我们在Jetson上部署文本生成算法,创建我们自己的本地聊天机器人。 + +
+ + + + + + + + + + + + + + + + + + + + +
本地AI助手本地语音聊天机器人
+
+ +
+
+
+ +
+
在Jetson设备上设置本地知识库,使用ollama和AnythingLLM。使用Nvidia Riva和Meta Llama2构建本地运行的语音聊天机器人。
+
+ +## 图像生成 + +图像生成通过解释输入的文本描述,使模型能够生成与描述相匹配的高质量图像。这项技术在艺术创作、广告设计和游戏开发等领域具有广泛的应用,使得自动化生成符合用户需求的视觉内容成为可能。 + +
+ + + + + + + + + + + + + + + + +
在本地运行LLM文本到图像
+
+ +
+
在Jetson上部署图像生成模型并评估其推断性能。
+ +
+
+ +## 音频生成 + +音频生成可以使用神经网络产生高质量、逼真的音频,包括语音、音乐和音效。通过在广泛的数据集上训练,这些模型学会复制自然声音的模式和细微差别,使得语音合成、自动音乐创作和音效创建等应用成为可能。 + +
+ + + + + + + + + + + + + + + + + + + + +
Speech Subtitle GenerationDeploy Whisper on NVIDIA Jetson Orin
+
+ +
+
+
+ +
+
Speech Subtitle Generation on Jetson, which can offer real-time speech-to-subtitle services while avoiding information leakage on the internet. Deploying Whisper on the Jetson Orin to build robust, efficient STT applications.
+ +
+
+ +## Multimodal Generation + +Multimodal generation technology combines various forms of data, such as text, images, and sound, to create content that integrates multiple types of information. This technology uses deep learning models to process and fuse data from different modalities, resulting in more expressive and diverse content. For example, text-to-image models can generate corresponding images based on textual descriptions, while speech synthesis models can produce speech from text and simultaneously generate related images. Multimodal generation shows broad application prospects in virtual reality, augmented reality, and multimedia content creation. + +
+ + + + + + + + + + + + + + + + +
+ Run VLM on reComputer +
+
+ +
+
+ This wiki provides a tutorial on how to run VLM on reComputer J4012 Jetson Orin NX with Jetson Platform Services. +
+ +
+
+ +## Retrieval Augmented Generation + +RAG (Retrieval-Augmented Generation) is a technology that combines retrieval mechanisms with generation models. The RAG model not only uses a generative model to produce responses but also incorporates information retrieval techniques to enhance the accuracy and richness of the generated content by retrieving relevant information from large databases. This technology excels in applications such as question-answering systems, intelligent search, and content generation. By leveraging retrieved information, RAG models can generate more detailed and information-rich responses, thereby improving the quality and relevance of the generated content. + +
+ + + + + + + + + + + + + + + + + + + + +
+ Local AI Assistant + + Local RAG with LlamaIndex +
+
+ +
+
+
+ +
+
+ Set up a local knowledge base on Jetson devices with ollama and AnythingLLM. + + With this local RAG project, it can protect your data privacy and provide you with low-latency communication experience. +
+ + + +
+
+ +## Others + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Fine-tune LLM on Jetson + + Quantized LLM with MLC + + Zero-Shot Detection +
+
+ +
+
+
+ +
+
+
+ +
+
+ Deploy Llama-Factory on Nvidia Jetson and use Llama-Factory to train a large language model. + + Deploying the quantized Llama2-7B with MLC LLM on the Jetson Orin NX. + + The Zero Shot Detection AI service exposes REST API endpoints to control stream input and objects to detect. +
+ + + + + +
+ Format Output with Langchain +
+
+ +
+
+ Use Langchain to format the output of large language models and deploy it on edge computing devices. +
+ +
+
+ + +## Tech Support & Product Discussion + +Thank you for choosing our products! We are here to provide you with different support to ensure that your experience with our products is as smooth as possible. We offer several communication channels to cater to different preferences and needs. + +
+ + +
+ +
+ + +
+ + diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/How_to_Format_the_Output_of_LLM_Using_Langchain_on_Jetson.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/How_to_Format_the_Output_of_LLM_Using_Langchain_on_Jetson.md new file mode 100644 index 000000000000..23729cf52b3a --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/How_to_Format_the_Output_of_LLM_Using_Langchain_on_Jetson.md @@ -0,0 +1,184 @@ +--- +description: 使用Langchain格式化大型语言模型的输出 +title: 使用Langchain格式化大型语言模型的输出 +keywords: +- reComputer +- LLM +- Langchain +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/How_to_Format_the_Output_of_LLM_Using_Langchain_on_Jetson +last_update: + date: 4/1/2024 + author: Youjiang +--- + + +## 介绍 + +在现代家庭中,智能家居的趋势变得越来越普遍。 通过连接智能设备、自动化和人工智能技术,您可以将您的家转变为一个更智能、更便利的生活空间。 为此,我们计划将大型语言模型(LLM)集成到HomeAssistant中,以创建一个更智能的家庭助手。 实现这一目标的第一步是使LLM能够输出控制信号,以管理智能家居设备。 + +
+ +
+ + +在本篇资料中,您将学习如何使用Langchain格式化大型语言模型的输出,并将其部署在边缘计算设备上。 具体来说,利用大型语言模型强大的理解能力构建一个本地聊天机器人,然后利用Langchain工具修正大型模型的输出格式。 + +## 什么是LLM? +大型语言模型(LLM)是一种基于深度学习(如 GPT)的人工智能模型,擅长自然语言处理任务。它们能够理解和生成文本,因此被广泛应用于文本生成、翻译、问答系统等各种应用中。 + +## 为什么格式化大型语言模型(LLM)的输出是必要的? + +格式化大型语言模型(LLM)的输出对于使其更易于理解和适合特定应用非常重要。通常,大型语言模型生成的文本可能包含冗余信息、不必要的细节或格式不一致的内容。通过格式化输出,可以确保文本符合特定标准,删除不需要的部分,并确保文本符合应用要求。这一过程对于将 LLM 输出有效集成到各种系统和应用程序中至关重要,可确保生成的内容既相关又有用。 + +## 如何格式化LLM的输出? +在这里,我们可以使用一个非常方便用户使用的工具--Langchain。它是一个功能强大的框架,旨在帮助开发人员使用语言模型构建端到端应用程序。它提供了一系列工具、组件和接口,简化了创建由大型语言模型和聊天模型支持的应用程序的过程。 + +## 如何在边缘设备上部署? + +**步骤 1.** 您需要准备一个 Jetson 设备 ([reComputer J4012](https://www.seeedstudio.com/reComputer-J4012-p-5586.html?queryID=3d7dba9378be2accafeaff54420edb6a&objectID=5586&indexName=bazaar_retailer_products)) 并安装 Jetpack 5.0+ 操作系统. + +**步骤 2.** 打开终端并安装相应的依赖软件. + +```bash +pip3 install --no-cache-dir --verbose langchain[llm] openai +pip3 install --no-cache-dir --verbose gradio==3.38.0 +``` + +**步骤 3.** 创建一个新的 Python 脚本,命名为 `format_opt.py`,并将以下代码插入其中. + +
+ + format_opt.py + +```python +import copy + +import gradio as gr +from langchain.llms import LlamaCpp +from langchain.output_parsers import StructuredOutputParser, ResponseSchema +from langchain.prompts import PromptTemplate +from langchain.llms import OpenAI +import os +os.environ["OPENAI_API_KEY"] = "your openai api key" + + +class ChatBot: + def __init__(self, llama_model_path=None,history_length=3): + self.chat_history = [] + self.history_threshold = history_length + self.llm = None + if llama_model_path is not None: + self.llm = LlamaCpp( + model_path=llama_model_path, + temperature=0.75, + max_tokens=2000, + top_p=1 + ) + else: + self.llm = OpenAI(model_name="text-davinci-003") + + response_schemas = [ + ResponseSchema(name="user_input", description="This is the user's input"), + ResponseSchema(name="suggestion", type="string", description="your suggestion"), + ResponseSchema(name="control", description="This is your response"), + ResponseSchema(name="temperature", type="int", description="This is used to indicate the degrees " + "centigrade temperature of the air conditioner.") + ] + self.output_parser = StructuredOutputParser.from_response_schemas(response_schemas) + self.format_instructions = self.output_parser.get_format_instructions() + + self.template = """ + Now you are a smart speaker, and you need to determine whether to turn on the air conditioner based on the + user's input. + In the suggestion section, please reply normal conversation. + In the control section, if you need to turn on the air conditioner, please reply with <1>; if you need to + turn off the air conditioner, please reply with <0>. + + {format_instructions} + + Please do not generate any comments. + + % USER INPUT: + {user_input} + + YOUR RESPONSE: + """ + self.prompt = PromptTemplate( + input_variables=["user_input"], + partial_variables={"format_instructions": self.format_instructions}, + template=self.template + ) + + def format_chat_prompt(self, message): + prompt = "" + for turn in self.chat_history: + user_message, bot_message = turn + prompt = f"{prompt}\nUser: {user_message}\nAssistant: {bot_message}" + prompt = f"{prompt}\nUser: {message}\nAssistant:" + return prompt + + def respond(self, message): + prompt = self.prompt.format(user_input=message) + formatted_prompt = self.format_chat_prompt(prompt) + bot_message = self.llm(formatted_prompt) + # self.output_parser.parse(bot_message) + + if len(self.chat_history) >= self.history_threshold: + del self.chat_history[0] + self.chat_history.append((message, bot_message)) + return "", self.chat_history + + def run_webui(self): + with gr.Blocks() as demo: + gr.Markdown("# This is a demo for format output of LLM") + chatbot = gr.Chatbot(height=500) + msg = gr.Textbox(label="Prompt") + btn = gr.Button("Submit") + clear = gr.ClearButton(components=[msg, chatbot], value="Clear console") + + btn.click(self.respond, inputs=[msg], outputs=[msg, chatbot]) + msg.submit(self.respond, inputs=[msg], outputs=[msg, chatbot]) + + gr.close_all() + demo.launch() + + +if __name__ == '__main__': + chatbot_ins = ChatBot("/home/nvidia/Mirror/llama-2-7b-chat.Q4_0.gguf") + chatbot_ins.run_webui() + +``` + +
+ +**步骤 4.** 在终端输入 python3 `format_opt.py` 启动脚本,然后在浏览器中访问 `http://127.0.0.1:7861/` 访问 WebUI 并测试效果. + + +
+ +
+ + +## 下一步计划是什么? +- 与 Nvidia Riva 集成,以用语音交互替代文本输入. +- 连接到 Home Assistant,以使用 LLM 的输出控制智能家居设备. + + + + +## 技术支持与产品讨论 + +感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您与我们产品的体验尽可能顺利。 我们提供多种沟通渠道,以满足不同的偏好和需求。 + +
+ + +
+ +
+ + +
diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/How_to_run_local_llm_text_to_image_on_reComputer.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/How_to_run_local_llm_text_to_image_on_reComputer.md new file mode 100644 index 000000000000..adbb8d845b2b --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/How_to_run_local_llm_text_to_image_on_reComputer.md @@ -0,0 +1,682 @@ +--- +description: 如何在reComputer上运行本地LLM文本到图像模型 +title: 如何在reComputer上运行本地LLM文本到图像模型 +keywords: +- Contributor +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/How_to_run_local_llm_text_to_image_on_reComputer +last_update: + date: 04/01/2024 + author: Bruno +--- + + +# 如何在reComputer上运行本地LLM文本到图像模型 + +## 介绍 +文本到图像模型是一种根据文本描述生成图像的人工智能(AI)模型。这些模型接受文本输入,如描述场景的句子或段落,并根据描述生成图像。 + +这些模型在包含成对文本描述和相应图像的大型数据集上进行训练,学习理解文本信息和视觉信息之间的关系。 + +近年来,文本到图像模型取得了重大进展,但生成与文本描述精确匹配的高质量、多样化图像仍是人工智能研究中的一项挑战性任务。 + +## 故障排除 + +在本教程中,我们将探讨部署和运行本地 LLM 文本到图像的几种方法: +1. 创建虚拟环境(包括 TensorFlow 和 PyTorch) +- 1.1. 使用 Keras Stable Diffusion 创建一个示例 +- 1.2. 使用 Hugging Face 提供的模型之一创建一个示例 +- 1.3. 创建一个小型 Python API,通过调用 Keras 和 Hugging Face 的 API 来生成图像。 +3. 使用 Nvidia 容器。 + +### 疑难解答 +在开始之前,我们可以采取以下步骤来增加可用内存. + +1. 禁用桌面图形用户界面。我们可以通过 SSH 使用 Jetson。这样可以节省约 800MB 内存. + +2. 禁用 ZRAM 并使用 Swap. + +你可以在[英伟达 Jetson 人工智能实验室](https://www.jetson-ai-lab.com/tips_ram-optimization.html) 中找到这些提示以及如何实现它们。 + +## 要求 + +在本教程中, 我们需要一个Nvidia [Jetson Orin NX 16GB](https://www.seeedstudio.com/reComputer-J4012-p-5586.html). + +
+ +
+ + + +我们还需要确保安装了 **TensorFlow**和 **PyTorch**,不过我会在这里挨个说明. + +### 步骤1 - 创建虚拟环境 + +Keras可以使用TensorFlow或PyTorch作为后端。 Hugging Face主要使用PyTorch. + +让我们安装TensorFlow和PyTorch. + +关于如何为Jetson Orin NX安装TensorFlow和PyTorch的说明在[Nvidia 网站](https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html). + +我们可以全局安装 TensorFlow 和 PyTorch,或者在虚拟环境中安装。我们将使用虚拟环境。 + +通过使用虚拟环境,我们不会面临项目或软件包版本混合的风险. + +这是最好的方法,尽管 Nvidia 网站更倾向于使用全局方法. + +##### TensorFlow + +创建虚拟环境(我使用 kerasStableEnvironment 作为名称,因为我将在 keras 示例中使用它。如果你愿意,也可以使用其他名称) +```bash +sudo apt install python3.8-venv +python -m venv kerasStableEnvironment +``` +创建后,激活虚拟环境 +```bash +source kerasStableEnvironment/bin/activate +``` +当环境激活时,你会在提示符前看到它的名称 +
+ +进入虚拟环境 +```bash +cd kerasStableEnvironment +``` +升级 PIP 并安装一些依赖项 +```bash +pip install -U pip +pip install -U numpy grpcio absl-py py-cpuinfo psutil portpicker six mock requests gast h5py astor termcolor protobuf keras-applications keras-preprocessing wrapt google-pasta setuptools testresources +``` +为 Jetpack 5.1.1 安装 TensorFlow + +要查找我们拥有的 JetPack 版本,请发出以下命令: +```bash +dpkg -l | grep -i jetpack +``` +结果应显示 jetpack 版本: +
+ +
+ +```bash +pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v511 tensorflow==2.12.0+nv23.05 +``` +如果你有其他 JetPack 版本,请检查 [Nvidia官网](https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html)使用正确的 URL。. + +现在,让我们检查 TensorFlow 的安装 +```bash +python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))" +``` +这应该返回以下行: +```bash +[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')] +``` + +##### PyTorch + +让我们安装一些依赖项 +```bash +sudo apt install libopenblas-dev +``` +现在,为JetPack 5.1.1安装PyTorch +```bash +pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v511/pytorch/torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl +``` +检查安装以及CUDA是否可用 +```bash +python -c "import torch; print(torch.cuda.is_available())" +``` +它应该返回 **真** + +现在我们已经安装了TensorFlow和PyTorch,让我们安装Keras并创建一个图像 + +#### 1.1 Keras + +安装后 **PyTorch** 和 **Tensorflow**,我们现在准备开始从文本提示创建图像。 + +确保你仍然在虚拟环境中. + +[KerasCV](https://keras.io/keras_cv/) 有一个实现(以及其他几个) [Stability.ai](https://stability.ai/) 文本到图像模型, [稳定扩散](https://github.com/CompVis/stable-diffusion). + +[通过使用 KerasCV 实现](https://keras.io/guides/keras_cv/generate_images_with_stable_diffusion/), 我们可以利用一些性能优势,比如XLA编译和混合精度支持。 + +[你可以在Keras网站上阅读更多信息](https://keras.io/guides/keras_cv/generate_images_with_stable_diffusion/) + +安装keras及其依赖项。 我们选择这个版本是因为它们与我们已安装的TensorFlow(或PyTorch)版本兼容. + +```bash +pip install keras-cv==0.5.1 +pip install keras==2.12.0 +pip install Pillow +``` +打开你喜欢的编辑器,输入以下示例 + +```bash +vi generate_image.py +``` +```python +import keras_cv +import keras +from PIL import Image + +keras.mixed_precision.set_global_policy("mixed_float16") + +model = keras_cv.models.StableDiffusion ( + img_width=512, # we can choose another size, but has to be a mutiple of 128 + img_height=512, # the same above + jit_compile=True +) + +prompt = "a cute magical flying dog, fantasy art, golden color, high quality, highly detailed, elegant, sharp focus, concept art, character concepts, digital painting, mystery, adventure" + +image = model.text_to_image (prompt, + num_steps = 25, #image quality + batch_size = 1 # how many images to generate at once +) + +Image.fromarray(image[0]).save("keras_generate_image.png") +``` +在运行脚本时,这里有一些统计信息 +
+ +
+ +过了一段时间后,这里是结果 +
+ +
+ +### 步骤 1.2 - Hugging Face +[Hugging Face](https://huggingface.co/) 就像是机器学习的 Github。它允许开发人员构建、部署、共享和训练他们的 ML 模型 + +Hugging Face 还因其 Transformers Python 库而闻名,该库可简化下载和训练 ML 模型的过程。 + +让我们使用一些可用的模型。 +前往Hugging Face并选择查看模型。 + +在左侧,你有过滤器,可以选择我们想要查看的模型类型。 +
+ +
+有很多可用的模型,但我们只讨论文本如何生成图像模型。 + +#### 虚拟环境 +创建一个虚拟环境,就像我们上面所做的那样,这样我们就可以使用Hugging Face,而不会混淆包版本或安装不需要的包. + +```bash +python -m venv huggingfaceTesting +source huggingfaceTesting/bin/activate +``` +创建虚拟环境后,让我们进入它. +使用上面的说明安装PyTorch. + +```bash +cd huggingfaceTesting +``` +#### 模组 +Hugging Face 有很多 [文本到图像模型](https://huggingface.co/models?pipeline_tag=text-to-image&sort=trending). 虽然理论上它们应该与我们的 Jetson 一起工作,但并没有. + +**stable-diffusion-v1-5** + +我将测试Runaway的[stable-diffusion-v1-5版本](https://huggingface.co/runwayml/stable-diffusion-v1-5). + +在模型卡上,他们有使用模型所需的所有信息 . +
+ +
+ +我们将使用 Hugging Face 扩散器库。 +在虚拟环境中(激活后)安装依赖项。 +```bash +pip install diffusers transformers accelerate +``` +现在我们已经安装了所有依赖项,让我们来试试模型。 +使用您喜欢的编辑器,复制以下代码(也可在模型卡页面中找到): +```python +from diffusers import StableDiffusionPipeline +import torch + +model_id = "runwayml/stable-diffusion-v1-5" +pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16) +pipe = pipe.to("cuda") + +prompt = "a master jedi cat in star wars holding a lightsaber, wearing a jedi cloak hood, dramatic, cinematic lighting" +image = pipe(prompt).images[0] + +image.save("cat_jedi.png") + +``` +让我们试试这个模型. +```bash +python stableDiffusion.py +``` +**提示:** 这将占用大量空间。正在下载模型的检查点。只能下载一次。 + +
+ +
+过了一段时间,结果是这样的 +
+ +
+ +**SDXL-Turbo** + +Here's another model we can try. [SDXL Turbo from Stability AI.](https://huggingface.co/stabilityai/sdxl-turbo) +Copy the following code +```python +from diffusers import AutoPipelineForText2Image +import torch + +pipe = AutoPipelineForText2Image.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float16, variant="fp16") +pipe.to("cuda") + +prompt = "full body, cat dressed as a Viking, with weapon in his paws, battle coloring, glow hyper-detail, hyper-realism, cinematic" + +image = pipe(prompt=prompt, num_inference_steps=1, guidance_scale=0.0).images[0] +image.save("sdxl-turbo.png") +``` +[This prompt was taken from a Medium article written by Daria Wind](https://medium.com/phygital/top-40-useful-prompts-for-stable-diffusion-xl-008c03dd0557) + +This one is really fast generating an image. Takes almost 30s, from running the script until it exits. +Here's the result +
+ +
+ +We can also try other models, like models trained specifically for anime or cyberpunk. + +There will be some models that will not work. It can be because of several factors - memory, available CPUs or even Swap memory. + +### Step 1.3 - Create a small API +Let's now crete a small API with Flask to use to generate an image given a prompt and return it to the caller. + +Imagine that you have the Jetson running and want to be able to generate an image by calling a API - your personal LLM image-to-text. + +There are already projects that do this (like the one we're going to see later), but nothing beats doing it yourself. + +Let's create a new Virtual Environment +```bash +python -m venv imageAPIGenerator +``` +Activate the environment and enter it +```bash +source imageAPIGenerator/bin/activate +cd imageAPIGenerator +``` +We're going go use Flask for this. [FlasK](https://flask.palletsprojects.com/en/3.0.x/) is web application framework written in Python. It's small enough for our purpose. + +Install Flask. +```bash +pip install Flask +``` +After installing it, let's install all the other dependencies that we need. Just for demonstration purposes, we're going to use Keras, because it has the least dependencies. + +Install TensorFlow. Follow the instructions above. +Next, install Keras. +```bash +pip install keras-cv==0.5.1 +pip install keras==2.12.0 +pip install Pillow +``` +Now, let's start to write our application. + +```bash +vi app.py +``` +For those who don't know what Flask is or does, let's try a small example. + +```python +from flask import Flask + +app = Flask (__name__) + + +@app.route("/generate_image") +def generate_image_api(): + return "

Hello World !

" + + +if __name__ == "__main__": + app.run(host='',port=8080) +``` +To run, execute the python script: +```bash +python app.py +``` +You should see the following: +
+ +
+ +Now, open a browser and try to access your Jetson device with the 8080 port. +
+ + +
+ +What we did was importing the Flask class +```python +import Flask +``` +We next created an instance of the Flask class +```python +app = Flask(__name__) +``` +We next create a route decorator to tell Flask what URL will trigger our function + ```python +@app.route("/generate_image") +``` +When using generate_image in the URL, we will trigger our function +```python +def generate_image_api(): + return "

Hello World !

" +``` +We can also use curl to access our API +```bash +curl http://192.168.2.230:8080/generate_image +``` +
+ +
+Now that we know how to create a API, let's dive into it and write it. + +```bash +vi app.py +``` +And paste the code +```python +from flask import Flask, request, send_file +import random, string +import keras_cv +import keras +from PIL import Image + +#define APP +app = Flask (__name__) + + +#option for keras +keras.mixed_precision.set_global_policy("mixed_float16") + +# generate custom filename +def generate_random_string(size): + """Generate a random string of specified size.""" + return ''.join(random.choices(string.ascii_letters + string.digits, k=size)) + + +""" + This is the function that will generate the image + and save it using a random created filename +""" +def generate_image(prompt): + + model = keras_cv.models.StableDiffusion ( + img_width=512, # we can choose another size, but has to be a mutiple of 128 + img_height=512, # the same above + jit_compile=True + ) + + image = model.text_to_image (prompt, + num_steps = 25, + batch_size = 1 + ) + + # image filename + filename = generate_random_string(10) + ".png" + Image.fromarray(image[0]).save(filename) + return filename # return filename to send it to client + + +#define routes +# Use this to get the prompt. we're going to receive it using GET +@app.route("/generate_image", methods=["GET"]) +def generate_image_api(): + # get the prompt + prompt = request.args.get("prompt") + if not prompt: + # let's define a default prompt + prompt = "A cinematic shot of a baby racoon wearing an intricate italian priest robe." + + image_name = generate_image(prompt) + return send_file(image_name, mimetype='image/png') + + +if __name__ == "__main__": + app.run(host='0.0.0.0',port=8080) +``` +**REMEMBER:** This is not code ready for the Internet. We don't have any security measures whatsoever. + +Let's run it. + +In a browser, type in the URL *http://jetsonIP:8080/generate_image* and wait. + +If we don't give it a prompt, it will use the default one we've set. + +In the CLI, you can see the image being generated +
+ +
+ +And in the browser, after a while, we can see the image +
+ +
+ +We can also see the image has been sent +
+ +
+ +We can also use curl to get the image and save it. +
+ +
+ +If we want to give it a prompt (as we should), the URL will look like +*http://jetsonIP:8080/generate_image?prompt=* + +We can expand this example to build a better page, like having some text boxes for user input, a nice background, etc. But this is for another project. + +### Step 2 - Nvidia LLM +#### Stable Diffusion v1.5 +We can use the [Jetson Containers](https://github.com/dusty-nv/jetson-containers) project to run [stable-diffusion-webui using AUTOMATIC1111](https://github.com/AUTOMATIC1111/stable-diffusion-webui). +Jetson Containers project is run by [Dusty Franklin](https://github.com/dusty-nv), a NVIDIA employee. + +NVIDIA has the [NVIDIA Jetson Generative AI Lab](https://www.jetson-ai-lab.com/tutorial-intro.html) project that has a lot of tutorials on Machine Learning. + +We're going to use [Stable Diffusion tutorial](https://www.jetson-ai-lab.com/tutorial_stable-diffusion.html) for this. + +Let's clone the github repository, enter the repository and install dependencies +```bash +git clone https://github.com/dusty-nv/jetson-containers +cd jetson-containers/ +sudo apt update; sudo apt install -y python3-pip +pip3 install -r requirements.txt +``` + +Now that we have everything we need, let's run the container with the *stable-diffusion-webui autotag* + +```bash +./run.sh $(./autotag stable-diffusion-webui) +``` +It will start to run the container. + +After a while, it will say that there's a compatible container and if we want to proceed. +```bash +Found compatible container dustynv/stable-diffusion-webui:r35.3.1 (2024-02-02, 7.3GB) - would you like to pull it? [Y/n] +``` +It will start downloading the container. +
+ +
+ +After finishing, it will download the model and run the server on port 7860. + +Here for me it didn't work at first. No checkpoint would appear to choose from, no matter how many times I would press the refresh +button. +
+ +
+ +I found out that I had 100% space occupied. +```bash +feiticeir0@JetsonOrin:~$ df -h +Filesystem Size Used Avail Use% Mounted on +/dev/nvme0n1p1 79G 79G 0 100% / +none 7,4G 0 7,4G 0% /dev +tmpfs 7,6G 0 7,6G 0% /dev/shm +tmpfs 1,6G 19M 1,5G 2% /run +tmpfs 5,0M 4,0K 5,0M 1% /run/lock +tmpfs 7,6G 0 7,6G 0% /sys/fs/cgroup +/dev/loop0 162M 162M 0 100% /snap/chromium/2797 +/dev/loop2 128K 128K 0 100% /snap/bare/5 +/dev/loop1 70M 70M 0 100% /snap/core22/1125 +/dev/loop3 65M 65M 0 100% /snap/cups/1025 +/dev/loop4 92M 92M 0 100% /snap/gtk-common-themes/1535 +/dev/loop6 162M 162M 0 100% /snap/chromium/2807 +/dev/loop5 483M 483M 0 100% /snap/gnome-42-2204/174 +/dev/loop7 35M 35M 0 100% /snap/snapd/21185 +tmpfs 1,6G 4,0K 1,6G 1% /run/user/1000 +``` +I've been testing other models and they occupied all the space. +If this happens to you, just go to your home directory, to the hidden cache directory and delete the huggingface directory. +```bash +cd ~/.cache +rm -rf huggingface +``` +Now you should have space available. Or just get a new drive, with more space. :) + +Now the model is being downloaded. +
+ +
+And we have a checkpoint +
+ +
+ +Open your browser and head to your Jetson IP address and port to run the AUTOMATIC1111's Stable Diffusion webgui + +*http://JetsonIPAddress:7860* +
+ +
+ +Now we can play with it. +Here's some images created with the default model. +
+ +
+
+ +
+ +#### Stable Diffusion XL +AUTOMATIC1111 supports other models. Let's try with Stable Diffusion XL. It has 6.6 billion parameters. + +To add another model, and to be easier to download it, let's define some variables, change permissions and download the models. +This is an example from [NVIDIA's Tutorial](https://www.jetson-ai-lab.com/tutorial_stable-diffusion-xl.html). + +```bash +CONTAINERS_DIR= +MODEL_DIR=$CONTAINERS_DIR/data/models/stable-diffusion/models/Stable-diffusion/ +sudo chown -R $USER $MODEL_DIR +``` +Now, download the model +```bash +wget -P $MODEL_DIR https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors +wget -P $MODEL_DIR https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors +``` +With the models downloaded, let's refresh the checkpoints drop-down if you have the container running, or launch the container again. + +Now we have two more models available to us. +
+ +
+ +This is an example generated with the XL model, with the following prompt: +>A Portrait, fashionable model wearing futuristic clothing, in a cyberpunk roof-top environment, with a neon-lit city background, backlit by vibrant city glow, fashion photography + + +
+ +
+Try it. Remember that, it may not work with some options selected. + +#### Adding other models +We can also add a lot of more models. Besides Hugging Face, [Civitai](https://civitai.com/) is another hub with more models to choose from. Civitai has some NSFW models, so consider yourself warned. + +Select the one you want, download the checkpoints and place them in the models directory +```bash +/home///data/models/stable-diffusion/models/Stable-diffusion/ +``` +I'm going to download and try a model named [DreamShaper XL](https://civitai.com/models/112902/dreamshaper-xl). +
+ +
+ +Remember that some models may not work. + +You need to play with the settings and read the model card to know what settings may work best (if at all). + +For example, this model card says that the sampling steps should be 4-8, sampling method should be DPM++ SDE Karras, etc... + +Download the model checkpoint and add it to the above directory. + +After refreshing , you should have the model ready to select. +When selecting, AUTOMATIC1111 will optimize the model. + +If it gets getting killed or an error appears, get more space. It was happening to me and after getting more space, everything worked out. + +Using the following prompt +>holding a staff, orbstaff , ,(by Gabriel Isak and Adam Elsheimer:1.20), (by Jon Whitcomb and Bayard Wu and Malcolm Liepke0.80),8k , professional fashion shot + +[from this image](https://civitai.com/images/8570722), +without the negative prompt, I got the following result + +
+ +
+ +with these settings: +
+ +
+ +Remeber the prompt above for the cyberpunk girl using the *Stable Diffusion XL* model? + +Here's a new image, with the same prompt, generated with *DreamShaper XL* with the same settings above +
+ +
+ +As you can see, wonderful images can be created, granting that you know the parameters to tune. :) + +I've learned that bigger images tend to produce better results. + +Hope you've learn how to generate images using the Nvidia Jetson NX 16GB and how to use it as a server to generate images on demand. + + +## ✨ Contributor Project + +- This project is supported by the Seeed Studio [Contributor Project](https://github.com/orgs/Seeed-Studio/projects/6/views/1?pane=issue&itemId=56418890). +- Thanks [Bruno's efforts](https://github.com/Seeed-Studio/wiki-documents/issues/1029) and your work will be [exhibited](https://wiki.seeedstudio.com/Honorary-Contributors/). + +## Tech Support & Product Discussion + +Thank you for choosing our products! We are here to provide you with different support to ensure that your experience with our products is as smooth as possible. We offer several communication channels to cater to different preferences and needs. + +
+ + +
+ +
+ + +
\ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Local_RAG_based_on_Jetson_with_LlamaIndex.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Local_RAG_based_on_Jetson_with_LlamaIndex.md new file mode 100644 index 000000000000..957d07523793 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Local_RAG_based_on_Jetson_with_LlamaIndex.md @@ -0,0 +1,107 @@ +--- +description: 基于Jetson和LlamaIndex的本地RAG +title: 基于Jetson和LlamaIndex的本地RAG +keywords: + - Edge + - reComputer + - Jetson + - LlamaIndex + - RAG +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/Local_RAG_based_on_Jetson_with_LlamaIndex +last_update: + date: 05/15/2024 + author: Jiahao + +no_comments: false # for Disqus + +--- + +# 基于Jetson和LlamaIndex的本地RAG + +## 前言 + +如今,越来越多的人开始使用大型语言模型来解决日常问题。 然而,大型语言模型在回答某些问题时可能会出现幻觉,并向用户提供不正确的信息。尽管如此, [RAG技术](https://www.seeedstudio.com/blog/2024/04/25/build-a-local-rag-chatbot-on-jetson-orin-for-your-knowledge-base/) 可以通过向大型语言模型提供相关数据来减少幻觉的发生。 因此,使用RAG技术来减少大型语言模型中幻觉的生成已成为一种趋势。 + +

pir

+ +在这里,我们向您介绍 [基于Jetson的RAG](https://github.com/Seeed-Projects/RAG_based_on_Jetson), 它使用[LlamaIndex](https://www.llamaindex.ai) 作为RAG框架, [ChromaDB](https://github.com/chroma-core/chroma) 作为向量数据库,以及量化的Llama2-7b模型 [LLM MLC](https://llm.mlc.ai/) 作为问答模型。 通过这个本地RAG项目,它可以保护您的数据隐私,并为您提供低延迟的通信体验 + + +## 硬件组件 + +
+ + + + + + + + + + +
reComputer (based on Jetson with RAM >= 16GB) +
+
+ +## 准备运行环境 +### Step 1: 安装 MLC Jetson Container + +```shell +# Install jetson-container and its requirements +git clone --depth=1 https://github.com/dusty-nv/jetson-containers +cd jetson-containers +pip install -r requirements.txt +``` +### 步骤 2:安装项目 + +```shell +# Install RAG project +cd data +git clone https://github.com/Seeed-Projects/RAG_based_on_Jetson.git +``` + +### 步骤 3:安装由 MLC LLM 量化的 Llama2-7b 模型 +```shell +# Install LLM model +sudo apt-get install git-lfs +cd RAG_based_on_Jetson +git clone https://huggingface.co/JiahaoLi/llama2-7b-MLC-q4f16-jetson-containers +``` +### 步骤 4:运行 Docker 并安装依赖 + +```shell +cd ../../ +./run.sh $(./autotag mlc) + # Here you will enter the Docker, and the commands below will run inside the Docker +cd data/RAG_based_on_Jetson/ +pip install -r requirements.txt +pip install chromadb==0.3.29 +``` + +运行后 `pip install chromadb==0.3.29` 你将看到如下所示的界面。 + + +

pir

+ +:::提示 +可以忽略报错. +::: + +## 让我们运行它 +```shell +# Run in the docker +python3 RAG.py +``` +
+ +
+ +##项目拓展 + +在这个项目中,TXT 和 PDF 文档被解析为向量数据库,并使用 RAG 技术来减少模型对特定问题的幻觉。 未来,我们将使用多模态模型来支持图像和视频的检索. \ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Quantized_Llama2_7B_with_MLC_LLM_on_Jetson.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Quantized_Llama2_7B_with_MLC_LLM_on_Jetson.md new file mode 100644 index 000000000000..106ffa43bf87 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Quantized_Llama2_7B_with_MLC_LLM_on_Jetson.md @@ -0,0 +1,118 @@ +--- +description: 量化的Llama2-7B与MLC LLM在Jetson上的应用 +title: 量化的Llama2-7B与MLC LLM在Jetson上的应用 +keywords: + - Edge + - reComputer + - Jetson + - Llama2 + - MLC LLM +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/Quantized_Llama2_7B_with_MLC_LLM_on_Jetson +last_update: + date: 04/1/2024 + author: Jiahao + +no_comments: false # for Disqus + +--- + +# 量化的Llama2-7B与MLC LLM在Jetson上的应用 + +## 前言 + +I近年来,像GPT-3这样的巨大语言模型彻底改变了自然语言处理任务。 然而,这些模型大多是在大规模数据集上训练的,这需要强大的计算资源,并不适合在边缘设备上部署。 为了解决这个问题,研究人员开发了量化技术,将大型模型压缩为更小的模型,而不牺牲性能。 + +在本项目中,我们介绍了一个量化版本的[Llama2-7B](https://huggingface.co/meta-llama/Llama-2-7b-hf),这是一个在1.5TB数据上训练的大型语言模型,并将其部署在Jetson Orin上。我们还利用了 [机器学习编译器大型语言模型](https://llm.mlc.ai)(MLC LLM) 来加速模型的推理速度. 通过在 [Jetson Orin NX](https://www.seeedstudio.com/reComputer-J4012-p-5586.html) 上部署带有 MLC LLM 的量化 Llama2-7B,开发人员可以构建强大的自然语言处理应用,在边缘设备上实现高准确性和低延迟。 + +
+ +## 硬件组件 +
+ + + + + + + + + + +
reComputer(或基于 Jetson 的其他设备)
+
+ +## 安装必要项: + +```shell +sudo apt-get update && sudo apt-get install git python3-pip +``` +```shell +git clone --depth=1 https://github.com/dusty-nv/jetson-containers +``` +```shell +cd jetson-containers pip3 install -r requirements.txt +``` +```shell +cd ./data && git clone https://github.com/LJ-Hao/MLC-LLM-on-Jetson-Nano.git && cd .. +``` +## 安装并运行 contiainer + +### f第一步:安装镜像 + +```shell +./run.sh --env HUGGINGFACE_TOKEN= $(./autotag mlc) /bin/bash -c 'ln -s $(huggingface-downloader meta-llama/Llama-2-7b-chat-hf) /data/models/mlc/dist/models/Llama-2-7b-chat-hf' +``` +使用 `sudo docker images` 检查镜像是否已安装 + +

pir

+ +### 第二步:安装Llama2-7b-chat-hf并使用MLC量化模型 +```shell +./run.sh $(./autotag mlc) \ +python3 -m mlc_llm.build \ +--model Llama-2-7b-chat-hf \ +--quantization q4f16_ft \ +--artifact-path /data/models/mlc/dist \ +--max-seq-len 4096 \ +--target cuda \ +--use-cuda-graph \ +--use-flash-attn-mqa +``` + +### 第三步:运行并进入docker +```shell +./run.sh +#for me dustynv/mlc:51fb0f4-builder-r35.4.1 check result of first step +``` + +

pir

+ +## 让我们运行它 +### 运行未量化的Llama,不使用MLC LLM量化 + +```shell +cd /data/MLC-LLM-on-Jetson && python3 Llama-2-7b-chat-hf.py +``` +

pir

+ +你可以看到,在不使用MLC量化的情况下,Jetson Nano 16GB可以加载模型但无法运行. + +### 运行使用MLC LLM量化的Llama +```shell +cd /data/MLC-LLM-on-Jetson && python3 Llama-2-7b-chat-hf-q4f16_ft.py +``` + +

pir

+ +## 在Jetson Orin NX 16GB上运行Llama与MLC的视频: + + + +## 项目拓展 + +在本项目中,我们展示了如何在Jetson Orin上部署量化版本的Llama2-7B与MLC LLM。借助Jetson Orin强大的计算能力,开发人员可以构建在边缘设备上提供高准确性和低延迟的自然语言处理应用。 在未来,我们将继续探索在边缘设备上部署大型语言模型的潜力,并开发更高效和优化的部署方法。 \ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Whisper_on_Jetson_for_Real_Time_Speech_to_Text.md b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Whisper_on_Jetson_for_Real_Time_Speech_to_Text.md new file mode 100644 index 000000000000..545bc7ae086d --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Whisper_on_Jetson_for_Real_Time_Speech_to_Text.md @@ -0,0 +1,111 @@ +--- +description: 在NVIDIA Jetson Orin上部署Whisper进行实时语音转文字 +title: 在NVIDIA Jetson Orin上部署Whisper进行实时语音转文字 +keywords: + - Edge + - reComputer + - Jetson + - whisper +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: Whisper_on_Jetson_for_Real_Time_Speech_to_Text + +last_update: + date: 03/14/2024 + author: Jiahao + +no_comments: false # for Disqus + +--- + +# 在NVIDIA Jetson Orin上部署Whisper进行实时语音转文字 + +## 引言 + +实时语音转文字(STT)系统在现代应用中扮演着至关重要的角色,从语音助手到转录服务。以下是一些流行的STT模型:Whisper、Riva、DeepSpeech、Google Cloud Speech-to-Text API、Microsoft Azure Speech Service、IBM Watson Speech to Text、Kaldi、Wit.ai等。以高性能和能效著称的NVIDIA Jetson Orin为在边缘部署此类要求高的应用提供了一个有前景的平台。 + +[Whisper](https://github.com/openai/whisper), 是一个利用深度学习的先进STT系统,以其准确性和效率而脱颖而出。[Riva](https://github.com/nvidia-riva)是NVIDIA开发的一套全面的多模态对话AI框架。通过在Jetson Orin上部署Whisper或Riva,开发者可以利用其强大的GPU和CPU核心,以及Tensor Cores等硬件加速技术,实现低延迟的实时STT。 + + +
+ +在这本维基中,我们向您介绍[实时Whisper在Jetson上的部署](https://github.com/LJ-Hao/Deploy-Whisper-on-NVIDIA-Jetson-Orin-for-Real-time-Speech-to-Text.git),这种集成使得设备上直接进行语音处理成为可能,消除了对持续网络连接的需求,增强了隐私性和安全性。此外,我们将比较在相同的Jetson Orin设备上部署时Whisper和Riva的推理速度。最终,将Whisper部署在Jetson Orin上使开发者能够构建健壮、高效的STT应用程序,这些应用程序在智能家居到工业自动化等多个领域提供高准确性和低延迟的性能。 + + +## 硬件设置 +### 硬件组件 +
+ + + + + + + + + + + + + +
reComputer(或其他基于Jetson的设备) + reSpeaker (或其他USB接口麦克风)
+
+ +### 硬件连接 +

pir

+ +## 准备运行环境 + +#### 步骤1. 安装依赖项: + +```shell +git clone https://github.com/LJ-Hao/Deploy-Whisper-on-NVIDIA-Jetson-Orin-for-Real-time-Speech-to-Text.git +cd Deploy-Whisper-on-NVIDIA-Jetson-Orin-for-Real-time-Speech-to-Text +pip install -r requirements.txt +sudo apt update && sudo apt install ffmpeg +arecord -D hw:2,0 --dump-hw-params #set microphone rate to 16000 +``` +#### 步骤2. 测试环境: + +```shell +python test.py +``` +如果你在终端看到如下信息,说明你已经成功安装了所需的库。 + +

pir

+ +在你的终端(Ctrl+Alt+T)中,输入 ``` ffmpeg -version``` 如果得到类似以下的信息,则表示你已经安装了ffmpeg。 + + +

pir

+ +## 让我们运行它 + +```shell +python main.py +``` + + +## Riva vs Whisper + +Riva以其高级的人工智能驱动的语音识别和自然语言处理而闻名,能够为用户提供实时的转录、翻译和对话分析。 + +Whisper是一个自动语音识别(ASR)系统,训练了680,000小时的网络收集的多语言和多任务监督数据。此外,它支持多种语言的转录,以及将这些语言翻译成英语。 + +在即将发布的对比视频中,我们将比较[Riva](https://wiki.seeedstudio.com/Real%20Time%20Subtitle%20Recoder%20on%20Nvidia%20Jetson/)和Whisper在Nvidia Jetson上开发的语音到文本的能力。 + + + + + +## 项目展望 + +在这个项目里,我们使用Whisper从麦克风输入实时捕获数据,并将其显示在网页上。未来,我们将增强Whisper的实时处理能力,以进一步减少延迟并提高语音识别的准确性,并探索与其他AI服务或API的集成,以增强应用程序的功能。 \ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_Getting_Started.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_Getting_Started.md new file mode 100644 index 000000000000..9a3d264310de --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_Getting_Started.md @@ -0,0 +1,574 @@ +--- +description: 开启reComputer Industrial系列! +title: 开启reComputer Industrial系列! +keywords: +- reComputer +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_Industrial_Getting_Started +last_update: + date: 05/16/2023 + author: Lakshantha +--- + +# 开启reComputer Industrial系列! + +
+ +reComputer Industrial系列提供完整系统,包括NVIDIA Jetson™ Xavier NX/ Orin Nano/Orin NX/模块,AI性能范围从20 TOPS到100 TOPS。reComputer industrial系列预装Jetpack 5.1.1,并且简化了开发过程,非常适合构建视频分析、物体检测、自然语言处理、医学影像和机器人等应用,这为智慧城市、安防、工业自动化和智能工厂等行业带来了数字化转型。 + +reComputer Industrial系列配备被动散热器和无风扇设计,非常适合在苛刻环境中使用。被动散热器允许在无需风扇的情况下高效散热,减少了由于灰尘或其他污染物导致组件故障的风险。无风扇设计还降低了噪音水平和功耗,使其适合在噪音敏感的环境中使用,并减少了能源成本。 + +reComputer industrial系列配备2个RJ45 GbE端口,其中一个是PoE PSE端口,用于通过以太网为IP摄像头等设备供电。这消除了对单独电源的需求,使在没有现成电源插座的区域部署网络设备更加容易。另一个GbE端口用于连接到网络交换机或路由器,实现与网络上其他设备的通信和访问互联网。 + + + +## 产品特点 + +- **无风扇紧凑型PC:** 采用热设计参考,在0.7m/s气流下支持-20 ~ 60°C的宽温范围 +- **工业式接口设计:** 配备2个RJ-45 GbE端口(其中1个支持POE-PSE 802.3 af),1个RS-232/RS-422/RS-485接口,4个DI/DO接口,1个CAN接口,3个USB3.2接口,以及1个可选的TPM2.0模块 +- **混合式连接:** 支持5G/4G/LTE/LoRaWAN®(可选模块),并配有1个Nano SIM卡槽 +- **灵活多样的安装方式:** 支持桌面、DIN导轨、壁挂和VESA多种安装方式 +- **专业认证:** 符合FCC、CE、RoHS和UKCA等专业标准 + +## 规格参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
产品名称reComputer Industrial J4012reComputer Industrial J4011 reComputer Industrial J3011 reComputer Industrial J3010reComputer Industrial J2012reComputer Industrial J2011
NVIDIA Jetson 模块Orin NX 16GBOrin NX 8GBOrin Nano 8GBOrin Nano 4GBXavier NX 16GBXavier NX 8GB
库存单位110110191110110190110110193110110192110110189110110188
处理器系统AI Performance100 TOPS70 TOPS40 TOPS20 TOPS21 TOPS
GPU1024-core NVIDIA Ampere architecture GPU with 32 Tensor Cores512-core NVIDIA Ampere architecture GPU with 16 Tensor Cores384-core NVIDIA Volta™ GPU with 48 Tensor Cores
CPU8-core Arm® Cortex®-A78AE v8.2 64-bit CPU
2MB L2 + 4MB L3
6-core Arm® Cortex®-A78AE v8.2 64-bit CPU
1.5MB L2 + 4MB L3
6-core NVIDIA Carmel ARM®v8.2 64-bit CPU, 6MB L2 + 4MB L3
内存16GB 128-bit LPDDR5
102.4GB/s
8GB 128-bit LPDDR5
102.4GB/s
8GB 128-bit LPDDR5
68 GB/s
4GB 64-bit LPDDR5
34 GB/s
16GB 128-bit LPDDR4x
59.7GB/s
8GB 128-bit LPDDR4x
59.7GB/s
视频编码1*4K60 (H.265) | 3*4K30 (H.265) | 6*1080p60 (H.265) | 12*1080p30 (H.265)1080p30 supported by 1-2 CPU cores2*4K60 | 4*4K30 | 10*1080p60 | 22*1080p30 (H.265)
2*4K60 | 4*4K30 | 10*1080p60 | 20*108p30 (H.264)
视频解码1*8K30 (H.265) | 2*4K60 (H.265) | 4*4K30 (H.265) | 9*1080p60 (H.265) | 18*1080p30 (H.265)1*4K60 (H.265) | 2*4K30 (H.265) | 5*1080p60 (H.265) | 11*1080p30 (H.265)2*8K30 | 6*4K60 | 12*4K30 | 22*1080p60 | 44*1080p30 (H.265)
2*4K60 | 6*4K30 | 10*1080p60 | 22*1080p30 (H.264)
储存eMMC

-
---16GB eMMC 5.1
扩展M.2 Key M PCIe Gen4.0 SSD (M.2 NVMe 2280 SSD 128G included)
I/ONetworking1* LAN1 RJ45 GbE PoE(PSE 802.3 af 15 W)
1* LAN2 RJ45 GbE (10/100/1000Mbps)
USB3* USB3.2 Gen1, 1* USB2.0 Type C(Device mode), 1* USB2.0 Type C For Debug UART & RP2040
DI/DO4*DI,4*DO,3*GND_DI,2*GND_DO,1*GND_ISO,1*CAN
COM1* DB9 (RS232/RS422/RS485)
显示端口1*HDMI 2.0 Type A
SIM1* Nano SIM card slot
扩展接口Mini PCIeMini PCIe for 4G/LoRaWAN®  (Module optional)
Wi-FiSupport SMD Wi-Fi/Bluetooth (Module optional)
M.2 Key B M.2 Key B support 4G/5G (Module optional)
FanFanless, passive heatsink
1*Fan connectors(5V PWM)
TPM1* TPM 2.0 connector (Module optional)
RTC1* RTC socket (CR1220 included), 1* RTC 2-pin
摄像头2* CSI (2-lane 15pin)
电源Power SupplyDC 12V-24V Terminal block 2 pin
电源适配器19V 电源适配器(不包括电源线)
机械结构
尺寸(宽 x 深 x 高)159mm*155mm*57mm
重量1.57kg
安装Desk, DIN rail, wall-mounting, VESA
环境工作环境 -20 ~ 60°C with 0.7m/s
工作湿度95% @ 40 °C (非冷凝)
振动3 Grms @ 5 ~ 500 Hz, random, 1 hr/axis
冲击50G peak acceleration (11 msec)
操作系统 Pre-installed Jetpack 5.1 ( +提供带有板级支持包的Linux操作系统)
认证FCC, CE, RoHS, UKCA
保修年限2 年
+ +## 硬件概述 + +### 完整系统 + +
+ +### 载板 + +
+ +## Flash JetPack + +reComputer Industrial 预装了JetPack 5.1.1,配备128GB SSD以及必要的驱动程序。该套件包括CUDA、CUDNN和TensorRT等SDK组件。然而,如果您希望将JetPack刷新到预装的SSD或新的SSD上,可以按以下步骤进行操作。 + +:::注意 +如果您想要在reComputer Industrial系列上使用SSD,我们建议您选择Seeed提供的[128GB](https://www.seeedstudio.com/M-2-2280-SSD-128GB-p-5332.html), 或者 [256GB](https://www.seeedstudio.com/NVMe-M-2-2280-SSD-256GB-p-5333.html),亦或者 [512GB](https://www.seeedstudio.com/NVMe-M-2-2280-SSD-512GB-p-5334.html) 版本。 +::: + +### 前提条件 + +在开始使用reComputer Industrial系列之前,您需要准备以下硬件: + +- reComputer Industrial +- 随附的电源适配器及电源线 ([美版](https://www.seeedstudio.com/AC-US-p-5122.html) or [欧版](https://www.seeedstudio.com/AC-EU-p-5121.html)) +- Ubuntu 20.04 主机 PC +- USB Type-C 数据传输线 +- 外接显示器 +- HDMI 线 +- 键盘和鼠标 + +### 进入强制恢复模式: + +现在,您需要让reComputer Industrial系列设备进入恢复模式,以便刷新设备。 +1. 将 USB Type-C 线连接到 **USB2.0 DEVICE** 端口与您的PC之间。 +2. 使用针插入到 **RECOVERY** 孔按住恢复按钮。 +3. 将随附的 **2-Pin Terminal block power connector** 连接到板上的电源连接器,并将随附的电源适配器和电源线连接以打开设备。 +4. 松开恢复按钮。 + +
+ +:::注意:确保在按住RECOVERY按钮的同时开启设备,否则设备不会进入恢复模式 +::: + +在Ubuntu主机PC上,打开终端窗口并输入命令 **lsusb**。如果返回内容中包含以下Jetson SoM相应的输出之一,则表示设备已进入强制恢复模式。 + +- 对于 Orin NX 16GB为: **0955:7323 NVidia Corp** +- 对于 Orin NX 8GB为: **0955:7423 NVidia Corp** +- 对于 Orin Nano 8GB为: **0955:7523 NVidia Corp** +- 对于 Orin Nano 4GB为: **0955:7623 NVidia Corp** + +### Flash to Jetson + + + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +我们提供两种不同的刷机方法。 + +1. 下载我们准备的完整系统镜像,其中包括NVIDIA JetPack、硬件外设驱动程序并将其刷入设备。 +2. 下载官方NVIDIA L4T,使用附带的硬件外设驱动程序并将其刷入设备。 + +:::注意 +第一种方法的下载大小约为14GB,第二种方法的下载大小约为3GB +::: + + + + +- **步骤 1:** 将系统映像下载到您正在使用的主板对应的Ubuntu PC上 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
设备映像链接JetPack 版本L4T 版本
reComputer Industrial J4012Download5.1.135.3.1
reComputer Industrial J4011Download
reComputer Industrial J3011Download
reComputer Industrial J3010Download
reComputer Industrial J2012Download
reComputer Industrial J2011Download
+ + +上述映像源代码在[这](https://github.com/Seeed-Studio/Linux_for_Tegra) + +- **步骤 2:** 提取生成的文件 + +```sh +sudo tar -xvf .tar.gz +``` + + + +- **步骤 3:** 导航至之前提取的文件并运行以下代码: + +```sh +cd mfi_p3509-a02+p3767-0000 +sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --massflash 1 --network usb0 --showlogs +``` + +现在系统将开始将系统镜像刷写到设备上。如果刷写成功,您将看到以下输出: + +
+ +- **步骤 4:** 使用板上的HDMI连接器将板子连接到显示器,并完成初始配置设置。 + +
+ +
+ +完成之后,板子将重启,然后就可以使用啦! + +
+
+ + +#### 下载并准备NVIDIA L4T和root文件系统 + +```sh +wget https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v3.1/release/jetson_linux_r35.3.1_aarch64.tbz2 +wget https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v3.1/release/tegra_linux_sample-root-filesystem_r35.3.1_aarch64.tbz2 +tar xf jetson_linux_r35.3.1_aarch64.tbz2 +sudo tar xpf tegra_linux_sample-root-filesystem_r35.3.1_aarch64.tbz2 -C Linux_for_Tegra/rootfs/ +cd Linux_for_Tegra/ +sudo ./apply_binaries.sh +sudo ./tools/l4t_flash_prerequisites.sh +``` + +#### 下载并准备驱动 + +- **步骤 1:** 下载适合您正在使用的板子的驱动文件到您的Ubuntu PC上 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Jetson 模块下载链接JetPack 版本L4T 版本
Jetson Orin NX 8GB/ 16GB,
Orin Nano 8GB
Download5.1.135.3.1
Jetson Orin Nano 4GBDownload
Jetson Xavier NX 8GB/ 16GBDownload
+ + +- **步骤 2:** 将下载的外设驱动程序移动到与 **Linux_For_Tegra** 目录相同的文件夹中。 + +
+ +- **步骤 3:** 解压下载的驱动程序.zip 文件. 这里我们额外需要解压的安装 **unzip** .zip文件。 +```sh +sudo apt install unzip +sudo unzip xxxx.zip # Replace xxxx with the driver file name +``` + +Here it will ask whether to replace the files. Type A and press ENTER to replace the necessary files + +
+ +- **步骤 4:** 导航至 **Linux_for_Tegra** 目录 并运行如下代码: + +```sh +cd Linux_for_Tegra + +# For Orin NX and Orin Nano +sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_nvme.xml -S 80GiB -p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml --no-systemimg" --network usb0 recomputer-orin-industrial external + +# For Xavier NX +sudo ADDITIONAL_DTB_OVERLAY_OPT="BootOrderNvme.dtbo" ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_nvme.xml -S 80GiB -p "-c bootloader/t186ref/cfg/flash_l4t_t194_qspi_p3668.xml --no-systemimg" --network usb0 recomputer-xavier-nx-industrial external +``` + +现在系统将开始将系统镜像刷写到设备上。如果刷写成功,您将看到以下输出: + +
+ +- **步骤 5:** 使用板上的HDMI连接器将板连接到显示器并完成初始配置设置 + +
+ +
+ +完成之后,板子将会重启,并且你会看到: + +
+ +- **步骤 6:** 在设备内部打开终端窗口,执行以下命令,设备将重新启动并准备使用! + +```sh +systemctl disable nvgetty.service +sudo depmod -a +sudo reboot +``` + +此外,如果您想安装CUDA, cuDNN, TensorRT等SDK组件,请执行以下操作 + +```sh +sudo apt update +sudo apt install nvidia-jetpack -y +``` +
+
+ +--- + +
+ + +- **步骤 1:**下载适合您正在使用的板子的系统镜像到您的Ubuntu PC上 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
设备镜像链接JetPack 版本L4T 版本
reComputer Industrial J4012Download6.036.3.0
reComputer Industrial J4011Download
reComputer Industrial J3011Download
reComputer Industrial J3010Download
+ + + +上述映像源代码在 [这](https://github.com/Seeed-Studio/Linux_for_Tegra) + +- **步骤 2:** 提取生成的文件 + +```sh +sudo tar -xvf .tar.gz +``` + +- **步骤 3:** 导航至之前提取的文件并运行以下代码: + +```sh +cd mfi_p3509-a02+p3767-0000 +sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --massflash 1 --network usb0 --showlogs +``` + +现在系统将开始将系统镜像刷写到设备上。如果刷写成功,您将看到以下输出: + +
+ +- **步骤 4:** 使用板上的HDMI连接器将板连接到显示器并完成初始配置设置 + +
+ +
+ +完成之后,设备将会重启,之后就可以使用啦! + +
+
+
+ + + +## 硬件和接口使用说明 + +为了更多了解如何使用reComputer industrial上的所有硬件和接口,建议您查阅我们准备的相关Wiki文档。 + +- [reComputer Industrial J20 Hardware and Interfaces Usage](https://wiki.seeedstudio.com/reComputer_Industrial_J20_Hardware_Interfaces_Usage) +- [reComputer Industrial J40, J30 Hardware and Interfaces Usage](https://wiki.seeedstudio.com/reComputer_Industrial_J40_J30_Hardware_Interfaces_Usage) + +## 资源 + +- [reComputer Industrial Datasheet](https://files.seeedstudio.com/products/NVIDIA/reComputer-Industrial-datasheet.pdf) +- [reComputer Industrial Reference Guide](https://files.seeedstudio.com/products/NVIDIA/reComputer-Industrial-Reference-Guide.pdf) +- [NVIDIA Jetson Devices and Carrier Boards Comparison](https://files.seeedstudio.com/products/NVIDIA/NVIDIA-Jetson-Devices-and-carrier-boards-comparision.pdf) +- [reComputer Industrial 3D File](https://files.seeedstudio.com/products/NVIDIA/Industrial/reComputer-Industrial.stp) + +## 教学支持 + +如有问题,请提交到我们 [论坛](https://forum.seeedstudio.com/). + +
+

+
\ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_J20_Hardware_Interfaces_Usage.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_J20_Hardware_Interfaces_Usage.md new file mode 100644 index 000000000000..afeeb771f8aa --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_J20_Hardware_Interfaces_Usage.md @@ -0,0 +1,1803 @@ +--- +description: reComputer Industrial J20 系列硬件和接口使用 +title: reComputer Industrial J20 系列硬件和接口使用 +tags: + - reComputer Industrial +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_Industrial_J20_Hardware_Interfaces_Usage +last_update: + date: 05/16/2023 + author: Lakshantha +--- + +这页Wiki介绍了reComputer Industrial J2012和J2011上的各种硬件和接口,以及如何使用它们来扩展您的项目创意。 + +## 拆解 reComputer Industrial + +首先我们最好先拆下外层外壳以便访问所有接口。按照下图所示,拧下背面的4颗螺丝,以拆解 reComputer Industrial。 + +
+ +## CSI 摄像头接口 + +reComputer Industrial 配备了 **2x 2-lane 15pin MIPI CSI camera connectors** 并且支持如下摄像头。 + +- IMX219 cameras + + - [Raspberry Pi Camera V2](https://www.seeedstudio.com/Raspberry-Pi-Camera-Module-V2.html) + - [IMX219-130 8MP Camera with 130° FOV](https://www.seeedstudio.com/IMX219-130-Camera-130-FOV-Applicable-for-Jetson-Nano-p-4606.html) + - [IMX219-160 8MP Camera with 160° FOV](https://www.seeedstudio.com/IMX219-160-Camera-160-FOV-Applicable-for-Jetson-Nano-p-4603.html) + - [IMX219-200 8MP Camera with 200° FOV](https://www.seeedstudio.com/IMX219-200-Camera-200-FOV-Applicable-for-Jetson-Nano-p-4609.html) + - [IMX219-77 8MP Camera with 77° FOV](https://www.seeedstudio.com/IMX219-77-Camera-77-FOV-Applicable-for-Jetson-Nano-p-4608.html) + - [IMX219 M12/CS mount CMOS Camera Module](https://www.seeedstudio.com/IMX-219-CMOS-camera-module-M12-and-CS-camera-available-p-5372.html) + - [IMX219-83 8MP 3D Stereo Camera Module](https://www.seeedstudio.com/IMX219-83-Stereo-Camera-8MP-Binocular-Camera-Module-Depth-Vision-Applicable-for-Jetson-Nano-p-4610.html) + - [IMX219-77IR 8MP IR Night Vision Camera with 77° FOV](https://www.seeedstudio.com/IMX219-77IR-Camera-77-FOV-Infrared-Applicable-for-Jetson-Nano-p-4607.html) + - [IMX219-160IR 8MP Camera with 160° FOV](https://www.seeedstudio.com/IMX219-160IR-Camera160-FOV-Infrared-Applicable-for-Jetson-Nano-p-4602.html) + - [IMX219 M12/CS mount CMOS Camera Module](https://www.seeedstudio.com/IMX-219-CMOS-camera-module-M12-and-CS-camera-available-p-5372.html) + +- IMX477 cameras + + - [Raspberry Pi High Quality Camera](https://www.seeedstudio.com/Raspberry-Pi-High-Quality-Cam-p-4463.html) + - [Raspberry Pi HQ Camera - M12 mount](https://www.seeedstudio.com/Raspberry-Pi-HQ-Camera-M12-mount-p-5578.html) + - [High Quality Camera for Raspberry Pi](https://www.seeedstudio.com/High-Quality-Camera-For-Raspberry-Pi-Compute-Module-Jetson-Nano-p-4729.html) + +### 连接概述 + +这里的2个CSI摄像头连接器标记为 **CAM0 and CAM1**。 您可以将一个摄像头连接到任意一个连接器,也可以同时将两个摄像头分别连接到两个连接器上。 + +- **步骤 1:** 轻轻地拉出CSI连接器上的黑色锁扣 + +
+ +- **步骤 2:** 将15针排线插入连接器,确保gold fingers朝下 + +
+ +- **步骤 3:** 推入黑色锁扣,将排线固定到位。 + +
+ +### 使用方法: + +首先,您需要配置板子以加载适用于您将使用的特定摄像头的驱动程序。对于此JetPack系统,内置了支持IMX219和IMX477摄像头的工具 + +- **步骤 1:** 打开终端并允许以下代码: + +```sh +sudo /opt/nvidia/jetson-io/jetson-io.py +``` + +- **步骤 2:** 选择 **Configure Jetson Nano CSI Connector** + +
+ +- **步骤 3:** 选择 **Configure for compatible hardware** + +
+ +- **步骤 4:** 选择你想使用的摄像头 + +
+ +- **步骤 5:** 选择 **Save pin changes** + +
+ +- **步骤 6:** 选择 **Save and reboot to reconfigure pins** + +
+ +- **步骤 7:** 按下键盘上的任意键,设备将重新启动并应用摄像头配置。 + +
+ +您可以通过两种不同的方法使用CSI摄像头。根据摄像头连接器,按照以下命令操作。 + +- 方法 1: + +对于 CAM0 端口 + +```sh +nvgstcapture-1.0 sensor-id=0 +``` + +对于 CAM1 端口 + +```sh +nvgstcapture-1.0 sensor-id=1 +``` + +:::注意 +如果你想要改变更多摄像头的设置,可以输入 **"nvgstcapture-1.0 --help"** 去获得所有可配置选项 +::: + +- 方法 2: + +对于 CAM0 端口 + +```sh +gst-launch-1.0 nvarguscamerasrc sensor-id=0 sensor-mode=0 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=20/1, format=NV12' ! nvvidconv ! xvimagesink +``` + +对于 CAM1 端口 + +```sh +gst-launch-1.0 nvarguscamerasrc sensor-id=1 sensor-mode=0 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=20/1, format=NV12' ! nvvidconv ! xvimagesink +``` + +:::注意 +如果你想修改更多关于摄像头的设置, 你可以修改例如 **width, height, framerate, format**等的参数。 +::: + +## RTC + +reComputer Industrial配备了两种不同的方式去连接RTC电池 + +### 连接概述 + +- 方法 1: + +将 **3V CR1220 纽扣电池** 插入板子上的RTC插座,如下所示。确保电池 **正极 (+)** 朝上。 + +
+ +- 方法 2: + +将**带有JST连接器的 3V CR2302 纽扣** 连接到板子上的2针1.25mm JST插座,如下所示。 + +
+ +### 使用方法: + +- **步骤 1:** 按照上述提到的方式连接RTC电池。 + +- **步骤 2:** 打开 reComputer Industrial + +- **步骤 3:** 在Ubuntu桌面上,点击右上角的下拉菜单,导航到 `Settings > Date & Time`, 通过以太网电缆连接到网络,然后选择 **Automatic Date & Time** 以自动获取日期和时间。 + +
+ +:::注意 +如果您尚未通过以太网连接到互联网,您可以在此手动设置日期/时间 +::: + +- **步骤 4:** 打开终端窗口,执行以下命令以检查硬件时钟时间 + +```sh +sudo hwclock +``` + +您将看到类似于以下内容的输出,其中显示的日期/时间并不正确 + +
+ +- **步骤 5:** 通过输入以下命令,将硬件时钟时间更改为当前系统时钟时间: + +```sh +sudo hwclock --systohc +``` + +- **步骤 6:** 拔掉所有已连接的以太网电缆,以确保系统不会从互联网抓取时间,然后重新启动板子。 + +```sh +sudo reboot +``` + +- **步骤 7:** 检查硬件时钟时间以验证即使设备已关闭,日期/时间仍保持不变: + +现在,我们将创建一个脚本,以便在每次启动时始终从硬件时钟同步系统时钟: + +- **步骤 8:** 您可以使用任何文本编辑器创建一个新的 Shell 脚本文件。这里我们使用 **vi** 文本编辑器 + +```sh +sudo vi /usr/bin/hwtosys.sh +``` + +- **步骤 9:** 进入**插入模式**,按下 **i** 键,然后复制并粘贴以下内容到文件中 + +```sh +#!/bin/bash + +sudo hwclock --hctosys +``` + +- **步骤 10:** 修改脚本为可执行文件 + +```sh +sudo chmod +x /usr/bin/hwtosys.sh +``` + +- **步骤 11:** 创建一个 Systemd 文件 + +```sh +sudo nano /lib/systemd/system/hwtosys.service +``` + +- **步骤 12:** 请将以下内容添加到 Systemd 服务文件中 + +```sh +[Unit] +Description=Change system clock from hardware clock + +[Service] +ExecStart=/usr/bin/hwtosys.sh + +[Install] +WantedBy=multi-user.target +``` + +- **步骤 13:** 重新加载 Systemd 守护进程 + +```sh +sudo systemctl daemon-reload +``` + +- **步骤 14:** 启用新创建的服务开机自启并启动服务 + +```sh +sudo systemctl enable hwtosys.service +sudo systemctl start hwtosys.service +``` + +- **步骤 15:** 验证脚本作为 Systemd 服务正在运行 + +```sh +sudo systemctl status hwtosys.service +``` + +- **步骤 16:** 重新启动板子。此时,你会发现系统时间已经正确设置并自动同步到硬件时钟上。 + +## M.2 Key M + +reComputer Industrial 出厂时包括一个连接到 M.2 Key M 插槽的 128GB SSD,预装有 JetPack 系统 + +### 连接概述 + +如果您想要更换机器中预装的 SSD 并安装新的 SSD,可以按照以下步骤进行操作。 这里我们仅建议使用容量为 [128GB](https://www.seeedstudio.com/M-2-2280-SSD-128GB-p-5332.html), [256GB](https://www.seeedstudio.com/NVMe-M-2-2280-SSD-256GB-p-5333.html) 和 [512GB](https://www.seeedstudio.com/NVMe-M-2-2280-SSD-512GB-p-5334.html) Seeed SSD ,因为我们只测试过这些 SSD。此外,这个接口支持 PCIe Gen4.0 SSD。 + +- **步骤 1:** 拆卸预安装的硬盘螺丝 + +
+ +- **步骤 2:** 将原装SSD从连接处取下 + +
+ +- **步骤 3:** 插入新的 SSD 并拧紧螺丝 + +### 使用方法 + +接下来,我们将为您解答如何对连接的 SSD 进行简单的基准测试。 + +- **步骤 1:** 通过运行以下指令测试写入速度 + +```sh +sudo dd if=/dev/zero of=/home/nvidia/test bs=1M count=512 conv=fdatasync +``` + +- **步骤 2:** 通过运行以下指令测试读入速度 ,确保运行完上述测试写入速度的指令后再运行本指令。 + +```sh +sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches" +sudo dd if=/home/nvidia/test of=/dev/null bs=1M count=512 +``` + +## mini PCIe + +reComputer Industrial 配备了一个 mini PCIe 插槽,可以支持 4G 模块和 LoRa 模块。然而,您一次只能连接一个 4G 模块或一个 LoRa 模块。 + +### 4G模块连接概述 + +目前板子支持 EC25EUXGA 和 EC20CEHCLG 模块. + +- **步骤 1:** 请关闭板子电源如果板子开启着 + +- **步骤 2:** 移除配件中的支撑垫。 当你使用 M.2 Key B 接口时才需要此支撑垫。 + +
+ +- **步骤 3:** 将 4G 模块插入 mini PCIe 槽中,使用预装的螺钉,将其拧到两个孔上以确保 4G 模块稳固插入 + +
+ +- **步骤 4:** 将天线插接到标有 **MAIN** 的天线连接器上。在这里,需要使用 IPEX 连接器。 + +
+ +- **步骤 5:** 将支持 4G 的 Nano SIM 卡插入板上的 SIM 卡槽中,确保 SIM 卡底部的金属表面朝下。请将 SIM 卡插入到底部,以使其击中内部弹簧后会反弹并锁定在位 + +
+ +:::注意 +如果你想要取下SIM卡, 请将卡向里按压后,其会被弹簧弹出。 +::: + +- **步骤 6:** 在 **J8 (Control and UART) Header**的 **SIM_MUX_SEL** 和 **GND**引脚之间添加一条跳线 + +
+ +- **步骤 7:** 打开板子电源 + +### 4G模块使用说明 - 测试拨号 + +使用EC25模块时,模块将自动启动并准备就绪。然而,使用EC20模块时,您需要重置该模块才能正常工作。 + +- **步骤 1:** 如果您正在使用EC25模块,则可以跳过此步骤。但是,如果您正在使用EC20模块,则需要输入以下命令来访问GPIO298引脚,该引脚负责重置4G模块。 + +```sh +sudo su +cd /sys/class/gpio +echo 298 > export +cd gpio298 +echo out > direction +echo 1 > value +``` + +对于EC25模块,在板子启动后,LED2会立即亮起绿色。而对于EC20模块,通过上述步骤重置模块后,LED2将会亮起绿色。 + +
+ +- **步骤 2:** 安装 minicom + +```sh +sudo apt update +sudo apt install minicom -y +``` + +- **步骤 3:** 进入已连接的4G模块的串行控制台,以便我们可以输入AT命令并与4G模块进行交互。 + +```sh +sudo minicom -D /dev/ttyUSB2 -b 115200 +``` + +- **步骤 4:** 按下**Ctrl+A**,然后按下**E**,以开启本地回显功能 + +- **步骤 5:** 输入命令**"AT"**,然后按回车键。如果您看到响应为“OK”,则说明4G模块正常工作。 + +
+ +- **步骤 6:** 输入命令**"ATI"**,以检查模块信息。 + +
+ +- **步骤 7:** 若要测试模块,请输入以下命令来拨打另一个电话号码: + +```sh +ATD; +``` + +然后你会看到如下输出 + +
+ +如果输入的电话号码可以接收来电,则说明模块正在按预期工作。 + +### 4G模块使用说明 - 连接互联网 + +#### EC25模块 + +如果你使用EC25模块,请跟随以下步骤 + +- **步骤 1:** 在完成上面所述的打开4G模块的串行控制台之后(4G模块使用说明-测试拨号部分),执行以下命令来连接互联网。在此将**YOUR_APN**替换为您的网络运营商的APN。 + +```sh +AT+CGDCONT=1,"IP","YOUR_APN" +``` + +
+ +成功连接后,它应该会输出**OK**,如上面的图像所示。 + +- **步骤 2:** 执行以下命令来重新启动4G模块: + +```sh +AT+CFUN=1,1 +``` + +现在,您将会失去对串行终端上4G模块的连接。 + +- **步骤 3:** 按下**CTRL + A**,然后按**Q**来关闭**minicom**。 + +- **步骤 4:** 输入**ifconfig**,然后会在**usb0**接口上看到一个IP地址。 + +
+ +- **步骤 5:** 您可以尝试使用以下方法对一个网站进行ping测试,以检查是否有互联网连接: + +```sh +ping -I usb0 www.bing.com -c 5 +``` + +
+ +#### EC20模块 + +如果你使用EC20模块,请跟随以下步骤 + +- **步骤 1:** 如果您已经按照前面的步骤(4G模块使用说明-测试拨号部分)重置了EC20模块,则可以跳过此步骤。但是,如果您还没有执行重置,请现在执行重置。 + +- **步骤 2:** 进入4G模块的串行控制台,并输入以下命令将其设置为ECM模式: + +```sh +AT+QCFG="usbnet",1 +``` + +- **步骤 3:** 重置4G模块。 + +- **步骤 4:** 在4G模块控制台内,执行以下命令连接到互联网。在此将 **YOUR_APN** 替换为您的网络运营商的APN。 + +```sh +AT+CGDCONT=1,"IP","YOUR_APN" +``` + +- **步骤 6:** 输入**ifconfig**,然后在**usb1**接口上看到一个IP地址。 + +
+ +- **步骤 7:** 您可以尝试使用以下方法对一个URL进行ping测试,以检查是否有互联网连接: + +
+ +### LoRa模块连接概述。 + +目前,此板支持WM1302 SPI模块。您可以使用我们的Bazaar上 [美版](https://www.seeedstudio.com/WM1302-LoRaWAN-Gateway-Module-SPI-US915-SKY66420-p-5455.html) 或 [欧版](https://www.seeedstudio.com/WM1302-LoRaWAN-Gateway-Module-SPI-EU868-p-4889.html) + +- **步骤 1:** 如果板子已经开启,请关闭它。 + +- **步骤 2:** 将LoRa模块滑入mini PCIe插槽,并使用预安装的螺丝将其固定在2个孔上,以确保4G模块处于正确的位置。 + +
+ +- **步骤 3:** 将天线连接到天线接头上。在这里,您需要使用IPEX连接器。 + +
+ +:::注意 +确保**J8(控制和UART)标头**上的**SIM_MUX_SEL**引脚和**GND**引脚之间没有跳线。这个跳线只在使用4G模块时需要。 +::: + +- **步骤 4:** 打开板子电源 + +### LoRa模块使用说明 - 测试 LoRa RF + +当连接LoRa模块时,您会看到模块上的绿色和蓝色LED灯亮起。 + +
+ +- **步骤 1:** 输入以下命令以检查系统是否检测到LoRa模块: + +```sh +i2cdetect -r -y 7 +``` + +如果您看到如下输出,则系统已检测到该模块: + +
+ +- **步骤 2:** 输入以下命令编译和构建LoRa信号传输工具: + +```sh +git clone https://github.com/lakshanthad/sx1302_hal +cd sx1302_hal +make +cd libloragw +cp ../tools/reset_lgw.sh . +sudo ./test_loragw_hal_tx -r 1250 -m LORA -f 867.1 -s 12 -b 125 -n 1000 -z 100 --dig 3 --pa 0 --pwid 13 -d /dev/spidev2.0 +``` + +如果您看到以下结果并且LoRa模块上的LED灯变成了红色,则表示该模块已成功传输射频信号: + +
+ +
+ +要停止发送信号,您可以在键盘上按下**CTRL + C**。 + +### LoRa 模块使用说明 - 连接TTN + +现在,我们将连接到TTN(The Things Network),并将reComputer Industrial用作TTN LoRaWAN网关。 + +- **步骤 1:** 输入以下命令使数据包转发器准备就绪: +```sh +cd .. +cd packet_forwarder +cp ../tools/reset_lgw.sh . +``` + +- **步骤 2:** 根据您使用的LoRa模块运行以下命令。在这里,我们已经测试了SPI US915版本。 + +```sh +sudo ./lora_pkt_fwd -c global_conf.json.sx1250.US915 +``` + +但是,其他模块的命令如下所示: + +```sh +# USB 915 +sudo ./lora_pkt_fwd -c global_conf.json.sx1250.US915.USB + +# SPI EU868 +sudo ./lora_pkt_fwd -c global_conf.json.sx1250.EU868 + +# USB EU868 +sudo ./lora_pkt_fwd -c global_conf.json.sx1250.EU868.USB +``` + +运行上述命令后,您将看到以下输出,并且最后一行将显示**concentrator EUI**信息。请保存此信息,因为我们在设置与TTN网关时将使用它: + +
+ +- **步骤 3:** 访问 [URL](https://console.cloud.thethings.network) 进入TTN控制台,选择您喜欢的地区。 + +
+ +- **步骤 4:** 如果您已经有一个帐号,请登录,如果您没有帐号,请注册一个新帐号。 + +
+ +- **步骤 5:** 点击 **Go to gateways** + +
+ +- **步骤 6:** 点击 **+ Register gateway** + +
+ +- **步骤 7:** 在 **Gateway EUI** 部分输入你之前获得的 **Concentrator EUI** ,然后点击 **Confirm** + +
+ + +- **步骤 8:** 根据您使用的LoRa模块输入**Frequency plan**。这里我们使用的是US915模块的版本,因此选择 **United Stated 902-928 MHz, FSB 2 (used by TTN)**。然后单击 **Register gateway** + +
+ +:::注意 + **Gateway ID** 已经自动填充。但是,您可以更改它为任何您喜欢的内容。 **Gateway name** 不是必须填写的。但是,您也可以根据个人喜好填写。 +::: + +- **步骤 9:** 在网关主页上记录 **Gateway Server Address** + +
+ +- **步骤 10:** 在reTerminal Industrial上,编辑我们与**lora_pkt_fwd**命令一起使用的**global_conf_json**文件。在这里,您需要更改以下选项:**gateway_ID**、**server_address**、**serv_port_up**和**serv_port_down**。 + + - gateway_ID: 设备中的Concentrator EUI + - server_address: 从TTN获取的网关服务器地址 + - serv_port_up: 1700 + - serv_port_down: 1700 + +
+ +- **步骤 11:** 重新运行数据包转发器。 + +```sh +sudo ./lora_pkt_fwd -c global_conf.json.sx1250.US915 +``` + +如果您看到以下输出,那么设备已经成功连接到TTN: + +
+ +## M.2 Key B + +reComputer Industrial带有一个M.2 Key B连接器,支持4G和5G模块。目前,我们已经测试了**SIM8202G-M2 5G模块**。 + +### 5G 模块连接概况 + +- **步骤 1:** 如果板子已经开启,请关闭它。 + +- **步骤 2:** 确保支架已经就位,然后取下支架上的螺钉。 + +
+ +- **步骤 3:** 将5G模块滑入M.2 Key B插槽中,并将支架螺钉拧紧以固定5G模块的位置(关于支架的说明)。 + +
+ +- **步骤 4:** 将4根天线连接到模块上的天线接头上。在这里,您需要使用IPEX 4连接器。 + +
+ +- **步骤 5:** 将一张支持5G的nano SIM卡插入板子上的SIM卡槽中,确保SIM卡的金色表面朝下。在这里,将卡片插入到底部,使其在撞到内部弹簧后反弹回来并锁定。 + +
+ +:::注意 +如果您想要取出SIM卡,请将卡片推入,撞到内部弹簧以便SIM卡从插槽中被弹出。 +::: + +- **步骤 6:** 打开板子电源 + +### 5G 模块使用说明 - 测试拨号 + +当使用SIM8202G-M2 5G模块时,模块不会自动启动。因此,我们需要先切换一些GPIO以使其启动。 + +- **步骤 1:** 输入以下命令以启动5G模块: + +```sh +sudo su +cd /sys/class/gpio +echo 298 > export +cd gpio298 +echo out > direction +echo 0 > value + +cd.. +echo 330 > export +cd PEE.02 +echo out > direction +echo 1 > value + +cd.. +echo 319 > export +cd PCC.02 +echo out > direction +echo 0 > value +``` + +执行上述命令后,LED2将亮起绿色,如下图所示: + +
+ +- **步骤 2:** 安装 minicom + +```sh +sudo apt update +sudo apt install minicom -y +``` + +- **步骤 3:** 进入已连接的5G模块的串行控制台,以便我们可以输入AT命令并与5G模块进行交互。 + +```sh +sudo minicom -D /dev/ttyUSB2 -b 115200 +``` + +- **步骤 4:** 输入命令**AT**,然后按回车键。如果您看到响应为“OK”,则说明5G模块正常工作。 + +
+ +- **步骤 5:** 输入命令 **"ATI"** 检查模块信息 + +
+ + +- **步骤 6:** 若要测试模块,请输入以下命令来拨打另一个电话号码: + +```sh +ATD; +``` + +然后你会看到如下输出: + +
+ +### 5G 模块使用说明 - 连接互联网 + +更新中...... + +## DI/ DO + +reComputer Industrial支持4个数字输入和4个数字输出通道,全部都进行了光电隔离,以有效地保护主板免受电压峰值或其他电气干扰的影响。这个连接器上还有一个CAN接口,我们稍后会在本文档中讨论。 + +
+ +### DI/DO引脚分配表: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLabel NameSchematic SignalModule Pin NumberBGA NumberGPIO NumberV/A LimitsNote
InputDI1DI_1_GPIO01118PQ.0544012V/ 20mA current in total12V Digital Input, ground signal needs to
be connected to GND_DI (Pin2/4/6)
DI2DI_2_GPIO09211PS.04453
DI3DI_3_GPIO11216PQ.06441
DI4DI_4_GPIO13228PN.01419
OutputDO1DO_1_GPIO193PT.0646340V/40mA load per pinDigital output, maximum withstand
voltage 40V, ground signal needs to be
connected to GND_DO(Pin8/10)
DO2DO_2_GPIO195PT.07464
DO3DO_3_GPIO197PU.00465
DO4DO_4_GPIO199PT.05462
CANCH/CAN bus with standard differential signals,
ground signal needs to be connected to GND_ISO (Pin 12)
CL
GroundGND_DI/The reference ground signal for the 12V Digital
Input, which is also the return path for the DI
GND_DOThe reference ground signal of the digital output, which is also the return path of the DO
CGThe reference ground signal for CAN
+ +### DI(数字输入)的连接概述: + +您可以按照下图所示进行DI的连接。最好为DI线添加上串联电阻。这里我们已经测试将一个4.7kΩ电阻连接到DI1引脚。 + +
+ +### DI使用说明 + +您需要在DI线上输入12V的电压才能被检测为输入。 + +- **步骤 1:** 按照上图所示连接到**DI1引脚**,并输入**12V**。 + +- **步骤 2:** 按照以下步骤打开DI1的GPIO: + +```sh +sudo su +cd /sys/class/gpio +echo 440 > export +cd PQ.05 +``` + +:::注意 +您可以参考**DI/DO引脚分配表**查找GPIO编号和BGA编号。在上面的例子中,DI1引脚的GPIO编号为440,BGA编号为PQ.05。 +::: + +- **步骤 3:** 执行以下命令以检查DI线状态: + +```sh +cat value +``` + +如果输出0,则表示有12V输入。如果输出1,则表示没有输入电压。 + +### DO(数字输出)的连接概述: + +您可以按照下面的图示进行DO的连接。最好为DO线加上串联电阻。这里我们已经测试使用一个4.7kΩ电阻: + +
+ +### DO使用说明 + +在此,您需要按照上面的图示连接一个负载。如果您有万用表,则最简单的测试方法是连接一个万用表,否则请连接一个最大电压不超过40V的负载。 + +- **步骤 1:** 按照上图所示连接到**DO1引脚**,并输入**最大40V**。 + +- **步骤 2:** 按照以下步骤打开DO1的GPIO: + +```sh +sudo su +cd /sys/class/gpio +echo 463 > export +cd PT.06 +echo out > direction +``` + +:::注意 +您可以参考**DI/DO引脚分配表**查找GPIO编号和BGA编号。在上面的例子中,DO1引脚的GPIO编号为463,BGA编号为PT.06。 +::: + +- **步骤 3:** 执行以下命令以打开该引脚: + +```sh +echo 1 > value +``` + +如果负载锁定开启,或者万用表输出您输入的电压,则测试正确运行 + +## CAN + +reComputer Industrial具有支持5Mbps的CAN FD(控制器区域网络灵活数据速率)协议的CAN接口。CAN接口使用电容隔离进行隔离,从而提供出色的EMI保护,并确保在工业和自动化应用中进行可靠的通信。默认情况下安装了120Ω的终端电阻器,您可以使用GPIO切换此电阻器的开关。 + +注意: CAN接口使用隔离电源,这意味着连接到CAN接口的外部设备的地信号应连接到CG引脚。 + +### USB转CAN适配器的连接概述: + +要测试和连接CAN总线,请按照下面的方式将USB转CAN适配器连接到板子上的CAN接口上: + +
+ +在这里,我们使用我们Bazaar上提供的[USB to CAN Analyzer Adapter with USB Cable](https://www.seeedstudio.com/USB-CAN-Analyzer-p-2888.html) + +### USB转CAN适配器的使用说明: + +- **步骤 1:** 从制造商的网站下载您使用的USB转CAN适配器的驱动程序,并安装它。在我们的情况下,根据我们使用的适配器,驱动程序可以在以下位置找到:[这](https://github.com/SeeedDocument/USB-CAN-Analyzer/tree/master/res/Driver/driver%20for%20USBCAN(CHS40)/windows-driver) + +- **步骤 2:** 有些适配器还配备了必要的PC软件,以便与CAN设备通信。在我们的情况下,根据我们使用的适配器,我们已经下载并安装了可以在以下位置找到的软件:[这](https://github.com/SeeedDocument/USB-CAN-Analyzer/tree/master/res/Program) + +- **步骤 3:** 在reComputer Industrial上打开终端窗口,并执行以下命令配置和启用CAN接口: + +```sh +sudo modprobe mttcan +sudo ip link set can0 type can bitrate 125000 +sudo ip link set can0 up +``` + +- **步骤 4:** 在终端上输入**ifconfig**,您会看到已启用CAN接口: + +
+ +- **步骤 5:** 打开之前安装的CAN软件。我们将打开根据我们使用的CAN适配器安装的软件。 + +
+ +- **步骤 6:** 将USB转CAN适配器连接到PC上,并通过在Windows搜索栏中进行搜索打开**设备管理器**。现在,您会在**端口(COM和LPT)**下看到已连接的适配器。在这里列出串口。根据下面的图像,串口为**COM9** + +
+ +- **步骤 7:** 打开CAN软件,单击**COM**部分旁边的**刷新**,然后单击下拉菜单并根据连接的适配器选择串行端口。将**COM bps**保持默认设置,然后单击**打开**。 + +
+ +- **步骤 8:** 将**模式**和**CAN bps**保持默认设置,将**类型**更改为**标准帧**,然后单击**设置及启动**。 + +
+ +- **步骤 9:** 在reComputer Industrial上,执行以下命令向PC发送CAN信号: + +```sh +cansend can0 123#abcdabcd +``` + +现在,您将会看到上述信号被软件接收并显示如下。 + +
+ +- **步骤 10:** 在reComputer Industrial上,执行以下命令等待接收来自PC的CAN信号。 + +```sh +candump can0 & +``` + +- **步骤 11:** 在CAN软件上,点击“发送单帧”。 + +
+ +现在,您将会看到reComputer Industrial已接收到该数据,如下所示: + +
+ +### reTerminal DM的连接概览 + +如果您拥有一台[reTerminal DM](https://www.seeedstudio.com/reTerminal-DM-p-5616.html),你就可以直接与其通信,因为reTerminal DM也有CAN接口。 + +请参照下图通过CAN连接reComputer Industrial和reTerminal DM: + +
+ +### reTerminal DM的使用说明 + +- **步骤 1:** 在使用reTerminal DM之前,请访问[wiki](https://wiki.seeedstudio.com/reterminal-dm)以开始使用reTerminal DM。 + +- **步骤 2:** 在reComputer Industrial上打开一个终端窗口,并执行以下命令以配置并启用CAN接口 + +```sh +sudo modprobe mttcan +sudo ip link set can0 type can bitrate 125000 +sudo ip link set can0 up +``` + +- **步骤 3:** 在reTerminal DM上打开一个终端窗口,并执行以下命令以配置并启用CAN接口 + +```sh +sudo modprobe mttcan +sudo ip link set can0 type can bitrate 125000 +sudo ip link set can0 up +``` + +- **步骤 4:** 如果在两台设备上都输入**ifconfig**,您将会看到CAN接口已启用 。 + +
+ +- **步骤 5:** 在reTerminal DM上执行以下操作以等待从reComputer Industrial接收CAN信号 + +```sh +candump can0 & +``` + +- **步骤 6:** 在reComputer Industrial上执行以下命令以向reTerminal Industrial发送CAN信号 + +```sh +cansend can0 123#abcdabcd +``` + +现在,您将会看到reTerminal DM已接收到该CAN信号,如下所示: + +
+ +- **步骤 7:** 重复**步骤5和步骤6**,但交换设备。使用reTerminal DM发送CAN信号,使用reComputer Industrial接收CAN信号。 + +## RS232/ RS422/ RS485 接口 + +reComputer Industrial有一个DB9连接器,支持RS232,RS422和RS485通信协议,并且设备板上还有一个DIP开关面板可用于在不同的接口选项之间进行切换。 + +您可以看到如下所示的 DIP 开关面板: + +
+ +:::注意 +在使用 DIP 开关面板之前,请确保先移除黄色塑料盖板。 +::: + +下面的表格解释了基于 DIP 开关位置的不同模式: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ MODE_0MODE_1MODE_2模式状态
Image000RS-422 Full Duplex1T/1R RS-422
Image001Pure RS-2323T/5R RS-232
Image010RS-485 Half Duplex1T/1R RS-485 ,TX ENABLE Low Active
Image011RS-485 Half Duplex1T/1R RS-485 ,TX ENABLE High Active
Image100RS-422 Full Duplex1T/1R RS-422 with termination resistor
Image101Pure RS-2321T/1R RS-232 co-exists with RS485
无需总线即可进行的应用
开关集成电路(用于特殊用途)
Image110RS-485 Half Duplex1T/1R RS-485 with termination resistor
TX ENABLE 低电平有效
Image111Low PowerAll I/O pins are High Impedance
关机
+ +:::注意 +开箱即用,开关的默认模式将设置为工厂预置的 RS485 010 模式。 +::: + +上述表格只考虑了 DIP 开关面板的前三个开关。然而,第四个开关的功能是切换斜率控制(slew rate),该控制器与数据传输速率直接相关。 + + + + + + + + + + + + + + + + + + + + +
+ 状态注意
Image1SLEW= Vcc
这种RS232 / RS422 / RS485多协议收发器限制了通信速率,如下所示:
RS-232:最大数据率为1.5Mbps
RS-485 / RS-422:最大数据率为10Mbps
实际的最大数据速率取决于所使用的Jetson SO使用情况。
Image0SLEW = GND
RS-232:最大数据率为250Kbps
RS-485 / RS-422:最大数据率为250Kbps。
+ +在此我们将使用 USB 转 RS232、RS485 和 RS422 适配器来测试接口。因此,在继续之前,您需要在您的 PC 上安装一个串行终端应用程序。这里我们建议您安装 **Putty**,它易于设置和使用。 + +- **步骤 1:** 访问 网页](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) 根据您的PC架构下载 Putty。 + +
+ +在这里,我们根据使用的PC选择了 X86 Windows 64位机器的 Putty。 + +- **步骤 2:** 打开下载的设置文件,并按照提示安装该应用程序。 + +### 通用连接概述 + +您可以参考DB9连接器的引脚编号和表格进行连接。 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MODE001/101000/100010/011/110
PINRS232RS422RS485
1 + TXD-Data-
2RXDTXD+Data+
3TXDRXD+ +
4 + RXD- +
5GNDGNDGND
6 + + +
7RTS + +
8CTS + +
9 + + +
+ +### RS232 连接概述 + +在这里,您可以使用 USB 转 RS232 适配器来测试接口。我们使用了 [UGREEN USB to RS232 Adapter](https://www.amazon.com/UGREEN-Converter-Adapter-Chipset-Windows/dp/B00QUZY4UG?th=1) 进行测试。 + +- **步骤 1:** 将板子关机 + +- **步骤 2:** 这里我们有两个选项来设置开关(DIP switches):001模式或101模式。每种模式对应的开关位置如下所示: + +
+ +- **步骤 3:** 将 USB 转 RS232 适配器连接到 DB9 连接器上。这里我们已经连接了上面提到的适配器。 + +
+ +- **步骤 4:** 将另一端连接到您计算机上的一个 USB 端口。 + +- **步骤 5:** 打开板子 + +### RS232 Usage + +- **步骤 1:** 您可能需要为所使用的适配器安装驱动程序,或者 Windows 将自动为您安装驱动程序。在 Windows 搜索中键入 **设备管理器**,以查看连接的适配器是否被识别为 COM 设备。 + +
+ +- **步骤 2:** 如果您无法看到适配器,则需要根据所使用的适配器安装驱动程序。通常,您可以在制造商的网站上找到这些驱动程序。对于我们使用的适配器,您可以访问 [页面](https://www.ugreen.com/pages/download),搜索 **20201** 作为型号,并相应地下载驱动程序。 + +- **步骤 3:** 在 PC 上打开 Putty,将 **终端** 部分并设置以下内容: + + - Local echo: Force on + - Local line editing: Force on + +
+ +- **步骤 4:** 选择 **会话**,在 **连接类型** 下选择 **串行**,根据在设备管理器中看到的串口号设置串口号,保持速度为默认值(9600),然后单击 **打开**。 + +
+ +- **步骤 4:** 在 reTerminal Industrial 终端窗口中,输入以下内容以从 reComputer 发送信号到 PC + +```sh +sudo chmod 777 /dev/ttyTHS0 +sudo echo "RS232 message from reComputer Industrial" > /dev/ttyTHS0 +``` + +现在你会看到这些消息在putty上显示 + +
+ +- **步骤 5:** 在 reTerminal Industrial 终端窗口中,输入以下内容以等待从 PC 接收信号: + +```sh +sudo cat /dev/ttyTHS0 +``` + +- **步骤 6:**在 Putty 中输入任何内容,按 **ENTER**,然后它将在 reComputer Industrial 终端窗口中显示。 + +
+ +### RS422 连接概述 + +在这里,您可以使用 USB 转 RS422 适配器来测试接口。我们使用了 [DTech USB to RS485 Adapter](https://www.amazon.com/Adapter-Serial-Terminal-Ferrite-Windows/dp/B08SM5MX8K) 进行测试。 + +- **步骤 1:** 将板子关机 + +- **步骤 2:** 这里我们有两个选项来设置开关(DIP switches):000模式或100模式。每种模式对应的开关位置如下所示: + +
+ +- **步骤 3:** 将 USB 转 RS422 适配器通过跳线或线材连接到 DB9 连接器上,如下所示。这里我们连接的是上述提到的适配器。 + +
+ +- **步骤 4:** 将另一端连接至您 PC 上的一个 USB 端口。 + +- **步骤 5:** 打开板子 + +### RS422 使用说明 + +- **步骤 1:** 您可能需要为所使用的适配器安装驱动程序,否则 Windows 将自动为您安装驱动程序。通过在 Windows 搜索栏中输入 **Device Manager** ,进入设备管理器,查看您是否可以将连接的适配器识别为一个 COM 设备。 + +
+ +- **步骤 2:** 如果您无法看到适配器,则需要根据您所使用的适配器安装驱动程序。通常情况下,您可以在制造商网站上找到这些驱动程序。对于我们正在使用的适配器,您可以通过[网页](https://www.dtechelectronics.com/front/downloads/downloadssearch/user_downloadscat_id/0/search_value/rs485) + +- **步骤 3:** 在 PC 上打开 Putty,选择“Terminal”选项卡,进行以下设置: + + - Local echo: Force on + - Local line editing: Force on + +
+ +- **步骤 4:** 选择 **Session**, 在 **Coonection type**下拉列表中选择 **Serial**, 根据**Device Manager**中显示的串口号设置相应的串口号,保持默认的波特率(9600),然后点击**Open**。 + +
+ +- **步骤 5:** 在 reTerminal industrial 终端窗口中输入以下内容,以便从 reComputer 发送信号到 PC。 + +```sh +sudo chmod 777 /dev/ttyTHS0 +sudo echo "RS422 message from reComputer Industrial" > /dev/ttyTHS0 +``` + +现在你会看到这条信息在Putty上显示 + +- **步骤 5:** 在 reTerminal industrial 终端窗口中输入以下内容,以便等待接收来自 PC 的信号。 + +```sh +sudo cat /dev/ttyTHS0 +``` + +- **步骤 6:** 在 Putty 中随便输入一些文字,按下“ENTER”键,这些文字将会显示在 reComputer industrial 终端窗口中。 + +### RS485 连接概述 + +在这里,您可以使用 USB 转 RS422 适配器来测试接口。我们在测试中使用了 [DTech USB 转 RS485 适配器](https://www.amazon.com/Adapter-Serial-Terminal-Ferrite-Windows/dp/B08SM5MX8K) + +- **步骤 1:** 关闭板子 + +- **步骤 2:** 这里有三个设置 DIP 开关的选项。可以是 010 模式、011 模式或者 110 模式。每种模式对应的开关位置如下所示: + +
+ +- **步骤 3:** 请按照下面所示的跳线线路图,将 USB 转 RS422 转换器通过跳线线连接到 DB9 连接器上。这里我们连接了上述提到过的适配器。 + +
+ +- **步骤 4:** 将另一端连接到您 PC 上的一个 USB 端口。 + +- **步骤 5:** 打开板子 + +### RS485 使用说明 + +- **步骤 1:** 您可能需要为所使用的适配器安装驱动程序,或者 Windows 将自动为您安装驱动程序。通过在 Windows 搜索栏中键入“Device Manager”,进入设备管理器,检查您是否可以将连接的适配器识别为一个 COM 设备。 + +
+ +- **步骤 2:** 如果您无法看到适配器,则需根据您所使用的适配器安装驱动程序。通常情况下,您可以在制造商的网站上找到这些驱动程序。对于我们正在使用的适配器,您可以访问 [这个页面](https://www.dtechelectronics.com/front/downloads/downloadssearch/user_downloadscat_id/0/search_value/rs485) + +- **步骤 3:** 在PC端打开putty, 选择 **Terminal** 选项并进行如下设置: + + - Local echo: Force on + - Local line editing: Force on + +
+ +- **步骤 4:** 选择 **Session**, 在 **Coonection type**下拉列表中选择 **Serial**,,根据**Device Manager**中显示的串口号设置相应的串口号,保持默认的波特率(9600),然后点击 **Open** + +
+ +- **步骤 4:** 在 reTerminal industrial 终端窗口中,输入以下命令,以将信号从 reComputer 发送到 PC: + +```sh +sudo su +cd /sys/class/gpio +echo 447 > export +cd PR.04 +echo out > direction +echo 0 > value +echo "RS485 message from reComputer Industrial" > /dev/ttyTHS0 +``` + +现在我们会看到信息在putty上显示 + +- **步骤 5:** 在 reTerminal industrial 终端窗口中,输入以下命令,以等待从 PC 接收信号: + +```sh +sudo su +cd /sys/class/gpio +echo 447 > export +cd PR.04 +echo out > direction +echo 1 > value +cat /dev/ttyTHS0 +``` + +- **步骤 6:** 在Putty输入任何东西,然后点击**ENTER** ,信息会在reComputer Industrial终端窗口中显示。 + +## 千兆以太网连接器 + +reComputer Industrial 上有两个千兆以太网(10/100/1000M)连接器,它们的功能不同: + +- 最左边的连接器直接连接到 Jetson 模块,可以提供 **PSE 802.3 af, 15W** 规格的 PoE 功能。这意味着您可以将 PoE IP 摄像机或任何其他 PoE 设备连接到此端口,为连接的设备提供电力。 +- 另一个连接器通过 PCIe 到以太网 (LAN7430-I/Y9X) 模块连接。 + +
+ +每个以太网端口都有 2 个 LED(绿色和黄色),分别表示以下内容: + +- 绿色 LED:只有在连接到 1000M 网络时才会点亮 +- 黄色 LED:显示网络活动状态 + +## USB + +reComputer Industrial 配备了 3 个 USB3.2 连接器,并拥有以下特性: +- 在双重叠加 USB 连接器上,上下 USB 端口共享一个限流集成电路,最大输出电流为 2.1A(单个也可以是 2.1A)。如果超过了 2.1A,则会进入过流保护状态。 +- 在双重叠加 USB 连接器旁边的单个 USB 连接器上,最大输出电流为 2.1A。如果超过了 2.1A,则会进入过流保护状态。 +- Orin NX 模块配备了 3 个 USB3.2,只有一个被用于 reComputer,并转换成 3 种方式。(USB3.1 TYPE-A x2 - J4 和 USB3.1 TYPE-A x1 - J3)。 +- 仅支持 USB Host,不支持设备模式。 +- 提供 5V 2.1A 电源。 +- 可热插拔。 + +### 使用说明 + +我们会解释如何对连接的 USB 闪存驱动器进行简单的基准测试。 + +- **步骤 1:** 通过执行下面的命令来检查写入速度: + +```sh +sudo dd if=/dev/zero of=/dev/$1 bs=100M count=10 conv=fdatasync +``` + +- **步骤 2:** 通过执行以下命令来检查读取速度。请确保在执行上面的写入速度命令后再执行此命令: + +```sh +sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches" +sudo dd if=/dev/$1 of=/dev/null bs=100M count=10 +``` + +## 可配置 LED + +板子上有一个绿色 LED,如下图所示。默认情况下,它作为显示设备正常运行的 LED。但是,您也可以通过系统编程来控制此 LED 开关。 + +
+ +### 使用说明 + +- **步骤 1:** 在终端窗口中输入以下命令,以访问绿色 LED: + +```sh +sudo -i +cd /sys/class/gpio +echo 318 > export +cd PCC.01 +echo out > direction +``` + +- **步骤 2:** 关闭LED: + +```sh +echo 0 > value +``` + +- **步骤 3:** 打开LED: + +```sh +echo 1 > value +``` + +如果您想结束使用LED,可以执行以下命令: + +```sh +cd .. +echo 318 > unexport +``` + +## 监控系统性能 + +我们可以使用 **jetson stats** 应用程序来监视系统组件的温度并检查其他系统详细信息,例如: + +- 查看 CPU、GPU、RAM 使用率。 +- 更改电源模式。 +- 设置为最大时钟频率。 +- 查看 JetPack 信息。 + +- **步骤 1:** 在 reComputer industrial 终端窗口中,输入以下命令 + +```sh +sudo apt update +sudo apt install python3-pip -y +sudo pip3 install jetson-stats +``` + +- **步骤 2:** 重启板子 + +```sh +sudo reboot +``` + +- **步骤 3:** 在终端中输入如下指令 + +```sh +jtop +``` + +现在 **jtop** 应用将会被打开,如下所示: + +
+ +- **步骤 4:** 在此您可以浏览应用程序的不同页面,探索所有功能! + +## WiFi 和 蓝牙 + +reComputer Industrial 在开箱时不具备 WiFi 和蓝牙功能。但是,板子上留有保留区域,以便将 WiFi / 蓝牙模块焊接到板子上。在这里,我们预留了支持 **BL-M8723DU1** 模块的空间。 + +### 连接概述 + +- **步骤 1:** 如果您想自己焊接 **BL-M8723DU1** 模块,您可以进行焊接。但是我们不建议这么做,因为如果在此过程中损坏了板子,那么保修将会失效。我们建议使用我们的专业服务来帮助您将该模块焊接到板子上,并通过发送电子邮件至 order@seeed.cc 来提出您的要求。 + +
+ +- **步骤 2:** 连接两个天线到板子上的两个天线连接器,一个用于 WiFi,一个用于蓝牙。在这里,您需要使用一个 IPX 连接器。 + +
+ +### 使用说明 + +- **步骤 1:** 打开板子电源,一旦设备进入 Ubuntu 桌面,请单击右上角的下拉菜单,导航到 `Settings > Wi-Fi`,切换标题栏上的按钮以启用 WiFi。之后选择一个 WiFi 网络,输入所需的密码并连接到该网络。 + +
+ +- **步骤 2:** 在同一窗口中,选择“Bluetooth”,切换标题栏上的按钮以启用蓝牙。之后选择一个蓝牙设备连接到它。 + +
+ +## TPM + +reComputer Industrial 配备了 TPM 接口,用于连接外部 TPM 模块。在这里,我们使用基于 Infineon SLB9670 的 TPM2.0 模块进行测试。 + +
+ +### 连接概述 + +按照下面的图示将 TPM 模块连接到 TPM 连接器上: + +
+ +### 使用说明 + +通过执行以下命令来检查 TPM 模块是否被正确加载: + +```sh +sudo dmesg | grep TPM +ls /dev/tpm* -l +``` + +然后你会看到如下输出 + +
+ +## reComputer Industrial最优性能表现 + +如果您想在 reComputer industrial 版上启用最大性能,请按照以下说明操作: + +- **步骤 1:** 输入以下命令以启用最大功率模式: + +```sh +sudo nvpmodel -m 0 +``` + +
+ +这里它会要求输入 **YES** 以重新启动板子。 + +- **步骤 2:** 板子启动后,输入以下命令以将 CPU 时钟频率设置为最大频率。 + +```sh +sudo jetson_clocks +``` + +## GPIO 表 + +您可以访问 reComputer industrial 版的 GPIO 表格,以熟悉所有引脚映射。 + +在终端中执行以下命令即可进入 GPIO 表格: + +```sh +sudo cat /sys/kernel/debug/gpio +``` + +然后,您将看到以下输出: + +```sh +gpiochip3: GPIOs 289-304, parent: i2c/1-0021, 1-0021, can sleep: + gpio-289 (wl_dis |gpio_xten_pin@0 ) out hi + gpio-290 (hst_wake_wl |gpio_xten_pin@1 ) out hi + gpio-291 (wl_wake_hst |gpio_xten_pin@2 ) out hi ACTIVE LOW + gpio-292 (bt_dis |gpio_xten_pin@3 ) out hi + gpio-293 (hst_wake_bt |gpio_xten_pin@4 ) out hi + gpio-294 (bt_wake_hst |gpio_xten_pin@5 ) out hi ACTIVE LOW + gpio-295 (spi0_rst_3v3 |gpio_xten_pin@6 ) out lo ACTIVE LOW + gpio-296 (gpio_pin7 |gpio_xten_pin@7 ) out lo ACTIVE LOW + gpio-297 (can_120R_en ) + gpio-298 (M2B_PCIe_rst ) + gpio-299 (USB_HUB_rst |gpio_xten_pin@10 ) out hi + gpio-300 (PCIe_ETH_rst ) + gpio-301 (M2B_WOWWAN |gpio_xten_pin@12 ) out hi ACTIVE LOW + gpio-302 (M2B_DPR_3V3 |gpio_xten_pin@13 ) out hi ACTIVE LOW + gpio-303 (SIM_MUX_SEL |gpio_xten_pin@14 ) out hi ACTIVE LOW + gpio-304 (gpio_pin15 |gpio_xten_pin@15 ) out hi ACTIVE LOW + +gpiochip2: GPIOs 305-334, parent: platform/c2f0000.gpio, tegra194-gpio-aon: + gpio-305 (PAA.00 ) + gpio-306 (PAA.01 ) + gpio-307 (PAA.02 ) + gpio-308 (PAA.03 ) + gpio-309 (PAA.04 ) + gpio-310 (PAA.05 ) + gpio-311 (PAA.06 ) + gpio-312 (PAA.07 ) + gpio-313 (PBB.00 ) + gpio-314 (PBB.01 ) + gpio-315 (PBB.02 ) + gpio-316 (PBB.03 ) + gpio-317 (PCC.00 ) + gpio-318 (PCC.01 |pwr ) out hi + gpio-319 (PCC.02 ) + gpio-320 (PCC.03 |mux ) out hi + gpio-321 (PCC.04 ) + gpio-322 (PCC.05 ) + gpio-323 (PCC.06 ) + gpio-324 (PCC.07 ) + gpio-325 (PDD.00 ) + gpio-326 (PDD.01 ) + gpio-327 (PDD.02 ) + gpio-328 (PEE.00 ) + gpio-329 (PEE.01 ) + gpio-330 (PEE.02 ) + gpio-331 (PEE.03 ) + gpio-332 (PEE.04 |power-key ) in hi IRQ ACTIVE LOW + gpio-333 (PEE.05 ) + gpio-334 (PEE.06 ) +gpiochip1: GPIOs 335-503, parent: platform/2200000.gpio, tegra194-gpio: + gpio-335 (PA.00 ) + gpio-336 (PA.01 ) + gpio-337 (PA.02 ) + gpio-338 (PA.03 ) + gpio-339 (PA.04 ) + gpio-340 (PA.05 ) + gpio-341 (PA.06 ) + gpio-342 (PA.07 ) + gpio-343 (PB.00 ) + gpio-344 (PB.01 ) + gpio-345 (PC.00 ) + gpio-346 (PC.01 ) + gpio-347 (PC.02 ) + gpio-348 (PC.03 ) + gpio-349 (PC.04 ) + gpio-350 (PC.05 ) + gpio-351 (PC.06 ) + gpio-352 (PC.07 ) + gpio-353 (PD.00 ) + gpio-354 (PD.01 ) + gpio-355 (PD.02 ) + gpio-356 (PD.03 ) + gpio-357 (PE.00 ) + gpio-358 (PE.01 ) + gpio-359 (PE.02 ) + gpio-360 (PE.03 ) + gpio-361 (PE.04 ) + gpio-362 (PE.05 ) + gpio-363 (PE.06 ) + gpio-364 (PE.07 ) + gpio-365 (PF.00 ) + gpio-366 (PF.01 ) + gpio-367 (PF.02 ) + gpio-368 (PF.03 ) + gpio-369 (PF.04 ) + gpio-370 (PF.05 ) + gpio-371 (PG.00 |force-recovery ) in hi IRQ ACTIVE LOW + gpio-372 (PG.01 ) + gpio-373 (PG.02 |fixed-regulators:reg) out lo + gpio-374 (PG.03 |wifi-enable ) out hi + gpio-375 (PG.04 ) + gpio-376 (PG.05 ) + gpio-377 (PG.06 ) + gpio-378 (PG.07 ) + gpio-379 (PH.00 ) + gpio-380 (PH.01 ) + gpio-381 (PH.02 ) + gpio-382 (PH.03 ) + gpio-383 (PH.04 ) + gpio-384 (PH.05 ) + gpio-385 (PH.06 ) + gpio-386 (PH.07 ) + gpio-387 (PI.00 ) + gpio-388 (PI.01 ) + gpio-389 (PI.02 ) + gpio-390 (PI.03 ) + gpio-391 (PI.04 ) + gpio-392 (PJ.00 ) + gpio-393 (PJ.01 ) + gpio-394 (PJ.02 ) + gpio-395 (PJ.03 ) + gpio-396 (PJ.04 ) + gpio-397 (PJ.05 ) + gpio-398 (PK.00 ) + gpio-399 (PK.01 ) + gpio-400 (PK.02 ) + gpio-401 (PK.03 ) + gpio-402 (PK.04 ) + gpio-403 (PK.05 ) + gpio-404 (PK.06 ) + gpio-405 (PK.07 ) + gpio-406 (PL.00 ) + gpio-407 (PL.01 ) + gpio-408 (PL.02 ) + gpio-409 (PL.03 ) + gpio-410 (PM.00 ) + gpio-411 (PM.01 |hdmi2.0_hpd ) in lo IRQ + gpio-412 (PM.02 ) + gpio-413 (PM.03 ) + gpio-414 (PM.04 ) + gpio-415 (PM.05 ) + gpio-416 (PM.06 ) + gpio-417 (PM.07 ) + gpio-418 (PN.00 |fixed-regulators:reg) out lo + gpio-419 (PN.01 ) + gpio-420 (PN.02 ) + gpio-421 (PO.00 ) + gpio-422 (PO.01 ) + gpio-423 (PO.02 ) + gpio-424 (PO.03 ) + gpio-425 (PO.04 ) + gpio-426 (PO.05 ) + gpio-427 (PP.00 ) + gpio-428 (PP.01 ) + gpio-429 (PP.02 ) + gpio-430 (PP.03 ) + gpio-431 (PP.04 ) + gpio-432 (PP.05 ) + gpio-433 (PP.06 ) + gpio-434 (PP.07 ) + gpio-435 (PQ.00 ) + gpio-436 (PQ.01 ) + gpio-437 (PQ.02 ) + gpio-438 (PQ.03 ) + gpio-439 (PQ.04 ) + gpio-440 (PQ.05 ) + gpio-441 (PQ.06 ) + gpio-442 (PQ.07 ) + gpio-443 (PR.00 ) + gpio-444 (PR.01 |phy_reset ) out hi + gpio-445 (PR.02 ) + gpio-446 (PR.03 ) + gpio-447 (PR.04 ) + gpio-448 (PR.05 ) + gpio-449 (PS.00 ) + gpio-450 (PS.01 ) + gpio-451 (PS.02 ) + gpio-452 (PS.03 ) + gpio-453 (PS.04 ) + gpio-454 (PS.05 ) + gpio-455 (PS.06 ) + gpio-456 (PS.07 ) + gpio-457 (PT.00 ) + gpio-458 (PT.01 ) + gpio-459 (PT.02 ) + gpio-460 (PT.03 ) + gpio-461 (PT.04 ) + gpio-462 (PT.05 ) + gpio-463 (PT.06 ) + gpio-464 (PT.07 ) + gpio-465 (PU.00 ) + gpio-466 (PV.00 ) + gpio-467 (PV.01 ) + gpio-468 (PV.02 ) + gpio-469 (PV.03 ) + gpio-470 (PV.04 ) + gpio-471 (PV.05 ) + gpio-472 (PV.06 ) + gpio-473 (PV.07 ) + gpio-474 (PW.00 ) + gpio-475 (PW.01 ) + gpio-476 (PX.00 ) + gpio-477 (PX.01 ) + gpio-478 (PX.02 ) + gpio-479 (PX.03 ) + gpio-480 (PX.04 ) + gpio-481 (PX.05 ) + gpio-482 (PX.06 ) + gpio-483 (PX.07 ) + gpio-484 (PY.00 ) + gpio-485 (PY.01 ) + gpio-486 (PY.02 ) + gpio-487 (PY.03 ) + gpio-488 (PY.04 ) + gpio-489 (PY.05 ) + gpio-490 (PY.06 ) + gpio-491 (PY.07 ) + gpio-492 (PZ.00 ) + gpio-493 (PZ.01 |vbus ) in hi IRQ ACTIVE LOW + gpio-494 (PZ.02 ) + gpio-495 (PZ.03 ) + gpio-496 (PZ.04 ) + gpio-497 (PZ.05 ) + gpio-498 (PZ.06 |cs_gpio ) out lo + gpio-499 (PZ.07 |cs_gpio ) out hi + gpio-500 (PFF.00 ) + gpio-501 (PFF.01 ) + gpio-502 (PGG.00 ) + gpio-503 (PGG.01 ) + +gpiochip0: GPIOs 504-511, parent: i2c/4-003c, max77620-gpio, can sleep: + gpio-510 ( |gpio_default ) in hi + gpio-511 ( |gpio_default ) in hi +``` + +## 技术支持 + +如遇到问题,请提交到 [论坛](https://forum.seeedstudio.com/). + +
+

+
\ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_J40_J30_Hardware_Interfaces_Usage.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_J40_J30_Hardware_Interfaces_Usage.md new file mode 100644 index 000000000000..5472a63efbd2 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_J40_J30_Hardware_Interfaces_Usage.md @@ -0,0 +1,1796 @@ +--- +description: reComputer Industrial J40, J30 系列硬件和接口使用 +title: reComputer Industrial J40, J30 系列硬件和接口使用 +tags: + - reComputer Industrial +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_Industrial_J40_J30_Hardware_Interfaces_Usage +last_update: + date: 05/16/2023 + author: Lakshantha +--- + +这页Wiki介绍了reComputer Industrial J4012,J4011,J3011和J3010上的各种硬件和接口,以及如何使用它们来扩展您的项目创意。 + +## 拆解 reComputer Industrial + +首先我们最好先拆下外层外壳以便访问所有接口。按照下图所示,拧下背面的4颗螺丝,以拆解 reComputer Industrial。 + +
+ +## CSI 摄像头接口 + +reComputer Industrial 配备了 **2x 2-lane 15pin MIPI CSI camera connectors** 并且支持如下摄像头。 + +- IMX219 cameras + + - [Raspberry Pi Camera V2](https://www.seeedstudio.com/Raspberry-Pi-Camera-Module-V2.html) + - [IMX219-130 8MP Camera with 130° FOV](https://www.seeedstudio.com/IMX219-130-Camera-130-FOV-Applicable-for-Jetson-Nano-p-4606.html) + - [IMX219-160 8MP Camera with 160° FOV](https://www.seeedstudio.com/IMX219-160-Camera-160-FOV-Applicable-for-Jetson-Nano-p-4603.html) + - [IMX219-200 8MP Camera with 200° FOV](https://www.seeedstudio.com/IMX219-200-Camera-200-FOV-Applicable-for-Jetson-Nano-p-4609.html) + - [IMX219-77 8MP Camera with 77° FOV](https://www.seeedstudio.com/IMX219-77-Camera-77-FOV-Applicable-for-Jetson-Nano-p-4608.html) + - [IMX219 M12/CS mount CMOS Camera Module](https://www.seeedstudio.com/IMX-219-CMOS-camera-module-M12-and-CS-camera-available-p-5372.html) + - [IMX219-83 8MP 3D Stereo Camera Module](https://www.seeedstudio.com/IMX219-83-Stereo-Camera-8MP-Binocular-Camera-Module-Depth-Vision-Applicable-for-Jetson-Nano-p-4610.html) + - [IMX219-77IR 8MP IR Night Vision Camera with 77° FOV](https://www.seeedstudio.com/IMX219-77IR-Camera-77-FOV-Infrared-Applicable-for-Jetson-Nano-p-4607.html) + - [IMX219-160IR 8MP Camera with 160° FOV](https://www.seeedstudio.com/IMX219-160IR-Camera160-FOV-Infrared-Applicable-for-Jetson-Nano-p-4602.html) + - [IMX219 M12/CS mount CMOS Camera Module](https://www.seeedstudio.com/IMX-219-CMOS-camera-module-M12-and-CS-camera-available-p-5372.html) + +- IMX477 cameras + + - [Raspberry Pi High Quality Camera](https://www.seeedstudio.com/Raspberry-Pi-High-Quality-Cam-p-4463.html) + - [Raspberry Pi HQ Camera - M12 mount](https://www.seeedstudio.com/Raspberry-Pi-HQ-Camera-M12-mount-p-5578.html) + - [High Quality Camera for Raspberry Pi](https://www.seeedstudio.com/High-Quality-Camera-For-Raspberry-Pi-Compute-Module-Jetson-Nano-p-4729.html) + +### 连接概述 + +这里的2个CSI摄像头连接器标记为 **CAM0 and CAM1**。 您可以将一个摄像头连接到任意一个连接器,也可以同时将两个摄像头分别连接到两个连接器上。 + +- **步骤 1:** 轻轻地拉出CSI连接器上的黑色锁扣 + +
+ +- **步骤 2:** 将15针排线插入连接器,确保gold fingers朝下 + +
+ +- **步骤 3:** 推入黑色锁扣,将排线固定到位。 + +
+ +### 使用方法: + +首先,您需要配置板子以加载适用于您将使用的特定摄像头的驱动程序。对于此JetPack系统,内置了支持IMX219和IMX477摄像头的工具 + +- **步骤 1:** 打开终端并允许以下代码: + +```sh +sudo /opt/nvidia/jetson-io/jetson-io.py +``` + +- **步骤 2:** 选择 **Configure Jetson Nano CSI Connector** + +
+ +- **步骤 3:** 选择 **Configure for compatible hardware** + +
+ +- **步骤 4:** 选择你想使用的摄像头 + +
+ +- **步骤 5:** 选择 **Save pin changes** + +
+ +- **步骤 6:** 选择 **Save and reboot to reconfigure pins** + +
+ +- **步骤 7:** 按下键盘上的任意键,设备将重新启动并应用摄像头配置。 + +
+ +您可以通过两种不同的方法使用CSI摄像头。根据摄像头连接器,按照以下命令操作。 + +- 方法 1: + +对于 CAM0 端口 + +```sh +nvgstcapture-1.0 sensor-id=0 +``` + +对于 CAM1 端口 + +```sh +nvgstcapture-1.0 sensor-id=1 +``` + +:::注意 +如果你想要改变更多摄像头的设置,可以输入 **"nvgstcapture-1.0 --help"** 去获得所有可配置选项 +::: + +- 方法 2: + +对于 CAM0 端口 + +```sh +gst-launch-1.0 nvarguscamerasrc sensor-id=0 sensor-mode=0 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=20/1, format=NV12' ! nvvidconv ! xvimagesink +``` + +对于 CAM1 端口 + +```sh +gst-launch-1.0 nvarguscamerasrc sensor-id=1 sensor-mode=0 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=20/1, format=NV12' ! nvvidconv ! xvimagesink +``` + +:::注意 +如果你想修改更多关于摄像头的设置, 你可以修改例如 **width, height, framerate, format**等的参数。 +::: + +## RTC + +reComputer Industrial配备了两种不同的方式去连接RTC电池 + +### 连接概述 + +- 方法 1: + +将 **3V CR1220 纽扣电池** 插入板子上的RTC插座,如下所示。确保电池 **正极 (+)** 朝上。 + +
+ +- 方法 2: + +将**带有JST连接器的 3V CR2302 纽扣** 连接到板子上的2针1.25mm JST插座,如下所示。 + +
+ +### 使用方法: + +- **步骤 1:** 按照上述提到的方式连接RTC电池。 + +- **步骤 2:** 打开 reComputer Industrial + +- **步骤 3:** 在Ubuntu桌面上,点击右上角的下拉菜单,导航到 `Settings > Date & Time`, 通过以太网电缆连接到网络,然后选择 **Automatic Date & Time** 以自动获取日期和时间。 + +
+ +:::注意 +如果您尚未通过以太网连接到互联网,您可以在此手动设置日期/时间 +::: + +- **步骤 4:** 打开终端窗口,执行以下命令以检查硬件时钟时间 + +```sh +sudo hwclock +``` + +您将看到类似于以下内容的输出,其中显示的日期/时间并不正确 + +
+ +- **步骤 5:** 通过输入以下命令,将硬件时钟时间更改为当前系统时钟时间: + +```sh +sudo hwclock --systohc +``` + +- **步骤 6:** 拔掉所有已连接的以太网电缆,以确保系统不会从互联网抓取时间,然后重新启动板子。 + +```sh +sudo reboot +``` + +- **步骤 7:** 检查硬件时钟时间以验证即使设备已关闭,日期/时间仍保持不变: + +现在,我们将创建一个脚本,以便在每次启动时始终从硬件时钟同步系统时钟: + +- **步骤 8:** 您可以使用任何文本编辑器创建一个新的 Shell 脚本文件。这里我们使用 **vi** 文本编辑器 + +```sh +sudo vi /usr/bin/hwtosys.sh +``` + +- **步骤 9:** 进入**插入模式**,按下 **i** 键,然后复制并粘贴以下内容到文件中 + +```sh +#!/bin/bash + +sudo hwclock --hctosys +``` + +- **步骤 10:** 修改脚本为可执行文件 + +```sh +sudo chmod +x /usr/bin/hwtosys.sh +``` + +- **步骤 11:** 创建一个 Systemd 文件 + +```sh +sudo nano /lib/systemd/system/hwtosys.service +``` + +- **步骤 12:** 请将以下内容添加到 Systemd 服务文件中 + +```sh +[Unit] +Description=Change system clock from hardware clock + +[Service] +ExecStart=/usr/bin/hwtosys.sh + +[Install] +WantedBy=multi-user.target +``` + +- **步骤 13:** 重新加载 Systemd 守护进程 + +```sh +sudo systemctl daemon-reload +``` + +- **步骤 14:** 启用新创建的服务开机自启并启动服务 + +```sh +sudo systemctl enable hwtosys.service +sudo systemctl start hwtosys.service +``` + +- **步骤 15:** 验证脚本作为 Systemd 服务正在运行 + +```sh +sudo systemctl status hwtosys.service +``` + +- **步骤 16:** 重新启动板子。此时,你会发现系统时间已经正确设置并自动同步到硬件时钟上。 + +## M.2 Key M + +reComputer Industrial 出厂时包括一个连接到 M.2 Key M 插槽的 128GB SSD,预装有 JetPack 系统 + +### 连接概述 + +如果您想要更换机器中预装的 SSD 并安装新的 SSD,可以按照以下步骤进行操作。 这里我们仅建议使用容量为 [128GB](https://www.seeedstudio.com/M-2-2280-SSD-128GB-p-5332.html), [256GB](https://www.seeedstudio.com/NVMe-M-2-2280-SSD-256GB-p-5333.html) 和 [512GB](https://www.seeedstudio.com/NVMe-M-2-2280-SSD-512GB-p-5334.html) Seeed SSD ,因为我们只测试过这些 SSD。此外,这个接口支持 PCIe Gen4.0 SSD。 + +- **步骤 1:** 拆卸预安装的硬盘螺丝 + +
+ +- **步骤 2:** 将原装SSD从连接处取下 + +
+ +- **步骤 3:** 插入新的 SSD 并拧紧螺丝 + +### 使用方法 + +接下来,我们将为您解答如何对连接的 SSD 进行简单的基准测试。 + +- **步骤 1:** 通过运行以下指令测试写入速度 + +```sh +sudo dd if=/dev/zero of=/home/nvidia/test bs=1M count=512 conv=fdatasync +``` + +- **步骤 2:** 通过运行以下指令测试读入速度 ,确保运行完上述测试写入速度的指令后再运行本指令。 + +```sh +sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches" +sudo dd if=/home/nvidia/test of=/dev/null bs=1M count=512 +``` + +## mini PCIe + +reComputer Industrial 配备了一个 mini PCIe 插槽,可以支持 4G 模块和 LoRa 模块。然而,您一次只能连接一个 4G 模块或一个 LoRa 模块。 + +### 4G模块连接概述 + +目前板子支持 EC25EUXGA 和 EC20CEHCLG 模块. + +- **步骤 1:** 请关闭板子电源如果板子开启着 + +- **步骤 2:** 移除配件中的支撑垫。 当你使用 M.2 Key B 接口时才需要此支撑垫。 + +
+ +- **步骤 3:** 将 4G 模块插入 mini PCIe 槽中,使用预装的螺钉,将其拧到两个孔上以确保 4G 模块稳固插入 + +
+ +- **步骤 4:** 将天线插接到标有 **MAIN** 的天线连接器上。在这里,需要使用 IPEX 连接器。 + +
+ +- **步骤 5:** 将支持 4G 的 Nano SIM 卡插入板上的 SIM 卡槽中,确保 SIM 卡底部的金属表面朝下。请将 SIM 卡插入到底部,以使其击中内部弹簧后会反弹并锁定在位 + +
+ +:::注意 +如果你想要取下SIM卡, 请将卡向里按压后,其会被弹簧弹出。 +::: + +- **步骤 6:** 在 **J8 (Control and UART) Header**的 **SIM_MUX_SEL** 和 **GND**引脚之间添加一条跳线 + +
+ +- **步骤 7:** 打开板子电源 + +### 4G模块使用说明 - 测试拨号 + +使用EC25模块时,模块将自动启动并准备就绪。然而,使用EC20模块时,您需要重置该模块才能正常工作。 + +- **步骤 1:** 如果您正在使用EC25模块,则可以跳过此步骤。但是,如果您正在使用EC20模块,则需要输入以下命令来访问GPIO309引脚,该引脚负责重置4G模块。 + +```sh +sudo su +cd /sys/class/gpio +echo 309 > export +cd gpio309 +echo out > direction +echo 1 > value +``` + +对于EC25模块,在板子启动后,LED2会立即亮起绿色。而对于EC20模块,通过上述步骤重置模块后,LED2将会亮起绿色。 + +
+ +- **步骤 2:** 安装 minicom + +```sh +sudo apt update +sudo apt install minicom -y +``` + +- **步骤 3:** 进入已连接的4G模块的串行控制台,以便我们可以输入AT命令并与4G模块进行交互。 + +```sh +sudo minicom -D /dev/ttyUSB2 -b 115200 +``` + +- **步骤 4:** 按下**Ctrl+A**,然后按下**E**,以开启本地回显功能 + +- **步骤 5:** 输入命令**"AT"**,然后按回车键。如果您看到响应为“OK”,则说明4G模块正常工作。 + +
+ +- **步骤 6:** 输入命令**"ATI"**,以检查模块信息。 + +
+ +- **步骤 7:** 若要测试模块,请输入以下命令来拨打另一个电话号码: + +```sh +ATD; +``` + +然后你会看到如下输出 + +
+ +如果输入的电话号码可以接收来电,则说明模块正在按预期工作。 + +### 4G模块使用说明 - 连接互联网 + +#### EC25模块 + +如果你使用EC25模块,请跟随以下步骤 + +- **步骤 1:** 在完成上面所述的打开4G模块的串行控制台之后(4G模块使用说明-测试拨号部分),执行以下命令来连接互联网。在此将**YOUR_APN**替换为您的网络运营商的APN。 + +```sh +AT+CGDCONT=1,"IP","YOUR_APN" +``` + +
+ +成功连接后,它应该会输出**OK**,如上面的图像所示。 + +- **步骤 2:** 执行以下命令来重新启动4G模块: + +```sh +AT+CFUN=1,1 +``` + +现在,您将会失去对串行终端上4G模块的连接。 + +- **步骤 3:** 按下**CTRL + A**,然后按**Q**来关闭**minicom**。 + +- **步骤 4:** 输入**ifconfig**,然后会在**usb0**接口上看到一个IP地址。 + +
+ +- **步骤 5:** 您可以尝试使用以下方法对一个网站进行ping测试,以检查是否有互联网连接: + +```sh +ping -I usb0 www.bing.com -c 5 +``` + +
+ +#### EC20模块 + +如果你使用EC20模块,请跟随以下步骤 + +- **步骤 1:** 如果您已经按照前面的步骤(4G模块使用说明-测试拨号部分)重置了EC20模块,则可以跳过此步骤。但是,如果您还没有执行重置,请现在执行重置。 + +- **步骤 2:** 进入4G模块的串行控制台,并输入以下命令将其设置为ECM模式: + +```sh +AT+QCFG="usbnet",1 +``` + +- **步骤 3:** 重置4G模块。 + +- **步骤 4:** 在4G模块控制台内,执行以下命令连接到互联网。在此将 **YOUR_APN** 替换为您的网络运营商的APN。 + +```sh +AT+CGDCONT=1,"IP","YOUR_APN" +``` + +- **步骤 6:** 输入**ifconfig**,然后在**usb1**接口上看到一个IP地址。 + +
+ +- **步骤 7:** 您可以尝试使用以下方法对一个URL进行ping测试,以检查是否有互联网连接: + +
+ +### LoRa模块连接概述。 + +目前,此板支持WM1302 SPI模块。您可以使用我们的Bazaar上 [美版](https://www.seeedstudio.com/WM1302-LoRaWAN-Gateway-Module-SPI-US915-SKY66420-p-5455.html) 或 [欧版](https://www.seeedstudio.com/WM1302-LoRaWAN-Gateway-Module-SPI-EU868-p-4889.html) + +- **步骤 1:** 如果板子已经开启,请关闭它。 + +- **步骤 2:** 将LoRa模块滑入mini PCIe插槽,并使用预安装的螺丝将其固定在2个孔上,以确保4G模块处于正确的位置。 + +
+ +- **步骤 3:** 将天线连接到天线接头上。在这里,您需要使用IPEX连接器。 + +
+ +:::注意 +确保**J8(控制和UART)标头**上的**SIM_MUX_SEL**引脚和**GND**引脚之间没有跳线。这个跳线只在使用4G模块时需要。 +::: + +- **步骤 4:** 打开板子电源 + +### LoRa模块使用说明 - 测试 LoRa RF + +当连接LoRa模块时,您会看到模块上的绿色和蓝色LED灯亮起。 + +
+ +- **步骤 1:** 输入以下命令以检查系统是否检测到LoRa模块: + +```sh +i2cdetect -r -y 7 +``` + +如果您看到如下输出,则系统已检测到该模块: + +
+ +- **步骤 2:** 输入以下命令编译和构建LoRa信号传输工具: + +```sh +git clone https://github.com/lakshanthad/sx1302_hal +cd sx1302_hal +make +cd libloragw +cp ../tools/reset_lgw.sh . +sudo ./test_loragw_hal_tx -r 1250 -m LORA -f 867.1 -s 12 -b 125 -n 1000 -z 100 --dig 3 --pa 0 --pwid 13 -d /dev/spidev2.0 +``` + +如果您看到以下结果并且LoRa模块上的LED灯变成了红色,则表示该模块已成功传输射频信号: + +
+ +
+ +要停止发送信号,您可以在键盘上按下**CTRL + C**。 + +### LoRa 模块使用说明 - 连接TTN + +现在,我们将连接到TTN(The Things Network),并将reComputer Industrial用作TTN LoRaWAN网关。 + +- **步骤 1:** 输入以下命令使数据包转发器准备就绪: +```sh +cd .. +cd packet_forwarder +cp ../tools/reset_lgw.sh . +``` + +- **步骤 2:** 根据您使用的LoRa模块运行以下命令。在这里,我们已经测试了SPI US915版本。 + +```sh +sudo ./lora_pkt_fwd -c global_conf.json.sx1250.US915 +``` + +但是,其他模块的命令如下所示: + +```sh +# USB 915 +sudo ./lora_pkt_fwd -c global_conf.json.sx1250.US915.USB + +# SPI EU868 +sudo ./lora_pkt_fwd -c global_conf.json.sx1250.EU868 + +# USB EU868 +sudo ./lora_pkt_fwd -c global_conf.json.sx1250.EU868.USB +``` + +运行上述命令后,您将看到以下输出,并且最后一行将显示**concentrator EUI**信息。请保存此信息,因为我们在设置与TTN网关时将使用它: + +
+ +- **步骤 3:** 访问 [URL](https://console.cloud.thethings.network) 进入TTN控制台,选择您喜欢的地区。 + +
+ +- **步骤 4:** 如果您已经有一个帐号,请登录,如果您没有帐号,请注册一个新帐号。 + +
+ +- **步骤 5:** 点击 **Go to gateways** + +
+ +- **步骤 6:** 点击 **+ Register gateway** + +
+ +- **步骤 7:** 在 **Gateway EUI** 部分输入你之前获得的 **Concentrator EUI** ,然后点击 **Confirm** + +
+ + +- **步骤 8:** 根据您使用的LoRa模块输入**Frequency plan**。这里我们使用的是US915模块的版本,因此选择 **United Stated 902-928 MHz, FSB 2 (used by TTN)**。然后单击 **Register gateway** + +
+ +:::注意 + **Gateway ID** 已经自动填充。但是,您可以更改它为任何您喜欢的内容。 **Gateway name** 不是必须填写的。但是,您也可以根据个人喜好填写。 +::: + +- **步骤 9:** 在网关主页上记录 **Gateway Server Address** + +
+ +- **步骤 10:** 在reTerminal Industrial上,编辑我们与**lora_pkt_fwd**命令一起使用的**global_conf_json**文件。在这里,您需要更改以下选项:**gateway_ID**、**server_address**、**serv_port_up**和**serv_port_down**。 + + - gateway_ID: 设备中的Concentrator EUI + - server_address: 从TTN获取的网关服务器地址 + - serv_port_up: 1700 + - serv_port_down: 1700 + +
+ +- **步骤 11:** 重新运行数据包转发器。 + +```sh +sudo ./lora_pkt_fwd -c global_conf.json.sx1250.US915 +``` + +如果您看到以下输出,那么设备已经成功连接到TTN: + +
+ +## M.2 Key B + +reComputer Industrial带有一个M.2 Key B连接器,支持4G和5G模块。目前,我们已经测试了**SIM8202G-M2 5G模块**。 + +### 5G 模块连接概况 + +- **步骤 1:** 如果板子已经开启,请关闭它。 + +- **步骤 2:** 确保支架已经就位,然后取下支架上的螺钉。 + +
+ +- **步骤 3:** 将5G模块滑入M.2 Key B插槽中,并将支架螺钉拧紧以固定5G模块的位置(关于支架的说明)。 + +
+ +- **步骤 4:** 将4根天线连接到模块上的天线接头上。在这里,您需要使用IPEX 4连接器。 + +
+ +- **步骤 5:** 将一张支持5G的nano SIM卡插入板子上的SIM卡槽中,确保SIM卡的金色表面朝下。在这里,将卡片插入到底部,使其在撞到内部弹簧后反弹回来并锁定。 + +
+ +:::注意 +如果您想要取出SIM卡,请将卡片推入,撞到内部弹簧以便SIM卡从插槽中被弹出。 +::: + +- **步骤 6:** 打开板子电源 + +### 5G 模块使用说明 - 测试拨号 + +当使用SIM8202G-M2 5G模块时,模块不会自动启动。因此,我们需要先切换一些GPIO以使其启动。 + +- **步骤 1:** 输入以下命令以启动5G模块: + +```sh +sudo su +cd /sys/class/gpio +echo 309 > export +cd gpio309 +echo out > direction +echo 0 > value + +cd.. +echo 341 > export +cd PEE.02 +echo out > direction +echo 1 > value + +cd.. +echo 330 > export +cd PCC.02 +echo out > direction +echo 0 > value +``` + +执行上述命令后,LED2将亮起绿色,如下图所示: + +
+ +- **步骤 2:** 安装 minicom + +```sh +sudo apt update +sudo apt install minicom -y +``` + +- **步骤 3:** 进入已连接的5G模块的串行控制台,以便我们可以输入AT命令并与5G模块进行交互。 + +```sh +sudo minicom -D /dev/ttyUSB2 -b 115200 +``` + +- **步骤 4:** 输入命令**AT**,然后按回车键。如果您看到响应为“OK”,则说明5G模块正常工作。 + +
+ +- **步骤 5:** 输入命令 **"ATI"** 检查模块信息 + +
+ + +- **步骤 6:** 若要测试模块,请输入以下命令来拨打另一个电话号码: + +```sh +ATD; +``` + +然后你会看到如下输出: + +
+ +### 5G 模块使用说明 - 连接互联网 + +更新中...... + +## DI/ DO + +reComputer Industrial支持4个数字输入和4个数字输出通道,全部都进行了光电隔离,以有效地保护主板免受电压峰值或其他电气干扰的影响。这个连接器上还有一个CAN接口,我们稍后会在本文档中讨论。 + +
+ +### DI/DO引脚分配表: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLabel NameSchematic SignalModule Pin NumberBGA NumberGPIO NumberV/A LimitsNote
InputDI1DI_1_GPIO01118PQ.0545312V/ 20mA current in total12V Digital Input, ground signal needs to
be connected to GND_DI (Pin2/4/6)
DI2DI_2_GPIO09211PAC.06492
DI3DI_3_GPIO11216PQ.06454
DI4DI_4_GPIO13228PH.00391
OutputDO1DO_1_GPIO193PI.0039940V/40mA load per pinDigital output, maximum withstand
voltage 40V, ground signal needs to be
connected to GND_DO(Pin8/10)
DO2DO_2_GPIO195PI.01400
DO3DO_3_GPIO197PI.02401
DO4DO_4_GPIO199PH.07398
CANCH/CAN bus with standard differential signals,
ground signal needs to be connected to GND_ISO (Pin 12)
CL
GroundGND_DI/The reference ground signal for the 12V Digital
Input, which is also the return path for the DI
GND_DOThe reference ground signal of the digital output, which is also the return path of the DO
CGThe reference ground signal for CAN
+ +### DI(数字输入)的连接概述: + +您可以按照下图所示进行DI的连接。最好为DI线添加上串联电阻。这里我们已经测试将一个4.7kΩ电阻连接到DI1引脚。 + +
+ +### DI使用说明 + +您需要在DI线上输入12V的电压才能被检测为输入。 + +- **步骤 1:** 按照上图所示连接到**DI1引脚**,并输入**12V**。 + +- **步骤 2:** 按照以下步骤打开DI1的GPIO: + +```sh +sudo su +cd /sys/class/gpio +echo 453 > export +cd PQ.05 +``` + +:::注意 +您可以参考**DI/DO引脚分配表**查找GPIO编号和BGA编号。在上面的例子中,DI1引脚的GPIO编号为453,BGA编号为PQ.05。 +::: + +- **步骤 3:** 执行以下命令以检查DI线状态: + +```sh +cat value +``` + +如果输出0,则表示有12V输入。如果输出1,则表示没有输入电压。 + +### DO(数字输出)的连接概述: + +您可以按照下面的图示进行DO的连接。最好为DO线加上串联电阻。这里我们已经测试使用一个4.7kΩ电阻: + +
+ +### DO使用说明 + +在此,您需要按照上面的图示连接一个负载。如果您有万用表,则最简单的测试方法是连接一个万用表,否则请连接一个最大电压不超过40V的负载。 + +- **步骤 1:** 按照上图所示连接到**DO1引脚**,并输入**最大40V**。 + +- **步骤 2:** 按照以下步骤打开DO1的GPIO: + +```sh +sudo su +cd /sys/class/gpio +echo 399 > export +cd PI.00 +echo out > direction +``` + +:::注意 +您可以参考**DI/DO引脚分配表**查找GPIO编号和BGA编号。在上面的例子中,DO1引脚的GPIO编号为399,BGA编号为PI.00。 +::: + +- **步骤 3:** 执行以下命令以打开该引脚: + +```sh +echo 1 > value +``` + +如果负载锁定开启,或者万用表输出您输入的电压,则测试正确运行 + +## CAN + +reComputer Industrial具有支持5Mbps的CAN FD(控制器区域网络灵活数据速率)协议的CAN接口。CAN接口使用电容隔离进行隔离,从而提供出色的EMI保护,并确保在工业和自动化应用中进行可靠的通信。默认情况下安装了120Ω的终端电阻器,您可以使用GPIO切换此电阻器的开关。 + +注意: CAN接口使用隔离电源,这意味着连接到CAN接口的外部设备的地信号应连接到CG引脚。 + +### USB转CAN适配器的连接概述: + +要测试和连接CAN总线,请按照下面的方式将USB转CAN适配器连接到板子上的CAN接口上: + +
+ +在这里,我们使用我们Bazaar上提供的[USB to CAN Analyzer Adapter with USB Cable](https://www.seeedstudio.com/USB-CAN-Analyzer-p-2888.html) + +### USB转CAN适配器的使用说明: + +- **步骤 1:** 从制造商的网站下载您使用的USB转CAN适配器的驱动程序,并安装它。在我们的情况下,根据我们使用的适配器,驱动程序可以在以下位置找到:[这](https://github.com/SeeedDocument/USB-CAN-Analyzer/tree/master/res/Driver/driver%20for%20USBCAN(CHS40)/windows-driver) + +- **步骤 2:** 有些适配器还配备了必要的PC软件,以便与CAN设备通信。在我们的情况下,根据我们使用的适配器,我们已经下载并安装了可以在以下位置找到的软件:[这](https://github.com/SeeedDocument/USB-CAN-Analyzer/tree/master/res/Program) + +- **步骤 3:** 在reComputer Industrial上打开终端窗口,并执行以下命令配置和启用CAN接口: + +```sh +sudo modprobe mttcan +sudo ip link set can0 type can bitrate 125000 +sudo ip link set can0 up +``` + +- **步骤 4:** 在终端上输入**ifconfig**,您会看到已启用CAN接口: + +
+ +- **步骤 5:** 打开之前安装的CAN软件。我们将打开根据我们使用的CAN适配器安装的软件。 + +
+ +- **步骤 6:** 将USB转CAN适配器连接到PC上,并通过在Windows搜索栏中进行搜索打开**设备管理器**。现在,您会在**端口(COM和LPT)**下看到已连接的适配器。在这里列出串口。根据下面的图像,串口为**COM9** + +
+ +- **步骤 7:** 打开CAN软件,单击**COM**部分旁边的**刷新**,然后单击下拉菜单并根据连接的适配器选择串行端口。将**COM bps**保持默认设置,然后单击**打开**。 + +
+ +- **步骤 8:** 将**模式**和**CAN bps**保持默认设置,将**类型**更改为**标准帧**,然后单击**设置及启动**。 + +
+ +- **步骤 9:** 在reComputer Industrial上,执行以下命令向PC发送CAN信号: + +```sh +cansend can0 123#abcdabcd +``` + +现在,您将会看到上述信号被软件接收并显示如下。 + +
+ +- **步骤 10:** 在reComputer Industrial上,执行以下命令等待接收来自PC的CAN信号。 + +```sh +candump can0 & +``` + +- **步骤 11:** 在CAN软件上,点击“发送单帧”。 + +
+ +现在,您将会看到reComputer Industrial已接收到该数据,如下所示: + +
+ +### reTerminal DM的连接概览 + +如果您拥有一台[reTerminal DM](https://www.seeedstudio.com/reTerminal-DM-p-5616.html),你就可以直接与其通信,因为reTerminal DM也有CAN接口。 + +请参照下图通过CAN连接reComputer Industrial和reTerminal DM: + +
+ +### reTerminal DM的使用说明 + +- **步骤 1:** 在使用reTerminal DM之前,请访问[wiki](https://wiki.seeedstudio.com/reterminal-dm)以开始使用reTerminal DM。 + +- **步骤 2:** 在reComputer Industrial上打开一个终端窗口,并执行以下命令以配置并启用CAN接口 + +```sh +sudo modprobe mttcan +sudo ip link set can0 type can bitrate 125000 +sudo ip link set can0 up +``` + +- **步骤 3:** 在reTerminal DM上打开一个终端窗口,并执行以下命令以配置并启用CAN接口 + +```sh +sudo modprobe mttcan +sudo ip link set can0 type can bitrate 125000 +sudo ip link set can0 up +``` + +- **步骤 4:** 如果在两台设备上都输入**ifconfig**,您将会看到CAN接口已启用 。 + +
+ +- **步骤 5:** 在reTerminal DM上执行以下操作以等待从reComputer Industrial接收CAN信号 + +```sh +candump can0 & +``` + +- **步骤 6:** 在reComputer Industrial上执行以下命令以向reTerminal Industrial发送CAN信号 + +```sh +cansend can0 123#abcdabcd +``` + +现在,您将会看到reTerminal DM已接收到该CAN信号,如下所示: + +
+ +- **步骤 7:** 重复**步骤5和步骤6**,但交换设备。使用reTerminal DM发送CAN信号,使用reComputer Industrial接收CAN信号。 + +## RS232/ RS422/ RS485 接口 + +reComputer Industrial有一个DB9连接器,支持RS232,RS422和RS485通信协议,并且设备板上还有一个DIP开关面板可用于在不同的接口选项之间进行切换。 + +您可以看到如下所示的 DIP 开关面板: + +
+ +:::注意 +在使用 DIP 开关面板之前,请确保先移除黄色塑料盖板。 +::: + +下面的表格解释了基于 DIP 开关位置的不同模式: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ MODE_0MODE_1MODE_2模式状态
Image000RS-422 Full Duplex1T/1R RS-422
Image001Pure RS-2323T/5R RS-232
Image010RS-485 Half Duplex1T/1R RS-485 ,TX ENABLE Low Active
Image011RS-485 Half Duplex1T/1R RS-485 ,TX ENABLE High Active
Image100RS-422 Full Duplex1T/1R RS-422 with termination resistor
Image101Pure RS-2321T/1R RS-232 co-exists with RS485
无需总线即可进行的应用
开关集成电路(用于特殊用途)
Image110RS-485 Half Duplex1T/1R RS-485 with termination resistor
TX ENABLE 低电平有效
Image111Low PowerAll I/O pins are High Impedance
关机
+ +:::注意 +开箱即用,开关的默认模式将设置为工厂预置的 RS485 010 模式。 +::: + +上述表格只考虑了 DIP 开关面板的前三个开关。然而,第四个开关的功能是切换斜率控制(slew rate),该控制器与数据传输速率直接相关。 + + + + + + + + + + + + + + + + + + + + +
+ 状态注意
Image1SLEW= Vcc
这种RS232 / RS422 / RS485多协议收发器限制了通信速率,如下所示:
RS-232:最大数据率为1.5Mbps
RS-485 / RS-422:最大数据率为10Mbps
实际的最大数据速率取决于所使用的Jetson SO使用情况。
Image0SLEW = GND
RS-232:最大数据率为250Kbps
RS-485 / RS-422:最大数据率为250Kbps。
+ +在此我们将使用 USB 转 RS232、RS485 和 RS422 适配器来测试接口。因此,在继续之前,您需要在您的 PC 上安装一个串行终端应用程序。这里我们建议您安装 **Putty**,它易于设置和使用。 + +- **步骤 1:** 访问 网页](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) 根据您的PC架构下载 Putty。 + +
+ +在这里,我们根据使用的PC选择了 X86 Windows 64位机器的 Putty。 + +- **步骤 2:** 打开下载的设置文件,并按照提示安装该应用程序。 + +### 通用连接概述 + +您可以参考DB9连接器的引脚编号和表格进行连接。 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MODE001/101000/100010/011/110
PINRS232RS422RS485
1 + TXD-Data-
2RXDTXD+Data+
3TXDRXD+ +
4 + RXD- +
5GNDGNDGND
6 + + +
7RTS + +
8CTS + +
9 + + +
+ +### RS232 连接概述 + +在这里,您可以使用 USB 转 RS232 适配器来测试接口。我们使用了 [UGREEN USB to RS232 Adapter](https://www.amazon.com/UGREEN-Converter-Adapter-Chipset-Windows/dp/B00QUZY4UG?th=1) 进行测试。 + +- **步骤 1:** 将板子关机 + +- **步骤 2:** 这里我们有两个选项来设置开关(DIP switches):001模式或101模式。每种模式对应的开关位置如下所示: + +
+ +- **步骤 3:** 将 USB 转 RS232 适配器连接到 DB9 连接器上。这里我们已经连接了上面提到的适配器。 + +
+ +- **步骤 4:** 将另一端连接到您计算机上的一个 USB 端口。 + +- **步骤 5:** 打开板子 + +### RS232 Usage + +- **步骤 1:** 您可能需要为所使用的适配器安装驱动程序,或者 Windows 将自动为您安装驱动程序。在 Windows 搜索中键入 **设备管理器**,以查看连接的适配器是否被识别为 COM 设备。 + +
+ +- **步骤 2:** 如果您无法看到适配器,则需要根据所使用的适配器安装驱动程序。通常,您可以在制造商的网站上找到这些驱动程序。对于我们使用的适配器,您可以访问 [页面](https://www.ugreen.com/pages/download),搜索 **20201** 作为型号,并相应地下载驱动程序。 + +- **步骤 3:** 在 PC 上打开 Putty,将 **终端** 部分并设置以下内容: + + - Local echo: Force on + - Local line editing: Force on + +
+ +- **步骤 4:** 选择 **会话**,在 **连接类型** 下选择 **串行**,根据在设备管理器中看到的串口号设置串口号,保持速度为默认值(9600),然后单击 **打开**。 + +
+ +- **步骤 4:** 在 reTerminal Industrial 终端窗口中,输入以下内容以从 reComputer 发送信号到 PC + +```sh +sudo chmod 777 /dev/ttyTHS0 +sudo echo "RS232 message from reComputer Industrial" > /dev/ttyTHS0 +``` + +现在你会看到这些消息在putty上显示 + +
+ +- **步骤 5:** 在 reTerminal Industrial 终端窗口中,输入以下内容以等待从 PC 接收信号: + +```sh +sudo cat /dev/ttyTHS0 +``` + +- **步骤 6:**在 Putty 中输入任何内容,按 **ENTER**,然后它将在 reComputer Industrial 终端窗口中显示。 + +
+ +### RS422 连接概述 + +在这里,您可以使用 USB 转 RS422 适配器来测试接口。我们使用了 [DTech USB to RS485 Adapter](https://www.amazon.com/Adapter-Serial-Terminal-Ferrite-Windows/dp/B08SM5MX8K) 进行测试。 + +- **步骤 1:** 将板子关机 + +- **步骤 2:** 这里我们有两个选项来设置开关(DIP switches):000模式或100模式。每种模式对应的开关位置如下所示: + +
+ +- **步骤 3:** 将 USB 转 RS422 适配器通过跳线或线材连接到 DB9 连接器上,如下所示。这里我们连接的是上述提到的适配器。 + +
+ +- **步骤 4:** 将另一端连接至您 PC 上的一个 USB 端口。 + +- **步骤 5:** 打开板子 + +### RS422 使用说明 + +- **步骤 1:** 您可能需要为所使用的适配器安装驱动程序,否则 Windows 将自动为您安装驱动程序。通过在 Windows 搜索栏中输入 **Device Manager** ,进入设备管理器,查看您是否可以将连接的适配器识别为一个 COM 设备。 + +
+ +- **步骤 2:** 如果您无法看到适配器,则需要根据您所使用的适配器安装驱动程序。通常情况下,您可以在制造商网站上找到这些驱动程序。对于我们正在使用的适配器,您可以通过[网页](https://www.dtechelectronics.com/front/downloads/downloadssearch/user_downloadscat_id/0/search_value/rs485) + +- **步骤 3:** 在 PC 上打开 Putty,选择“Terminal”选项卡,进行以下设置: + + - Local echo: Force on + - Local line editing: Force on + +
+ +- **步骤 4:** 选择 **Session**, 在 **Coonection type**下拉列表中选择 **Serial**, 根据**Device Manager**中显示的串口号设置相应的串口号,保持默认的波特率(9600),然后点击**Open**。 + +
+ +- **步骤 5:** 在 reTerminal industrial 终端窗口中输入以下内容,以便从 reComputer 发送信号到 PC。 + +```sh +sudo chmod 777 /dev/ttyTHS0 +sudo echo "RS422 message from reComputer Industrial" > /dev/ttyTHS0 +``` + +现在你会看到这条信息在Putty上显示 + +- **步骤 5:** 在 reTerminal industrial 终端窗口中输入以下内容,以便等待接收来自 PC 的信号。 + +```sh +sudo cat /dev/ttyTHS0 +``` + +- **步骤 6:** 在 Putty 中随便输入一些文字,按下“ENTER”键,这些文字将会显示在 reComputer industrial 终端窗口中。 + +### RS485 连接概述 + +在这里,您可以使用 USB 转 RS422 适配器来测试接口。我们在测试中使用了 [DTech USB 转 RS485 适配器](https://www.amazon.com/Adapter-Serial-Terminal-Ferrite-Windows/dp/B08SM5MX8K) + +- **步骤 1:** 关闭板子 + +- **步骤 2:** 这里有三个设置 DIP 开关的选项。可以是 010 模式、011 模式或者 110 模式。每种模式对应的开关位置如下所示: + +
+ +- **步骤 3:** 请按照下面所示的跳线线路图,将 USB 转 RS422 转换器通过跳线线连接到 DB9 连接器上。这里我们连接了上述提到过的适配器。 + +
+ +- **步骤 4:** 将另一端连接到您 PC 上的一个 USB 端口。 + +- **步骤 5:** 打开板子 + +### RS485 使用说明 + +- **步骤 1:** 您可能需要为所使用的适配器安装驱动程序,或者 Windows 将自动为您安装驱动程序。通过在 Windows 搜索栏中键入“Device Manager”,进入设备管理器,检查您是否可以将连接的适配器识别为一个 COM 设备。 + +
+ +- **步骤 2:** 如果您无法看到适配器,则需根据您所使用的适配器安装驱动程序。通常情况下,您可以在制造商的网站上找到这些驱动程序。对于我们正在使用的适配器,您可以访问 [这个页面](https://www.dtechelectronics.com/front/downloads/downloadssearch/user_downloadscat_id/0/search_value/rs485) + +- **步骤 3:** 在PC端打开putty, 选择 **Terminal** 选项并进行如下设置: + + - Local echo: Force on + - Local line editing: Force on + +
+ +- **步骤 4:** 选择 **Session**, 在 **Coonection type**下拉列表中选择 **Serial**,,根据**Device Manager**中显示的串口号设置相应的串口号,保持默认的波特率(9600),然后点击 **Open** + +
+ +- **步骤 4:** 在 reTerminal industrial 终端窗口中,输入以下命令,以将信号从 reComputer 发送到 PC: + +```sh +sudo su +cd /sys/class/gpio +echo 460 > export +cd PR.04 +echo out > direction +echo 0 > value +echo "RS485 message from reComputer Industrial" > /dev/ttyTHS0 +``` + +现在我们会看到信息在putty上显示 + +- **步骤 5:** 在 reTerminal industrial 终端窗口中,输入以下命令,以等待从 PC 接收信号: + +```sh +sudo su +cd /sys/class/gpio +echo 460 > export +cd PR.04 +echo out > direction +echo 1 > value +cat /dev/ttyTHS0 +``` + +- **步骤 6:** 在Putty输入任何东西,然后点击**ENTER** ,信息会在reComputer Industrial终端窗口中显示。 + +## 千兆以太网连接器 + +reComputer Industrial 上有两个千兆以太网(10/100/1000M)连接器,它们的功能不同: + +- 最左边的连接器直接连接到 Jetson 模块,可以提供 **PSE 802.3 af, 15W** 规格的 PoE 功能。这意味着您可以将 PoE IP 摄像机或任何其他 PoE 设备连接到此端口,为连接的设备提供电力。 +- 另一个连接器通过 PCIe 到以太网 (LAN7430-I/Y9X) 模块连接。 + +
+ +每个以太网端口都有 2 个 LED(绿色和黄色),分别表示以下内容: + +- 绿色 LED:只有在连接到 1000M 网络时才会点亮 +- 黄色 LED:显示网络活动状态 + +## USB + +reComputer Industrial 配备了 3 个 USB3.2 连接器,并拥有以下特性: +- 在双重叠加 USB 连接器上,上下 USB 端口共享一个限流集成电路,最大输出电流为 2.1A(单个也可以是 2.1A)。如果超过了 2.1A,则会进入过流保护状态。 +- 在双重叠加 USB 连接器旁边的单个 USB 连接器上,最大输出电流为 2.1A。如果超过了 2.1A,则会进入过流保护状态。 +- Orin NX 模块配备了 3 个 USB3.2,只有一个被用于 reComputer,并转换成 3 种方式。(USB3.1 TYPE-A x2 - J4 和 USB3.1 TYPE-A x1 - J3)。 +- 仅支持 USB Host,不支持设备模式。 +- 提供 5V 2.1A 电源。 +- 可热插拔。 + +### 使用说明 + +我们会解释如何对连接的 USB 闪存驱动器进行简单的基准测试。 + +- **步骤 1:** 通过执行下面的命令来检查写入速度: + +```sh +sudo dd if=/dev/zero of=/dev/$1 bs=100M count=10 conv=fdatasync +``` + +- **步骤 2:** 通过执行以下命令来检查读取速度。请确保在执行上面的写入速度命令后再执行此命令: + +```sh +sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches" +sudo dd if=/dev/$1 of=/dev/null bs=100M count=10 +``` + +## 可配置 LED + +板子上有一个绿色 LED,如下图所示。默认情况下,它作为显示设备正常运行的 LED。但是,您也可以通过系统编程来控制此 LED 开关。 + +
+ +### 使用说明 + +- **步骤 1:** 在终端窗口中输入以下命令,以访问绿色 LED: + +```sh +sudo -i +cd /sys/class/gpio +echo 329 > export +cd PCC.01 +echo out > direction +``` + +- **步骤 2:** 关闭LED: + +```sh +echo 0 > value +``` + +- **步骤 3:** 打开LED: + +```sh +echo 1 > value +``` + +如果您想结束使用LED,可以执行以下命令: + +```sh +cd .. +echo 329 > unexport +``` + +## 监控系统性能 + +我们可以使用 **jetson stats** 应用程序来监视系统组件的温度并检查其他系统详细信息,例如: + +- 查看 CPU、GPU、RAM 使用率。 +- 更改电源模式。 +- 设置为最大时钟频率。 +- 查看 JetPack 信息。 + +- **步骤 1:** 在 reComputer industrial 终端窗口中,输入以下命令 + +```sh +sudo apt update +sudo apt install python3-pip -y +sudo pip3 install jetson-stats +``` + +- **步骤 2:** 重启板子 + +```sh +sudo reboot +``` + +- **步骤 3:** 在终端中输入如下指令 + +```sh +jtop +``` + +现在 **jtop** 应用将会被打开,如下所示: + +
+ +- **步骤 4:** 在此您可以浏览应用程序的不同页面,探索所有功能! + +## WiFi 和 蓝牙 + +reComputer Industrial 在开箱时不具备 WiFi 和蓝牙功能。但是,板子上留有保留区域,以便将 WiFi / 蓝牙模块焊接到板子上。在这里,我们预留了支持 **BL-M8723DU1** 模块的空间。 + +### 连接概述 + +- **步骤 1:** 如果您想自己焊接 **BL-M8723DU1** 模块,您可以进行焊接。但是我们不建议这么做,因为如果在此过程中损坏了板子,那么保修将会失效。我们建议使用我们的专业服务来帮助您将该模块焊接到板子上,并通过发送电子邮件至 order@seeed.cc 来提出您的要求。 + +
+ +- **步骤 2:** 连接两个天线到板子上的两个天线连接器,一个用于 WiFi,一个用于蓝牙。在这里,您需要使用一个 IPX 连接器。 + +
+ +### 使用说明 + +- **步骤 1:** 打开板子电源,一旦设备进入 Ubuntu 桌面,请单击右上角的下拉菜单,导航到 `Settings > Wi-Fi`,切换标题栏上的按钮以启用 WiFi。之后选择一个 WiFi 网络,输入所需的密码并连接到该网络。 + +
+ +- **步骤 2:** 在同一窗口中,选择“Bluetooth”,切换标题栏上的按钮以启用蓝牙。之后选择一个蓝牙设备连接到它。 + +
+ +## TPM + +reComputer Industrial 配备了 TPM 接口,用于连接外部 TPM 模块。在这里,我们使用基于 Infineon SLB9670 的 TPM2.0 模块进行测试。 + +
+ +### 连接概述 + +按照下面的图示将 TPM 模块连接到 TPM 连接器上: + +
+ +### 使用说明 + +通过执行以下命令来检查 TPM 模块是否被正确加载: + +```sh +sudo dmesg | grep TPM +ls /dev/tpm* -l +``` + +然后你会看到如下输出 + +
+ +## reComputer Industrial最优性能表现 + +如果您想在 reComputer industrial 版上启用最大性能,请按照以下说明操作: + +- **步骤 1:** 输入以下命令以启用最大功率模式: + +```sh +sudo nvpmodel -m 0 +``` + +
+ +这里它会要求输入 **YES** 以重新启动板子。 + +- **步骤 2:** 板子启动后,输入以下命令以将 CPU 时钟频率设置为最大频率。 + +```sh +sudo jetson_clocks +``` + +## GPIO 表 + +您可以访问 reComputer industrial 版的 GPIO 表格,以熟悉所有引脚映射。 + +在终端中执行以下命令即可进入 GPIO 表格: + +```sh +sudo cat /sys/kernel/debug/gpio +``` + +然后,您将看到以下输出: + +```sh +gpiochip2: GPIOs 300-315, parent: i2c/1-0021, 1-0021, can sleep: + gpio-300 (wl_dis |gpio_xten_pin@0 ) out hi + gpio-301 (hst_wake_wl |gpio_xten_pin@1 ) out hi + gpio-302 (wl_wake_hst |gpio_xten_pin@2 ) out hi ACTIVE LOW + gpio-303 (bt_dis |gpio_xten_pin@3 ) out hi + gpio-304 (hst_wake_bt ) + gpio-305 (bt_wake_hst ) + gpio-306 (spi0_rst_3v3 |gpio_xten_pin@6 ) out lo ACTIVE LOW + gpio-307 (gpio_pin7 |gpio_xten_pin@7 ) out lo ACTIVE LOW + gpio-308 (can_120R_en ) + gpio-309 (M2B_PCIe_rst ) + gpio-310 (USB_HUB_rst |gpio_xten_pin@10 ) out hi + gpio-311 (PCIe_ETH_rst ) + gpio-312 (M2B_WOWWAN ) + gpio-313 (M2B_DPR_3V3 ) + gpio-314 (SIM_MUX_SEL ) + gpio-315 (gpio_pin15 ) + +gpiochip1: GPIOs 316-347, parent: platform/c2f0000.gpio, tegra234-gpio-aon: + gpio-316 (PAA.00 ) + gpio-317 (PAA.01 ) + gpio-318 (PAA.02 ) + gpio-319 (PAA.03 ) + gpio-320 (PAA.04 ) + gpio-321 (PAA.05 |fixed-regulators:reg) out hi + gpio-322 (PAA.06 ) + gpio-323 (PAA.07 ) + gpio-324 (PBB.00 ) + gpio-325 (PBB.01 ) + gpio-326 (PBB.02 ) + gpio-327 (PBB.03 ) + gpio-328 (PCC.00 ) + gpio-329 (PCC.01 ) + gpio-330 (PCC.02 ) + gpio-331 (PCC.03 |mux ) out hi + gpio-332 (PCC.04 ) + gpio-333 (PCC.05 ) + gpio-334 (PCC.06 ) + gpio-335 (PCC.07 ) + gpio-336 (PDD.00 ) + gpio-337 (PDD.01 ) + gpio-338 (PDD.02 ) + gpio-339 (PEE.00 ) + gpio-340 (PEE.01 ) + gpio-341 (PEE.02 ) + gpio-342 (PEE.03 ) + gpio-343 (PEE.04 |power-key ) in hi IRQ ACTIVE LOW + gpio-344 (PEE.05 ) + gpio-345 (PEE.06 ) + gpio-346 (PEE.07 ) + gpio-347 (PGG.00 ) +gpiochip0: GPIOs 348-511, parent: platform/2200000.gpio, tegra234-gpio: + gpio-348 (PA.00 |fixed-regulators:reg) out lo + gpio-349 (PA.01 ) + gpio-350 (PA.02 ) + gpio-351 (PA.03 ) + gpio-352 (PA.04 ) + gpio-353 (PA.05 ) + gpio-354 (PA.06 ) + gpio-355 (PA.07 ) + gpio-356 (PB.00 ) + gpio-357 (PC.00 ) + gpio-358 (PC.01 ) + gpio-359 (PC.02 ) + gpio-360 (PC.03 ) + gpio-361 (PC.04 ) + gpio-362 (PC.05 ) + gpio-363 (PC.06 ) + gpio-364 (PC.07 ) + gpio-365 (PD.00 ) + gpio-366 (PD.01 ) + gpio-367 (PD.02 ) + gpio-368 (PD.03 ) + gpio-369 (PE.00 ) + gpio-370 (PE.01 ) + gpio-371 (PE.02 ) + gpio-372 (PE.03 ) + gpio-373 (PE.04 ) + gpio-374 (PE.05 ) + gpio-375 (PE.06 ) + gpio-376 (PE.07 ) + gpio-377 (PF.00 ) + gpio-378 (PF.01 ) + gpio-379 (PF.02 ) + gpio-380 (PF.03 ) + gpio-381 (PF.04 ) + gpio-382 (PF.05 ) + gpio-383 (PG.00 |force-recovery ) in hi IRQ ACTIVE LOW + gpio-384 (PG.01 ) + gpio-385 (PG.02 ) + gpio-386 (PG.03 ) + gpio-387 (PG.04 ) + gpio-388 (PG.05 ) + gpio-389 (PG.06 ) + gpio-390 (PG.07 |cd ) in lo IRQ + gpio-391 (PH.00 ) + gpio-392 (PH.01 ) + gpio-393 (PH.02 ) + gpio-394 (PH.03 ) + gpio-395 (PH.04 ) + gpio-396 (PH.05 ) + gpio-397 (PH.06 ) + gpio-398 (PH.07 ) + gpio-399 (PI.00 ) + gpio-400 (PI.01 ) + gpio-401 (PI.02 ) + gpio-402 (PI.03 ) + gpio-403 (PI.04 ) + gpio-404 (PI.05 ) + gpio-405 (PI.06 ) + gpio-406 (PJ.00 ) + gpio-407 (PJ.01 ) + gpio-408 (PJ.02 ) + gpio-409 (PJ.03 ) + gpio-410 (PJ.04 ) + gpio-411 (PJ.05 ) + gpio-412 (PK.00 ) + gpio-413 (PK.01 ) + gpio-414 (PK.02 ) + gpio-415 (PK.03 ) + gpio-416 (PK.04 ) + gpio-417 (PK.05 ) + gpio-418 (PK.06 ) + gpio-419 (PK.07 ) + gpio-420 (PL.00 ) + gpio-421 (PL.01 ) + gpio-422 (PL.02 |nvidia,pex-wake ) in hi ACTIVE LOW + gpio-423 (PL.03 ) + gpio-424 (PM.00 ) + gpio-425 (PM.01 ) + gpio-426 (PM.02 ) + gpio-427 (PM.03 ) + gpio-428 (PM.04 ) + gpio-429 (PM.05 ) + gpio-430 (PM.06 ) + gpio-431 (PM.07 ) + gpio-432 (PN.00 ) + gpio-433 (PN.01 ) + gpio-434 (PN.02 ) + gpio-435 (PN.03 ) + gpio-436 (PN.04 ) + gpio-437 (PN.05 ) + gpio-438 (PN.06 ) + gpio-439 (PN.07 ) + gpio-440 (PP.00 ) + gpio-441 (PP.01 ) + gpio-442 (PP.02 ) + gpio-443 (PP.03 ) + gpio-444 (PP.04 ) + gpio-445 (PP.05 ) + gpio-446 (PP.06 ) + gpio-447 (PP.07 ) + gpio-448 (PQ.00 ) + gpio-449 (PQ.01 ) + gpio-450 (PQ.02 ) + gpio-451 (PQ.03 ) + gpio-452 (PQ.04 ) + gpio-453 (PQ.05 ) + gpio-454 (PQ.06 ) + gpio-455 (PQ.07 ) + gpio-456 (PR.00 ) + gpio-457 (PR.01 ) + gpio-458 (PR.02 ) + gpio-459 (PR.03 ) + gpio-460 (PR.04 ) + gpio-461 (PR.05 ) + gpio-462 (PX.00 ) + gpio-463 (PX.01 ) + gpio-464 (PX.02 ) + gpio-465 (PX.03 ) + gpio-466 (PX.04 ) + gpio-467 (PX.05 ) + gpio-468 (PX.06 ) + gpio-469 (PX.07 ) + gpio-470 (PY.00 ) + gpio-471 (PY.01 ) + gpio-472 (PY.02 ) + gpio-473 (PY.03 ) + gpio-474 (PY.04 ) + gpio-475 (PY.05 ) + gpio-476 (PY.06 ) + gpio-477 (PY.07 ) + gpio-478 (PZ.00 ) + gpio-479 (PZ.01 |vbus ) in hi IRQ ACTIVE LOW + gpio-480 (PZ.02 ) + gpio-481 (PZ.03 ) + gpio-482 (PZ.04 ) + gpio-483 (PZ.05 ) + gpio-484 (PZ.06 |cs_gpio ) out lo + gpio-485 (PZ.07 ) + gpio-486 (PAC.00 ) + gpio-487 (PAC.01 ) + gpio-488 (PAC.02 ) + gpio-489 (PAC.03 ) + gpio-490 (PAC.04 ) + gpio-491 (PAC.05 ) + gpio-492 (PAC.06 ) + gpio-493 (PAC.07 ) + gpio-494 (PAD.00 ) + gpio-495 (PAD.01 ) + gpio-496 (PAD.02 ) + gpio-497 (PAD.03 ) + gpio-498 (PAE.00 ) + gpio-499 (PAE.01 ) + gpio-500 (PAF.00 ) + gpio-501 (PAF.01 ) + gpio-502 (PAF.02 ) + gpio-503 (PAF.03 ) + gpio-504 (PAG.00 ) + gpio-505 (PAG.01 ) + gpio-506 (PAG.02 ) + gpio-507 (PAG.03 ) + gpio-508 (PAG.04 ) + gpio-509 (PAG.05 ) + gpio-510 (PAG.06 ) + gpio-511 (PAG.07 ) +``` + +## 技术支持 + +如遇到问题,请提交到 [论坛](https://forum.seeedstudio.com/). + +
+

+
\ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Intro.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Intro.md new file mode 100644 index 000000000000..bc93f1476867 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Intro.md @@ -0,0 +1,286 @@ +--- +description: reComputer 英伟达系列介绍介绍 +title: reComputer 英伟达系列介绍介绍 +keywords: + - Edge + - reComputer + - Jetson +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_Intro +last_update: + date: 12/19/2023 + author: Youjiang +--- + +
+ +## 开始使用reComputer-Jetson® +
+ +
+ + + + + + + + + + + + + + + + + + + + +
reComputer Jetson®J10X/J20X入门Jetson®J10X/J20X的硬件布局
按照说明操作,连接外围设备,您可以在几秒钟内通电并直接使用它。 您将在此处了解Jetson系列reComputer J10/J20硬件布局的基本概念。
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + +
reComputer Jetson®J30X/J40X入门reComputer Jetson®J30X/J40X的硬件布局
按照说明操作,连接外围设备,您可以在几秒钟内通电并直接使用它。您将在此处了解Jetson系列reComputer J30/J40硬件布局的基本概念。
+
+ +## 操作系统安装 + +
+ +
+ + + + + + + + + + + + + + + + + + +
reComputer-Jetson® J1010/J101reComputer-Jetson® J1020v1/A206reComputer-Jetson® J1020v2/J202
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + +
reComputer-Jetson® J30X/J40XreComputer-Jetson® A603reComputer-Jetson® A607
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + +
reComputer-Jetson® A203reComputer-Jetson® A205reComputer-Jetson® Jetson Mate
+
+ +## 应用程序 + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
NVIDIA Jetson上的语音字幕生成在NVIDIA Jetson Orin上部署Whisper,实现实时语音转文本如何在reComputer上运行本地LLM文本到图像
在这个wiki中,我们向您介绍Jetson上的语音字幕生成,它可以提供实时语音到字幕服务,同时避免互联网上的信息泄露。在本wiki中,我们向您介绍Jetson上的实时耳语,这种集成可以直接在设备上进行语音处理,消除了对持续网络连接的需求,增强了隐私和安全性。 这个wiki包括在英伟达Jetson Orin NX 16GB上建立和部署本地基于LLM的文本到图像生成模型
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Jetson上用MLC LLM量化Llama2-7B刀具检测:基于reComputer的Triton推理服务器上部署的目标检测模型使用无代码边缘AI工具在Jetson上部署检测模型
在这个项目中,我们引入了Llama2-7B的量化版本,这是一个在1.5TB数据上训练的大型语言模型,并将其部署在Jetson-Orin上。 我们提供了一个基础项目,我们将在reComputer J1010上部署一个深度学习模型来检测违禁物品。 在wiki中,我们将介绍如何在新的NVIDIA Jetson系统下下载和安装所需的内容,然后打开Edge AI工具并使用实时摄像头进行对象检测。
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
DashCamNet和PeopleNet与Jetson Xavier NX多摄像头基于DeepStream SDK的智能交通管理系统Docker入门
在这个wiki中,我们在Jetson上部署了一个TAO预训练模型,并实现了高速推理。对于这个AI视觉应用程序,我们将使用NVIDIA的DeepStream SDK,并在NVIDIA Jetson设备上进行边缘推理。在这个wiki中,我们尝试在Jetson上安装Docker Compose并运行Docker容器。
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
使用Allxon通过无线方式更新Jetson Linux如何在reComputer上训练和部署YOLOv8Maskcam-基于Jetson Nano的人群口罩使用监测
Allxon可以帮助您上传OTA Payload包并确保其正常工作。您稍后将在本维基中遇到此步骤。在这个wiki中,我们在reComputer J4012上训练和部署了一个交通场景的对象检测模型。 在这个wiki中,我们使用Jetson实现了一个掩码检测功能。
+
+ + +## 常见问题 +- [安装故障排除](https://wiki.seeedstudio.com/cn/Troubleshooting_Installation/) +- [接收到的reComputer中eMMC中剩余空间仅约2GB,如何解决空间不足的问题?](https://wiki.seeedstudio.com/cn/solution_of_insufficient_space/) +- [如何解决reComputer和VEYE相机之间的兼容性问题?](https://wiki.seeedstudio.com/cn/Solution_for_the_Compatibility_Issue_between_reComputer_and_VEYE_Camera/) + +## 技术支持与产品讨论 + +感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您与我们的产品的体验尽可能顺畅。 我们提供多种沟通渠道,以满足不同的偏好和需求。 + +
+ + +
+ +
+ + +
+ + diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/J1010_Boot_From_SD_Card.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/J1010_Boot_From_SD_Card.md new file mode 100755 index 000000000000..f594b9c151c7 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/J1010_Boot_From_SD_Card.md @@ -0,0 +1,108 @@ +--- +description: J1010 从 SD 卡启动 +title: J1010 从 SD 卡启动 +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/J1010_Boot_From_SD_Card +last_update: + date: 01/05/2023 + author: w0x7ce + +no_comments: false # for Disqus + +--- + +# J1010 从 SD 卡启动 + +## 入门指南 + +我们在开始之前需要阅读这两篇文章。请确保J1010系统已经正确刷机,并且SD卡驱动程序已正确安装。 + +- [J1010/J101 Flash Jetpack](https://wiki.seeedstudio.com/reComputer_J1010_J101_Flash_Jetpack/) +- [J101_启用SD卡](https://wiki.seeedstudio.com/J101_Enable_SD_Card/) + +## 将系统从J101刷写到SD卡 + +首先,我们需要克隆脚本,包含我们所需的工具。 + +```bash +git clone https://github.com/limengdu/bootFromUSB +``` + +其次,我们需要确保 SD 卡是 ext4 格式,这可以在“磁盘”工具中直观地看到。如果不是 ext4 格式,我们需要对其进行格式化并将其更改为 ext4 格式。 + +点击蓝色区域,然后点击绿色区域选择“格式化分区”。 + +
+ + +点击绿色区域选择“仅供Linux系统使用的内部磁盘(Ext4)” +在黄色区域填写您想要的“卷名称”。 + +
+ +我们发现SD卡的格式已经更改为ext4。 + +
+ + +然后,进入脚本目录,执行以下命令 + +```bash +cd bootFromUSB +./copyRootToUSB.sh -p /dev/mmcblk1p1 +``` + +稍等片刻,直到自动完成,如果没有报告错误,烧录就完成了。 + +## 启动配置 + +一旦驱动程序成功安装和配置后,我们可以通过"lsblk"命令查看,或在"/dev"目录中查看设备。 + +### 更改启动设备 + +我们需要修改 "/boot/extlinux/extlinux.conf" 中的配置。 + +- 从SD卡启动 + + 从载板的emmc启动后,我们希望将其修改为从SD卡启动。我们需要确保之前的过程,包括将系统烧录到SD卡,以及SD卡驱动程序已正确安装。修改根目录后的参数为我们正在启动的设备的地址。当我们完成更改后,重新启动系统。 + + **重启前修改 "/boot/extlinux/extlinux.conf" After reboot view "/media/seeed/{xxx-xxx}/boot/extlinux/extlinux.conf"** + +
+ + + !!!注意 + 我们从SD卡启动系统后的配置文件路径是“/media/seeed/{xxx-xxx}/boot/extlinux/extlinux.conf”,而从板载eMMC启动系统后的配置文件路径是“/boot/extlinux/extlinux.conf”。这两个文件是系统读取配置并选择启动系统的来源,系统启动完成后,相对路径会发生变化。 +- 从板载eMMC启动 + + 我们想在从SD卡启动后或出于某些目的需要更换SD卡后,切换回从emmc启动。因此,我们需要将设备改回优先从emmc启动。我们应该做以下更改。 + + **重启前修改 "/media/seeed/{xxx-xxx}/boot/extlinux/extlinux.conf" After reboot view "/boot/extlinux/extlinux.conf"** + +
+ + +最终,我们发现它确实效果不错。 + +- 从EMMC启动 + +
+ +- 从SD卡启动 + +
+ + +## 技术支持与产品讨论 + +感谢您选择我们的产品!我们致力于提供不同形式的支持,以确保您使用我们的产品时的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。 + +
+ + +
+ +
+ + +
diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/J101_Enable_SD_Card.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/J101_Enable_SD_Card.md new file mode 100755 index 000000000000..88c463adc65b --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/J101_Enable_SD_Card.md @@ -0,0 +1,208 @@ +--- +description: 将 JetPack 操作系统闪存到 SD 中(J101) +title: 将 JetPack 操作系统闪存到 SD 中(J101) +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/J101_Enable_SD_Card +last_update: + date: 01/05/2022 + author: w0x7ce + +no_comments: false # for Disqus + +--- + + + +# J101 启用 SD 卡 + +该方法是将英伟达 JetPack 操作系统闪存到 J101 载板上的 SD 卡中,该载板在 reComputer J1010 上运行。 以下是 将 JetPack 操作系统闪存到 reComputer J1010 中 需要的步骤. + +## 驱动程序配置 + +-开始,我们需要打开 reComputer 电源并进入桌面,如下图所示: + +
+ + +### 第一步. 克隆存储库 + +右键单击并打开终端,然后执行以下命令,代码如下所示: + +```sh +git clone https://github.com/Seeed-Studio/seeed-linux-dtoverlays.git +``` + +### 步骤2. 编译Jetson-sdmmc-overlay。 + +工作区位置访问: + +```bash +cd seeed-linux-dtoverlays +``` + +对于 J101 载板,我们需要在文件 "overlays\jetsonnano\jetson-sdmmc-overlay.dts" 中更改 "compatible" 值。 + +```bash +sed -i '17s#JETSON_COMPATIBLE#\"nvidia,p3449-0000-b00+p3448-0002-b00\"\, \"nvidia\,jetson-nano\"\, \"nvidia\,tegra210\"#' overlays/jetsonnano/jetson-sdmmc-overlay.dts +``` + + + +然后编译更改的文件,以确保它们被正确修改。 + +```bash +make overlays/jetsonnano/jetson-sdmmc-overlay.dtbo +``` + +### 步骤三:确保能识别到SD卡 + +将SD卡插入**J101载板**,运行以下命令: + +```bash +sudo cp overlays/jetsonnano/jetson-sdmmc-overlay.dtbo /boot/ +cd /boot/ +sudo /opt/nvidia/jetson-io/config-by-hardware.py -l +``` + +执行完上述命令后,我们应该会得到**类似**的输出(**可能不会完全相同,取决于外围设备和已经安装的驱动程序**),这样就知道SD卡已经被识别: + +```txt + Header 1 [default]: Jetson 40pin Header + Available hardware modules: + 1. Adafruit SPH0645LM4H + 2. Adafruit UDA1334A + 3. FE-PI Audio V1 and Z V2 + 4. MCP251x CAN Controller + 5. ReSpeaker 4 Mic Array + 6. ReSpeaker 4 Mic Linear Array + 7. reComputer sdmmc + Header 2: Jetson Nano CSI Connector + + + Available hardware modules: + 1. Camera IMX219 Dual + 2. Camera IMX477 Dual + 3. Camera IMX477-A and IMX219-B + Header 3: Jetson M.2 Key E Slot + No hardware configurations found! +``` + +### 步骤四:命名设备并完成驱动程序安装 + +```bash +sudo /opt/nvidia/jetson-io/config-by-hardware.py -n "reComputer sdmmc" +``` + +
+ + +!!! 注意 + 完成首次安装后,您可能需要**重启**才能运行 jtop。. + + + +## 更多 + +### 更改SD卡的I/O速度 + +我们在 reComputer J101 载板上提供SD卡功能, 支持48MHz的时钟频率。此处设计的时钟是为了获得证书(如CE/FCC)。如果您想自行提高时钟频率,可以参考以下指令。 + +
+

+

+ + +- **步骤 1**. 克隆此存储库并修改以下代码。 + + ```bash + git clone https://github.com/Seeed-Studio/seeed-linux-dtoverlays + ``` + +- **步骤 2**.修改并编译max-clk-limit值 + + ```bash + cd seeed-linux-dtoverlays + sed -i '10s#48000000#208000000#' overlays/jetsonnano/jetson-sdmmc-overlay.dts + make overlays/jetsonnano/jetson-sdmmc-overlay.dtbo + sudo cp overlays/jetsonnano/jetson-sdmmc-overlay.dtbo /boot/ + sudo /opt/nvidia/jetson-io/config-by-hardware.py -n "reComputer sdmmc" + ``` + +- **步骤 3**. 重启 + + ```bash + reboot + ``` + +## 技术支持与产品讨论 + +感谢您选择我们的产品!我们致力于为您提供各种支持,以确保您在使用我们的产品时体验顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。 + +
+ + +
+ +
+ + +
+ diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_J1010_with_Jetson_getting_start.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_J1010_with_Jetson_getting_start.md new file mode 100755 index 000000000000..8ed50aeac799 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_J1010_with_Jetson_getting_start.md @@ -0,0 +1,147 @@ +--- +description: 入门使用reComputer J1010 +title: 入门使用reComputer J1010 +keywords: +- reComputer +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_J1010_with_Jetson_getting_start +last_update: + date: 6/29/2023 + author: Lakshantha +--- + +# 入门使用reComputer J1010 + +
+ + + +## 介绍 +reComputer J1010 是一款紧凑型边缘计算机,内置NVIDIA Jetson Nano 4GB生产模块,配备128个NVIDIA CUDA®核心,提供0.5 TFLOPs(FP16)算力以运行AI框架和应用程序,如图像分类、目标检测和语音处理。生产模块提供16GB eMMC、更长的保修期和在生产环境中5-10年的操作寿命。([Jetson 常见问题解答](https://developer.nvidia.com/embedded/faq)). 我们也有reComputer [J20系列](https://www.seeedstudio.com/reComputer-J2021-p-5438.html?queryID=14111cbf2ca4f2951fd8a4c1762eb435&objectID=5438&indexName=bazaar_retailer_products) 采用Jetson Xavier NX模块构建,提供21 TOPS的AI性能,适用于更复杂的AI工作负载。 + +除了Jetson模块,reComputer J1010还包括 [J101载板](https://www.seeedstudio.com/reComputer-J101-v2-Carrier-Board-for-Jetson-Nano-p-5396.html) 带有板载 microSD 卡插槽、1*USB 3.0、2*USB2.0、HDMI、M.2 密钥 E 用于 WiFi、LTE 和蓝牙、RTC、树莓派 GPIO 40 针脚等功能,以及散热器和铝制外壳。该设备预装了 Jetpack 4.6.1,只需插上 USB C 5V/3A 电源适配器、键盘、鼠标和以太网线缆,即可开始您的嵌入式 AI 之旅!如果您需要更多的 USB 3.0 和板载 M.2 密钥 M 用于连接 SSD,可以选择 reComputer J1020。 + +注意:我们收到客户询问,他们需要更多存储空间,超出了我们提供的16GB eMMC。从2022年7月30日起,我们在产品上增加了microSD卡插槽。 [载板](https://www.seeedstudio.com/reComputer-J101-v2-Carrier-Board-for-Jetson-Nano-p-5396.html) 电脑型号 J1010。请检查。 [guide](https://wiki.seeedstudio.com/Flash_System_on_SD_card/#step-1-clone-this-repo) 向microSD卡刷入引导镜像,并调整I/O速度。 + + +## 特征 + +- **手掌大小的边缘 AI 全系统** 提供 AI 算力 0.5 TFLOPS (FP16),以及嵌入式开发丰富的接口。 +- **准备好进行开发和部署:** 预装的 NVIDIA JetPack 支持整个 [Jetson 软件栈](https://developer.nvidia.com/embedded/develop/software) 行业领先的 [[AI开发工具](https://wiki.seeedstudio.com/Jetson-AI-developer-tools/) 针对于诸如物流、零售、服务、农业、智慧城市、医疗保健和生命科学等领域的强大人工智能应用的构建。 +- **节能环保:** 由 Type C 5V/3A 供电,功耗仅需 5 瓦。 +- **可扩展的** 带有内置接口和机箱的电脑可以通过后部的安装孔固定在墙壁上。 + +## 规格说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
规格说明reComputer J1010reComputer J1020NVIDIA Jetson Nano Developer Kit-B01
模块Jetson Nano 4GB (正式版本)Nano (非生产版本)
储存16 GB eMMCMicroSD (不包含卡)
SD卡插槽包括在载板上-包括在内(模块上)
视频编码器4K30 | 2x1080p60 | 4x1080p30 | 4x720p60 | 9x720p30 (H.265 & H.264)4Kp30 | 4x 1080p30 | 9x 720p30 (H.264/H.265)
视频解码器4K60 | 2x 4K30 | 4x 1080p60 | 8x 1080p30 | 9x 720p60 (H.265 & H.264) + 4Kp60 | 2x 4Kp30 | 8x 1080p30 | 18x 720p30 (H.264/H.265)
千兆以太网1*RJ45 Gigabit Ethernet Connector (10/100/1000)
USB1 * USB 3.0 Type A; +2 * USB 2.0 Type A; +1 * USB Type C for device mode; +1 * USB Type C for 5V power input4 * USB 3.0 Type-A ; +1 * Micro-USB port for device mode;4 * USB 3.0 Type-A; +1 * Micro-USB port for 5V power input or for device mode
CSI相机连接2*CSI Camera (15 pos, 1mm pitch, MIPI CSI-2 )
显示1*HDMI Type A1*HDMI Type A; +1*DP
风扇1* FAN Connector (5V PWM)1* FAN (5V PWM)
M.2 KEY E1*M.2 Key E1*M.2 Key E (Disabled)1*M.2 Key E
M.2 KEY M-1*M.2 Key M-
RTCRTC套接字(保留)-
多功能接口1* 40-Pin header
电源USB-Type C 5V⎓3ADC Jack 12V/2ADC Jack 5V⎓4A; +Micro-USB 5V⎓2A
尺寸130 mm x 120 mm x 50 mm (with case)100 mm x 80 mm x 29 mm
+ +## 给J1010电脑烧录Flash JetPack + +:::info +更多信息请参见[维基](/reComputer_J1010_J101_Flash_Jetpack)页面,因为J1010使用J101主板。 +::: + diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_GPIO.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_GPIO.md new file mode 100755 index 000000000000..9e0c3232656d --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_GPIO.md @@ -0,0 +1,179 @@ +--- +description: 如何使用 reComputer Jetson 板上的 40 针 GPIO +title: 如何使用 reComputer Jetson 板上的 40 针 GPIO +keywords: + - Edge + - reComputer +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_Jetson_GPIO +last_update: + date: 04/12/2023 + author: Lakshantha +--- + +# 如何使用 reComputer Jetson 板上的 40 针 GPIO + +本维基演示了如何访问和控制 reComputer Jetson 主板的 40 针 GPIO。以 reComputer J4012 为例进行说明,不过其他 reComputer Jetson 主板的操作步骤也大致相同。 + +## 开始之前 + +在开始使用 reComputer Jetson 设备上的 40 针 GPIO 之前,您需要了解以下信息。 + +- GPIO引脚的电压为3.3V +- 由于GPIO引脚的电流限制,您无法通过GPIO对reComputer Jetson板进行反向供电 + +## 查找 GPIO 名称 + +**步骤 1:** 打开 reComputer Jetson 板的数据表。您可以在下面找到所有可用 reComputer Jetson 板的数据表。 + +- [J101 载板](https://files.seeedstudio.com/products/102991694/reComputer%20J101V2%20datasheet.pdf) + - reComputer J1010 + +- [A206 载板](https://files.seeedstudio.com/products/114110049/A206%20carrier%20board%20pin%20description.pdf) + - reComputer J2011 + - reComputer J2012 + - reComputer J1020 + +- [J202 载板](https://files.seeedstudio.com/wiki/reComputer/reComputer-J202-carrier-board-datasheet.pdf) + - reComputer J2021 + - reComputer J2022 + - reComputer J1020 V2 + +- [J401 载板](https://files.seeedstudio.com/wiki/reComputer-J4012/reComputer-J401-datasheet.pdf) + - reComputer J4011 + - reComputer J4012 + - reComputer J3010 + - reComputer J3011 + +我们已经选择了该数据表。 [reComputer J4012](https://files.seeedstudio.com/products/NVIDIA/reComputer-J401x-datasheet.pdf). + +**步骤 2:** 找到扩展针脚部分 **40 Pin 扩展 - J10** + +
+ +**步骤 3:** 找到**引脚编号**中默认用途为**GPIO**的引脚名称,并确保位于**默认用途/描述**列下。 + +例如,检查 **标头引脚 15**。它的**默认用途**是**通用输入/输出 (GPIO)**。 + +
+ +**步骤 4:**对于同一个引脚,在 **模块引脚名称** 列下找到其名称。在我们的示例中,它是 **GPIO12**。 + +## 访问和控制GPIO + +现在我们有两种不同的方法来访问Jetson主板上的GPIO,具体取决于是否可以直接获取GPIO标签。使用第一种方法,我们可以在设备内执行一个命令后直接知道GPIO引脚标签。然而,如果引脚标签没有直接显示,您可以使用第二种方法。 + +### 方法 1 + +在此方法中,GPIO的dts文件已包含在您刷写的JetPack版本中,并且已经正确标注了GPIO引脚标签,因此您可以直接从设备上获取引脚标签。 + +**步骤 1:** 进入 Jetson 设备的终端并执行此命令 + +```sh +sudo su +cat /sys/kernel/debug/gpio +``` + +**步骤 2:**根据之前获得的 **模块引脚名称**,找到对应的 **GPIO 编号** +
+ +在这种情况下,对应于 **GPIO12** 的是 **gpio-268**。 + +**步骤 3:** 在终端中执行以下命令以导出 gpio-268 引脚 + +```sh +cd /sys/class/gpio +echo 268 > export +``` + +**步骤 4:** 设置方向和值。这里方向可以是 **输入/输出**,值可以是 **0/1**。 + +例如,将GPIO12设置为高电平 + +```sh +cd gpio268 +echo "out" > direction +echo 1 > value +``` + +将 GPIO12 设置为低电平 + +```sh +echo 0 > value +``` + +**步骤 5:** 要将您导出的 GPIO 引脚恢复到默认状态,请执行以下操作。 +```sh +cd .. +echo 268 > unexport +``` + +### 方法 2 + +在此方法中,GPIO的dts文件并未包含在您刷写的JetPack版本中,因此针对GPIO的标签信息并未正确标注。因此,我们需要参考另一个文档(pinmux)来获取这些引脚标签信息。请根据所使用的SoM,参考以下链接。 + +- [Jetson Nano](https://developer.nvidia.com/jetson-nano-pinmux) +- [Jetson Xavier NX](https://developer.nvidia.com/jetson-xavier-nx-pinmux-configuration-template-v106) +- [Jetson Orin NX/ Nano](https://developer.nvidia.com/downloads/jetson-orin-nx-and-orin-nano-series-pinmux-config-template) + +**步骤 1:** 根据您使用的 SoM 下载相应的 pinmux 文档。在此,我们选择 [Jetson Orin NX/ Nano](https://developer.nvidia.com/downloads/jetson-orin-nx-and-orin-nano-series-pinmux-config-template) 文档 + +**步骤 2:** 根据我们之前获得的模块引脚名称,找到相应的 GPIO 标签(在"客户使用"一列下)。例如,对于 **GPIO12**,它对应的是 **GPIO3_PN.01**,这里我们指的是 **PN.01**。 + +
+ +**步骤 3:** 进入 Jetson 设备的终端并执行此命令 + +```sh +sudo su +cat /sys/kernel/debug/gpio +``` + +**步骤 4:** 找到先前获得的 **GPIO 标签** 对应的 **GPIO 编号** + +
+ +在这种情况下,**gpio-433** 对应于 **PN.01**,也等同于 **GPIO12**。 + +**步骤 5:** 在终端中执行以下命令以导出 gpio-433 引脚 +```sh +cd /sys/class/gpio +echo 433 > export +``` + +**步骤 6:** 设置方向和设置值。这里的方向可以是 **in/out**,值可以是 **0/1**。 + +例如,将GPIO12设置为高电平 + +```sh +cd PN.01 +echo "out" > direction +echo 1 > value +``` + +将GPIO12设置为低电平 + +```sh +echo 0 > value +``` + +**步骤 7:** 要将您导出的 GPIO 引脚恢复为默认状态,请执行以下操作: + +```sh +cd .. +echo 433 > unexport +``` + +## 技术支持和产品讨论 + +感谢您选择我们的产品!我们将为您提供各种支持,确保您使用我们产品的体验尽可能顺利。我们提供多种沟通渠道,以满足不同的偏好和需求。 + +
+ + +
+ +
+ + +
\ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Memory_Expansion.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Memory_Expansion.md new file mode 100755 index 000000000000..2c631aeae32f --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Memory_Expansion.md @@ -0,0 +1,665 @@ +--- +description: 适用于Jetson的内存扩展器 +title: 适用于Jetson的内存扩展器 +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_Jetson_Memory_Expansion +last_update: + date: 01/05/2023 + author: w0x7ce + +no_comments: false # for Disqus + +--- + +# 适用于Jetson的内存扩展器 + +Jetson的reComputer售卖时附带16GB的eMMC存储空间,预装有Ubuntu 18.04 LTS和NVIDIA JetPack 4.6,因此剩余的可用用户空间大约只有2GB,这对于一些项目的培训和部署来说是一个重大障碍。本教程将介绍基于这一情况下,对不同型号reComputer进行扩展的过程,并帮助开发者通过将系统转移到外部存储设备上来扩展他们的系统。 + +## 扩容基础知识 + +系统安装的磁盘上的第一个扇区称为**主引导记录(MBR)**,其中包含有关**引导加载程序(BootLoader)**、分区表和固定标识符**55AA**的信息。Linux的启动过程中,**引导加载程序**和**内核**经历了两个重要阶段。 + +**第一阶段:** 引导加载程序初始化一个临时的根文件系统 **(ramfs)**。Ramfs 包含在启动时必要的驱动程序、文件系统(fs)、网络(net)等配置程序。之后,引导加载程序的控制权转移到内核,以便内核可以提取这些程序,将它们移至内存 **(RAM)** 并运行它们以加载各种功能模块。 + +**第二阶段:** 在内核加载了与ramfs一起的必要模块后,它释放系统并配置真正的根文件系统(rootfs)以挂载到真正的根目录。 + +1. 在上述两个阶段中,我们不需要修改加载带有ramfs的功能模块的内核部分(第1阶段),因此即使重新计算机已扩展,它仍然需要使用eMMC。 +2. 我们需要修改的是第二阶段,它将根文件系统挂载到外部内存,从而实现扩展。 + +
+ +## 容量扩展说明 + +1. 通过外部存储扩展的主要原则是将rootfs设置在外部存储设备上。 + +2. 这种扩展方法会修改Linux内核级别的系统文件,可能会遇到一些难以解决的问题。在按照本教程完成扩展时,您应该使用一台新的reComputer和一个新的存储设备,并**不要尝试在设备上存储重要文件**。如果一切不如预期般顺利,您可能需要重新格式化存储设备甚至reComputer,在最终保留选项上,如果可能的话,我们将提供通过串口帮助您恢复备份,但是您需自行承担任何数据损失。 + +3. 这种扩展过程不需要重新编译内核,与在线其他早期的扩展方法相比,安装时间可以节省约40分钟。 + +## 通过载板上的M.2插槽和固态硬盘进行扩展 + +固态硬盘,也被称为固态驱动器,通常被用作笔记本电脑、台式电脑等的主要存储设备。由于其高可靠性和快速的数据读写速率,它是扩展reComputer的最佳选择。下表列出了目前可用于固态硬盘扩展解决方案的reComputer系列产品。reComputer J1010不支持固态硬盘扩展的主要原因是载板未配备适用的M.2插槽。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
产品reComputer J1020reComputer J2011reComputer J2012reComputer J2021
SKU + 110061361110061363110061401110061381
产品图 +
配备的模块 + Jetson Nano 4GJetson Xavier NX 8GBJetson Xavier NX 16GBJetson Xavier NX 8GB
操作载体板 + Jetson A206Jetson A206Jetson A206J202
+ + +### 软件和硬件要求 + +为了证明使用SSD进行扩展解决方案的成功,需要满足以下条件,这些是扩展成功的基本要求。 + + + + + + + + + + + + + +
software and hardware requirements
reComputer for Jetson + JetPack versions 4.4 ~ 4.6
+ Carrier board must contain M.2 M-Key slot
SSD + SSD need to be fourth generation extended file system (Ext4)
+ M.2 M-Key interface with NVMe protocol
+ Recommended capacity ≤ 512 GB
+ + +注意!!! +更新后的JetPack版本尚未经过扩展测试,因此无法保证扩展的稳定性或成功性,请仔细遵循本教程。 + +SSD需要是M.2 M-Key,否则将无法匹配载板上的接口。 + +
+ +具有非扩展第四代文件系统(Ext4)的存储设备无法完成扩展操作。 + +### 步骤 + +**步骤 1.** 安装SSD + +Follow the steps in the [Hardware Instructions](https://wiki.seeedstudio.com/reComputer_Jetson_Series_Hardware_Layout/) to install the SSD for reComputer. + +**步骤 2.** 准备固态硬盘 + +使用快捷键`Ctrl+F`或点击左上角的Ubuntu图标搜索**磁盘**,并打开随Ubuntu 18.04提供的磁盘工具。 + +
+ +在左侧选择您的固态硬盘,然后在菜单栏下方的右上角选择**格式化磁盘**。 + +
+ + +将您的SSD格式化为GPT格式。将出现一个弹出窗口询问您进行确认并输入您的用户密码。 + +
+ + +然后,我们点击中间的**+**添加一个磁盘字符。 + +
+ + +点击“下一页”。 + +
+ + +请给你的SSD取一个名称,然后在类型中选择**Ext4**,点击“创建”。这样,我们已经按照扩展需求完成了SSD的准备工作。 + +
+ + +**步骤 3.** 构建将根目录定位到SSD + +使用git命令下载我们需要使用重新计算机脚本文件。. + +```sh +$ git clone https://github.com/limengdu/rootOnNVMe.git +$ cd rootOnNVMe/ +``` + +然后执行以下命令,将来自eMMC的根目录中的文件构建到SSD中,此步骤的等待时间取决于您使用的根目录的大小。 + +```sh +$ ./copy-rootfs-ssd.sh +``` + +**步骤 4.**配置环境并完成扩展 + +执行以下命令以完成rootfs的配置。 + +```sh +$ ./setup-service.sh +``` + +
+ +重新启动计算机时,您会发现eMMC已变成主界面上的外部存储设备,并且您会看到系统占用空间已减少,因此扩展成功。 + +
+ +!!!注意 + 脚本文件中默认的SSD路径为`/dev/nvme0n1p1`,这也是reComputer默认分配的路径。如果发现您的SSD路径与命令`sudo fdisk -l`不匹配,请将rootOnNVMe中的文件**copy-rootfs-ssd.sh**、**data/setssdroot.service**和**data/setssdroot.sh**中所有的`/dev/nvme0n1p1`路径更改为您SSD所在的路径。 +
+ + + 以上的扩展不会删除eMMC中原始根目录的内容。如果您不想从SSD启动,可以移除SSD,系统仍然会从eMMC启动。 + +## 通过USB存储设备进行容量扩展。 + +USB存储设备,如USB闪存驱动器和移动硬盘,在生活的各个领域广泛用作外部存储,USB扩展也适用于reComputer。以下表格列出了目前可用于USB扩展解决方案的reComputer产品。 + + + + + + + + + + + + + + + + + + + +
产品reComputer J1010
SKU + 110061362
产品图 +
模组 + Jetson Nano 4G
载板 + J1010 carrier board
+ + +通过 USB 存储设备进行扩展的最大优势是 USB 设备的高度便利性和简单的拔插操作。然而,即使使用高速的 USB 3.2 接口,数据传输速率远低于标准 PCIe 总线的速度,因此 SSD 扩展方法在稳定性、可靠性和数据传输速度方面更为优越。 + +### 软件和硬件要求 + +使用USB进行扩展方案的成功实施,需要满足以下条件,这是验证扩展是否可以成功完成的基本要求。 + + + + + + + + + + + + + +
软件和硬件要求
reComputer for Jetson + JetPack versions 4.4 ~ 4.6
+ 装备模块需要Jetson Nano
USB 存储设备 + USB存储设备需要为第四代的扩展文件系统(Ext4)。
+ USB存储设备电源供应电流 ≤ 0.5 A
+ + +!!!注意。 + 更新后的JetPack版本还未经过扩展测试,因此无法保证扩展的稳定性或成功性,请仔细按照这个教程操作。 + +大容量USB存储设备需要保证reComputer的正常供电以确保正常运行,不建议使用容量超过512GB的USB存储设备。电源供应不足会导致reComputer关机。 + +除了Jetson Nano外装备的模块目前不支持使用此方法进行扩展。 + +非扩展第四代文件系统(Ext4)的存储设备无法完成扩展操作。 + +### 扩展步骤 + +**步骤 1.** 准备必要的文件。 + +使用git命令下载我们需要用来重新计算机的脚本文件。 + +```sh +$ git clone https://github.com/limengdu/bootFromUSB.git +$ cd bootFromUSB +``` + +**步骤 2.** 准备USB存储设备 + +将USB存储设备连接到reComputer,并通过快捷键`Ctrl+F`或单击左上角的Ubuntu图标并搜索** Disks**来打开随Ubuntu 18.04提供的Disks工具。 + +
+ +在左侧选择您的USB存储设备,然后在菜单栏下方的右上角选择**格式化磁盘**。 + +
+ + +将您的USB存储设备格式化为GPT格式。将会出现一个弹窗,要求您确认并输入您的用户密码。 + +
+ + +然后,我们点击中间的**+**来添加一个磁盘字符。 + +
+ + +点击“下一步”。 + +
+ + +请为您的USB存储设备命名,选择**Ext4**类型,然后点击“创建”。这样,根据扩展要求,我们已经完成了USB存储设备的准备工作。 + +
+ + +**步骤 3.** 安装 USB 存储设备 + +根据**步骤2**准备的USB存储设备可以在磁盘软件中看到,状态是未挂载的。 + +!!!Note + 如果您发现您的USB设备在格式化后被自动挂载,请跳过此步骤。 + +
+ + +我们使用以下命令来挂载USB设备。 + +```sh +$ mkdir /media/USB/ +$ sudo mount /media/USB/ +``` + +``是指USB存储设备的路径,此参数可以在磁盘软件的设备中查看,也可以用命令`sudo fdisk -l`进行查询。例如,对于我的USB设备,我可以使用以下命令将`/dev/sda1`挂载到`/media/USB/`。 + +```sh +$ sudo mount /dev/sda1 /media/USB/ +``` + +请使用以下命令检查设备的挂载位置。 + +```sh +$ sudo findmnt -rno TARGET +``` + +对于我的USB设备,我需要使用的命令是: + +```sh +$ sudo findmnt -rno TARGET /dev/sda1 +``` + + +**步骤 4.**将系统复制到USB存储设备中。 + +**copyRootToUSB.sh**脚本将整个eMMC系统的内容复制到USB存储设备中。当然,USB存储设备应该比eMMC拥有更多的存储空间。 + +所使用的命令如下。 + +```sh +usage: ./copyRootToUSB.sh [OPTIONS] +-d | --directory Directory path to parent of kernel + +-v | --volume_label Label of Volume to lookup + +-p | --path Device Path to USB drive (e.g. /dev/sda1) + +-h | --help This message +``` + +通常,对于常规的扩展需求,我们可以在参数`[选项]`中简单选择`-p`,然后我们需要添加USB设备的路径(例如`/dev/sda1`),这是我们在**步骤3**中得到的。例如,对于我的USB设备,我需要使用的完整命令是: + +```sh +$ ./copyRootToUSB.sh -p /dev/sda1 +``` + +执行此命令所需的时间取决于您的eMMC存储的文件大小。 + +**步骤 5.**查询USB设备的UUID。 + +为了确保准确性,我们需要查找USB设备的UUID。 + +```sh +$ ./partUUID.sh +``` + +此命令的默认路径为**sda1 (/dev/sda1)**,但您也可以确定其他USB设备的UUID。请使用`-d`标志指定`/dev/`。例如,对于我的USB设备,路径将是: + +```sh +$ ./partUUID.sh -d sdb1 + +UUID of Disk: /dev/sdb1 +e34d67bb-83bb-4fc5-b9a4-a1388d2b2be5 +Sample for /boot/extlinux/extlinux.conf entry: +APPEND ${cbootargs} root=UUID=e34d67bb-83bb-4fc5-b9a4-a1388d2b2be5 rootwait rootfstype=ext4 +``` + +!!!注意 + 如果返回的UUID在格式和长度上与上面的示例不同,则设备可能未格式化为Ext4,请重新从**步骤2**开始! + +**步骤 6.** 修改引导配置以完成扩展 + +我们需要首先备份引导配置文件。 + +```sh +$ sudo cp /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.bak +``` + +这一步骤是USB设备扩展操作中最重要且最危险的步骤。编辑 `/boot/extlinux/extlinux.conf` 文件和 `/media/nvidia/boot/extlinux/extlinux.conf`,然后添加一个条目指向新的rootfs,位置为USB设备的路径,请填写在下面的参数``中。路径信息可以在**步骤3**中获取。 + +```sh +$ sudo vi /boot/extlinux/extlinux.conf +$ sudo vi /media/nvidia/boot/extlinux/extlinux.conf + +LABEL primary + MENU LABEL primary kernel + LINUX /boot/Image + INITRD /boot/initrd + APPEND ${cbootargs} quiet root= rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 sdhci_tegra.en_boot_part_access=1 +``` + +我正在使用的USB存储设备,修改后的`/boot/extlinux/extlinux.conf`文件和`/media/nvidia/boot/extlinux/extlinux.conf`文件内容如下: + +```sh +TIMEOUT 30 +DEFAULT primary + +MENU TITLE L4T boot options + +LABEL primary + MENU LABEL primary kernel + LINUX /boot/Image + INITRD /boot/initrd + APPEND ${cbootargs} quiet root=/dev/sda1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 sdhci_tegra.en_boot_part_access=1 +# APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 sdhci_tegra.en_boot_part_access=1 + +# When testing a custom kernel, it is recommended that you create a backup of +# the original kernel and add a new entry to this file so that the device can +# fallback to the original kernel. To do this: +# +# 1, Make a backup of the original kernel +# sudo cp /boot/Image /boot/Image.backup +# +# 2, Copy your custom kernel into /boot/Image +# +# 3, Uncomment below menu setting lines for the original kernel +# +# 4, Reboot + +# LABEL backup +# MENU LABEL backup kernel +# LINUX /boot/Image.backup +# INITRD /boot/initrd +# APPEND ${cbootargs} +``` + +保存文件并重新启动计算机,系统根目录将切换到 USB 存储设备,扩容完成。 + +
+ + +## 通过串行控制台恢复系统备份 + +当您的系统由于错误或其他原因而无法正常引导时(一个常见情况是在引导时Nvidia图标不断出现),那么您在扩容期间制作的备份将发挥重要作用。我们理解您此刻的焦虑,但请耐心跟随以下步骤将ReComputer重新调入串行控制台,我们将操作U-boot来恢复您的备份。 + +### 材料准备 + + + + + + + + + + + + + + + + + + + +
材料准备描述
+
Ubuntu主机x1.
+
无系统的 reComputer Jetson x1
+
UART转USB模块x1
+
母对母杜邦线 x3
+ + +### 访问串行控制台的步骤。 + +**第一步。** 将UART转USB模块连接到reComputer。 + +将reComputer连接到UART至USB模块,按照下表中的布线说明进行连接。 + + + + + + + + + + + + + + + + + + + + + + + + + + +
reComputer UART to USB module
GND-->GND
UART TXD-->RX
UART RXD-->TX
+ + +!!!Tip + reComputer与UART至USB模块之间的VCC接口无需连接。 + +连接电缆后,暂时无需打开reComputer电源,请将其放在一旁。 + +请断开扩展的外部存储器。 + +**第2步。** 在Ubuntu主机上安装并启动minicom + +如果您的Ubuntu主机没有安装minicom,则可以使用以下命令在计算机上安装minicom。 + +```sh +$ sudo apt-get install minicom +``` + +安装完成后,请输入命令启动minicom。 + +```sh +$ sudo minicom +``` + +
+ +**步骤 3.** 准备配置minicom + +在minicom菜单栏中,我们打开串口并配置它,以便通过minicom获取reComputer启动信息。在菜单栏中,按键盘**o**键以访问配置屏幕。使用键盘上下箭头键控制光标移动到**串口设置**。 + +
+ +**步骤4。** 将reComputer连接到Ubuntu主机 + +此刻,我们创建一个新的命令行窗口,并在窗口中输入命令来监视新设备的访问。 +```sh +$ dmesg --follow +``` + +在这一点上,我们将启动reComputer,并将UART连接到USB模块,reComputer通过USB端口连接到Ubuntu主机。命令行窗口将显示新连接设备的名称,我们需要找到以**tty**开头的片段并记下来。 + +
+ +**步骤5。** U-boot操作 + +回到minicom,将在**步骤4**中获得的设备名称填入**串行设备**中。同时,请检查波特率是否配置为**115200**。 + +
+ +在修改后,按回车键保存。选择**另存为dfl配置**并退出minicom界面。 + +
+ +重新输入命令`sudo minicom`,输入minicom后,我们将在窗口中看到计算机的启动信息。 + +
+ +我们可以通过使用返回的信息和使用帮助命令来查看U-boot系统下所有可用命令,来排查reComputer无法启动的原因。了解如何使用这些命令是解决问题所必需的,当然这可能会很困难。 + +```sh +Tegra210 (P3450-0000) # help +? - alias for 'help' +base - print or set address offset +bdinfo - print Board Info structure +blkcache - block cache diagnostics and control +boot - boot default, i.e., run 'bootcmd' +bootd - boot default, i.e., run 'bootcmd' +bootefi - Boots an EFI payload from memory +bootelf - Boot from an ELF image in memory +booti - boot Linux kernel 'Image' format from memory +bootm - boot application image from memory +bootp - boot image via network using BOOTP/TFTP protocol +bootvx - Boot vxWorks from an ELF image +cmp - memory compare +coninfo - print console devices and information +cp - memory copy +crc32 - checksum calculation +dcache - enable or disable data cache +dfu - Device Firmware Upgrade +dhcp - boot image via network using DHCP/TFTP protocol +dm - Driver model low level access +echo - echo args to console +editenv - edit environment variable +enterrcm - reset Tegra and enter USB Recovery Mode +env - environment handling commands +exit - exit script +ext2load - load binary file from a Ext2 filesystem +ext2ls - list files in a directory (default /) +ext4load - load binary file from a Ext4 filesystem +ext4ls - list files in a directory (default /) +ext4size - determine a file's size +ext4write - create a file in the root directory +false - do nothing, unsuccessfully +fatinfo - print information about filesystem +fatload - load binary file from a dos filesystem +fatls - list files in a directory (default /) +fatmkdir - create a directory +fatrm - delete a file +fatsize - determine a file's size +fatwrite - write file into a dos filesystem +fdt - flattened device tree utility commands +fstype - Look up a filesystem type +go - start application at address 'addr' +gpio - query and control gpio pins +gzwrite - unzip and write memory to block device +help - print command description/usage +i2c - I2C sub-system +icache - enable or disable instruction cache +imxtract - extract a part of a multi-image +itest - return true/false on integer compare +ln - Create a symbolic link +load - load binary file from a filesystem +loadb - load binary file over serial line (kermit mode) +loads - load S-Record file over serial line +loadx - load binary file over serial line (xmodem mode) +loady - load binary file over serial line (ymodem mode) +loop - infinite loop on address range +ls - list files in a directory (default /) +lzmadec - lzma uncompress a memory region +md - memory display +mii - MII utility commands +mm - memory modify (auto-incrementing address) +mmc - MMC sub system +mmcinfo - display MMC info +mw - memory write (fill) +nm - memory modify (constant address) +nvme - NVM Express sub-system +part - disk partition related commands +pci - list and access PCI Configuration Space +ping - send ICMP ECHO_REQUEST to network host +printenv - print environment variables +pxe - commands to get and boot from pxe files +reset - Perform RESET of the CPU +run - run commands in an environment variable +save - save file to a filesystem +saveenv - save environment variables to persistent storage +setenv - set environment variables +sf - SPI flash sub-system +showvar - print local hushshell variables +size - determine a file's size +sleep - delay execution for some time +source - run script from memory +sspi - SPI utility command +sysboot - command to get and boot from syslinux files +test - minimal test like /bin/sh +tftpboot - boot image via network using TFTP protocol +true - do nothing, successfully +ums - Use the UMS [USB Mass Storage] +unzip - unzip a memory region +usb - USB sub-system +usbboot - boot from USB device +version - print monitor, compiler and linker version +``` + +## 技术支持与产品讨论 +感谢您选择我们的产品!我们在这里提供不同的支持,以确保您与我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同偏好和需求。 + +
+ + +
+ +
+ + +
diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Series_Hardware_Layout.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Series_Hardware_Layout.md new file mode 100755 index 000000000000..dc81c1af1298 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Series_Hardware_Layout.md @@ -0,0 +1,336 @@ +--- +description: 硬件布局,reComputer的设计。 +title: 硬件布局,reComputer的设计。 +keywords: + - Edge + - reComputer +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_Jetson_Series_Hardware_Layout +last_update: + date: 01/03/2023 + author: w0x7ce + +--- + +# 硬件布局,reComputer的设计。 + +

pir

+ +您将在这里了解Jetson系列硬件布局的reComputer的基本概念。与此同时,您将了解如何从载板中移除和安装核心板,如何安装摄像头、M.2无线模块或硬盘等。 + +## reComputer 系列放置 + +当面对 reComputer 接口的背板时,在机箱右侧有 4 个防滑垫,便于竖立,如下图所示。 + +

pir

+ +reComputer机箱底部是一个悬浮结构,可以使用绑带固定在一些不便利的结构上。机箱底板有4个固定孔,便于固定在正面或斜坡上。 + +

pir

+ +## reComputer 系列顶盖 + +当面对 reComputer 接口的背板时,可以看到机箱右侧有4个防滑垫,其中有一个金属按钮,如下图所示: + +

pir

+ +按下按钮向上推,以抬起箱子的顶盖,然后您可以打开它以移除顶盖。 + +

pir

+ +## 从载板上取下核心板。 + +打开机箱后,您可以看到插入在载板上的模块,如下图所示。按照以下步骤,可以从载板上取下模块。 + +

pir

+ +- **步骤1**:在移除核心版本之前,首先您必须确认风扇电源是否连接。如果连接了,您需要从插座中拔掉风扇电源(对于Jetson Nano可能没有风扇,您可以跳过此步骤)。 + +- **步骤2**。用十字螺丝刀取下固定核心板的螺丝。 + +

pir

+ +- 第三步。将支架上的夹子向外打开,核心板将自动弹起。 + +

pir

+ +- **第四步**。将核心板以对角向上移除。 + +

pir

+ +将模块安装在载板上 + +- **步骤1**。找到载板上与模块连接器对应的Jetson SODIMM连接器指针。 + +

pir

+ +- **第二步**。将模块斜插入约20度到载板的插槽中。按下去,它将固定在载板上。 + +

pir

+ +!!! Note + 在正确的安装下,您可能会发现接口上显示了一些连接器指。一旦暴露了许多连接器指,系统就会变得不稳定。 +

pir

+ +- **第三步**。使用十字螺丝刀拧紧螺丝。 + +

pir

+ +- **步骤 4**。如果模块包括一个冷却风扇,请将风扇的电源插头插入板载托架上的电源插座。 + +

pir

+ +## 将reComputer机箱中的Carrier Coard移除。 + + +当我们想要安装M.2模块或CSI相机以及其他操作时,我们需要将载板从reComputer机箱中取出,以便更轻松地进行操作。载板通过4颗螺丝固定在机箱底座上,如下图所示: + +

pir

+ +请按照以下所示的方式拆下4个固定螺丝。 + +

pir

+ +将载板与模块一起从机箱中取出。 + +

pir

+ +## 将reComputer配备相机模块。 + +reComputer的载板都配有两个CSI接口。这些接口通常用于连接摄像头,用于一些识别项目。我们以J1010载板为例,指导您如何配备和使用。[Raspberry Pi Camera Module V2](https://www.seeedstudio.com/Raspberry-Pi-Camera-Module-V2.html) 在重启计算机. + +-**第一步**。将摄像头模块安装在载板上。 + +!!!Note + 安装之前,请关闭电脑,拔掉电源线,并打开机箱的顶盖。 +为了方便以下演示,我们从机箱和模块中取下托架板。实际操作只需要打开顶盖。 + +选择您想要使用的CSI连接器,然后轻轻地将两侧的黑色保持卡拉起。 + +
+ +确保在将电缆插入插槽之前将黑色槽口放在一边。 + +
+ +注意电缆的方向。您可以看到电缆引脚的一侧面向载板,而蓝色的一侧朝外。 + +
+ +- **步骤 2**。打开并启动 reComputer。 + +将相机电缆插入后,确保模块、载板和外围设备都已正确安装在位,然后通电。 + +- **第三步**。检查相机是否被识别。 + +在命令行窗口中输入以下命令,查看当前是否有相机设备可用。 + +```shell +ls /dev/video0 +``` + +如果输出如下,表示相机已成功检测。 + +
+ +如果您找不到设备文件,请检查您的排线是否正确放置,并确保您的树莓派摄像头是V2版本,因为V1版本无法识别。 + +- 第四步。应用相机。 + +使用`sensor_mode`属性与GStreamer nvarguscamerasrc元素一起,以指定相机。有效值为0或1(如果未指定默认为0)。 + +```shell +# Simple Test +# Ctrl^C to exit +# sensor_id selects the camera: 0 or 1 on Jetson Nano B01 +$ gst-launch-1.0 nvarguscamerasrc sensor_id=0 ! nvoverlaysink +``` + +在命令行窗口中,您可以使用以下命令来测试相机的使用情况。 + +运行此命令后,reComputer 将在全屏显示由相机捕捉的画面,直到您按下 `Ctrl+C`。 + +
+ +如果您有更多的相机使用需求,您可以参考[CSI-Camera 项目](https://github.com/JetsonHacksNano/CSI-Camera)自行探索和学习。 + +## 为reComputer配备无线模块。 + +在这里,我们将向您展示如何在 reComputer 上安装 M.2 Key E 无线模块。 + +所需设备和配件: + +- reComputer +- [英特尔® 双频无线AC 8265 无线模块](https://www.intel.cn/content/www/cn/zh/products/sku/123742/intel-dual-band-wirelessac-8265-desktop-kit/specifications.html) +- 2个IPEX到SMA母头外置天线适配器和SMA公头天线用于WIFI模块。 +- 螺丝刀和螺丝 + +

pir

+ +!!!Note + 安装M.2 Key E的无线模块需要额外的天线。由于模块在机箱内,甚至可能被挤压在模块和载板之间。没有天线,信号强度将受到严重影响。 + +- **第一步**。从reComputer机箱中拆下载板。 + +在安装无线模块之前,请按照下面所示的方法将载板从reComputer机箱上拆下。 + +

pir

+ +- **第二步**. 拿掉硅胶保护套 + +机箱中有4个保留的天线开口,用硅胶塞堵住,如下图所示。 + +

pir

+ +选择两个外侧的孔,将硅胶塞从外壳的外侧挤压至内侧,然后从内部取出硅胶塞以暴露天线孔。 + +

pir

+ +- **第三步**. 安装 SAM 头 + +请按照下图所示,在wifi孔中安装SAM头的螺母和螺母,注意将电缆端放置在机箱内。 + +

pir

+ +- **第四步**. 将无线模块插入M.2键E插槽。 + +!!!Note + M.2 Key E接口位于载板的底部或顶部。对于不同的载板,请参考载板硬件布局。在安装之前,您可能需要将核心板从载板上取下。 + +请按照下面的图片,找到载板上的M.2 Key E接口,并将无线模块插入接口插槽中。 + +

pir

+ +将无线模块牢固插入后,用螺丝固定。 + +

pir

+ +- **第五步**. 将2个IPEX插头插入无线模块的相应插座,连接方式是按钮连接,如下图所示。只需轻按即可,无需进行其他操作。 + +

pir

+ +安装应该像下面显示的图一样。这时候,要小心不要弄断无线模块和SAM天线底座之间的电线。 + +

pir

+ +- **第六步**. 将模块安装到底盘上。 + +小心将载板放入reComputer机箱中,然后安装螺丝。 + +

pir

+ +- **第7步**. 安装天线 + +将两个SAM公头天线安装到SAM母头插座并拧紧。这将是所有的硬件安装步骤。 + +

pir

+ +- **第8步**. 打开reComputer并连接到无线网络。 + +连接外围设备到 reComputer,然后通电。进入系统,在屏幕右上角打开网络选项。勾选**启用 Wi-Fi**选项后,您会看到附近的无线网络。选择可用的无线网络连接。 + +

pir

+ +恭喜,您已成功安装了无线模块并连接到网络。 + +## 硬件布局 + +### **J101 开发板** + +**Top View** + +

pir

+ +### **J202 开发板** + +**正面** + +

pir

+ +**背面** + +

pir

+ +### **Jetson A206搭载Jetson Nano的载板。** + +单击[此处](https://files.seeedstudio.com/wiki/recomputer-Jetson-20-1-H1/A206-carrier-board.pdf)查看Jetson A206主板(配备Jetson Nano)的引脚布局以及操作接口。 + +**正面** + +

pir

+ +**背面** + +

pir

+ +### **Jetson A206载板(配备Jetson Xavier NX)** + +单击[此处](https://files.seeedstudio.com/wiki/recomputer-Jetson-20-1-H1/A206-carrier-board.pdf)查看搭载Jetson Nano的Jetson A206载板的引脚和操作接口。 + +**正面** + +

pir

+ +**背面** + +

pir

+ +## 详细比较 + +| 产品 | reComputer J1010 | reComputer J1020 | reComputer J2011 | reComputer J2012 | +|:--------------------:|:------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:| +| Module | Nano | Nano | Xavier NX | Xavier NX 16GB | +| AI Perf | 472 GFLOPS | 472 GFLOPS | 21 TOPS | 21 TOPS | +| GPU | 128-core NVIDIA Maxwell™ | 128-core NVIDIA Maxwell™ | 384-core NVIDIA Volta™ GPU | 384-core NVIDIA Volta™ GPU | +| CPU | Quad-core ARM A57 @ 1.43 GHz | Quad-core ARM A57 @ 1.43 GHz | 6-core NVIDIA Carmel ARM®v8.2 64-bit CPU 6 MB L2 + 4 MB L3 | 6-core NVIDIA Carmel ARM®v8.2 64-bit CPU 6 MB L2 + 4 MB L3 | +| Memory | 4GB 64-bit LPDDR4 25.6GB/s | 4GB 64-bit LPDDR4 25.6GB/s | 8 GB 128-bit LPDDR4x 59.7GB/s | 8 GB 128-bit LPDDR4x 59.7GB/s | +| Storage | 16 GB eMMC | 16 GB eMMC | 16 GB eMMC | 16 GB eMMC | +| VIDEO ENCODER | 4K30 \| 2x1080p60 \| 4x1080p30 \| 4x720p60 \| 9x720p30 (H.265 & H.264) | 4K30 \| 2x1080p60 \| 4x1080p30 \| 4x720p60 \| 9x720p30 (H.265 & H.264) | 2x 4K60 \| 4x 4K30 \| 10x 1080p60 \| 22x 1080p30 (H.265) 2x 4K60 \| 4x 4K30 \| 10x 1080p60 \| 20x 108p30 (H.264) | 2x 4K60 \| 4x 4K30 \| 10x 1080p60 \| 22x 1080p30 (H.265) 2x 4K60 \| 4x 4K30 \| 10x 1080p60 \| 20x 108p30 (H.264) | +| VIDEO DECODER | 4K60 \| 2x 4K30 \| 4x 1080p60 \| 8x 1080p30 \| 9x 720p60 (H.265 & H.264) | 4K60 \| 2x 4K30 \| 4x 1080p60 \| 8x 1080p30 \| 9x 720p60 (H.265 & H.264) | 2x 8K30 \| 6x 4K60 \| 12x 4K30 \| 22x 1080p60 \| 44x 1080p30 (H.265) 2x 4K60 \| 6x 4K30 \| 10x 1080p60 \| 22x 1080p30 (H.264) | 2x 8K30 \| 6x 4K60 \| 12x 4K30 \| 22x 1080p60 \| 44x 1080p30 (H.265) 2x 4K60 \| 6x 4K30 \| 10x 1080p60 \| 22x 1080p30 (H.264) | +| Gigabit Ethernet | 1x RJ45 Gigabit Ethernet Connector (10/100/1000) | 1x RJ45 Gigabit Ethernet Connector (10/100/1000) | 1x RJ45 Gigabit Ethernet Connector (10/100/1000) | 1x RJ45 Gigabit Ethernet Connector (10/100/1000) | +| USB | 1 x USB 3.0 Type A Connector; 2 x USB 2.0 Type A Connector; 1 x USB Type C for Device mode; 1 x USB Type C for 5V power input | 4 x USB 3.0 Type A Connector; 1 x Micro-USB port for Device mode; | 4 x USB 3.0 Type A Connector; 1 x Micro-USB port for Device mode; | 4 x USB 3.0 Type A Connector; 1 x Micro-USB port for Device mode; | +| CSI Camera Connect | 2x CSI Camera (15 pos, 1mm pitch, MIPI CSI-2 ) | 2x CSI Camera (15 pos, 1mm pitch, MIPI CSI-2 ) | 2x CSI Camera (15 pos, 1mm pitch, MIPI CSI-2 ) | 2x CSI Camera (15 pos, 1mm pitch, MIPI CSI-2 ) | +| Display | 1x HDMI Type A | 1xHDMI Type A; 1xDP | 1xHDMI Type A; 1xDP | 1xHDMI Type A; 1xDP | +| FAN | 1x FAN(5V PWM) | 1x FAN(5V PWM) | 1x FAN(5V PWM) | 1x FAN(5V PWM) | +| M.2 KEY E | 1x M.2 Key E | 1x M.2 Key E(Disabled) | 1x M.2 Key E | 1x M.2 Key E | +| M.2 KEY M | - | 1x M.2 Key M | 1x M.2 Key M | 1x M.2 Key M | +| RTC | 1x RTC Socket | 1x RTC socket | 1x RTC Socket | 1x RTC Socket | +| Multifunctional port | 1x 40-Pin header | 1x 40-Pin header | 1x 40-Pin header | 1x 40-Pin header | +| Power | USB-Type C 5V⎓3A; | DC Jack 12V/2A | DC Jack 19V/4.74A (MAX 90W) MAX | DC Jack 19V/4.74A (MAX 90W) MAX | +| Mechanical | 130 mm x 120 mm x 50 mm | 130mm x120mm x 50mm | 130mm x120mm x 50mm | 130mm x120mm x 50mm | +| | | | | | + +## 技术规格 + +| 连接接口 | J1010 Carrier Board | Jetson A206 Carrier Board | +|--------------------------|--------------------------------------------------|--------------------------------------------------| +| Jetson module connector | 1x Jetson SODIMM connector, 260-pin | 1x Jetson SODIMM connector, 260-pin | +| USB Type A | 1x USB 3.0 Type-A Connector 2x USB 2.0 Type A connectors | 4x USB 3.0 Type-A Connectors | +| USB Micro Type B | - | 1x USB Micro B, RA Female | +| USB Type C | 2x Type C connector | - | +| Ethernet Port | 1x RJ45 Gigabit Ethernet Connector (10/100/1000) | 1x RJ45 Gigabit Ethernet Connector (10/100/1000) | +| Display Port | 1xHDMI type A | 1xHDMI type A and 1xDP | +| CSI Camera Connector | 2x CSI Camera (15 pos, 1mm pitch, MIPI CSI-2 ) | 2x CSI Camera (15 pos, 1mm pitch, MIPI CSI-2 ) | +| M.2 Key E | 1x M.2 Key E Slot (75-pin) 2230 | 1x M.2 Key E Slot (75-pin) 2230 | +| M.2 Key M | - | 1x M.2 Key M Slot (75-pin) NVME 2280 | +| Multifunctional Port | 2.0 Pitch 40 PIN | 2.0 Pitch 40 PIN | +| Button Header | 1x Button Header (1x12, 2.54mm pitch, RA) | 1x Button Header (1x12, 2.54mm pitch, RA) | +| FAN Connector | 1x Picoblade Header | 1x Picoblade Header | +| CAN | Diasabled | 1x CAN Bus Header (1x4, 2.54mm pitch, RA) | +| RTC | 1x RTC Back-up Coin Cell Socket (CR1220) | 1x RTC Back-up Coin Cell Socket (CR1225) | +| Power | 1x Type C connector | 1x DC Input Power TE Connector | + +## 技术支持和产品讨论。 + +感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺利。我们提供多种沟通渠道,以满足不同偏好和需求。 + +
+ + +
+ +
+ + +
+ diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Series_Initiation.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Series_Initiation.md new file mode 100755 index 000000000000..7b700d170f1d --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Series_Initiation.md @@ -0,0 +1,300 @@ +--- +description: Jetson 系列开机 +title: Jetson 系列开机 +keywords: + - Edge + - reComputer +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_Jetson_Series_Initiation +last_update: + date: 01/04/2023 + author: w0x7ce + +no_comments: false # for Disqus + +--- + +# Jetson启动计算机 + +Jetson的所有reComputer均配备了16 GB的eMMC,其中已经预装了`ubuntu 18.04 LTS`和`NVIDIA JetPack 4.6`。按照说明连接外设,您可以立即启动并在几秒钟内直接使用它。 +

pir

+ +## 1. 连接外围设备 + +将reComputer主机通过USB连接键盘、鼠标,并通过HDMI端口或DP端口(仅限A206载板)连接到屏幕显示。 + +

pir

+ +:::note +对于具有HDMI或DP接口的reComputer主机,尽管它有两个显示输出端口,但不支持双显示输出,这意味着一次只能使用一个显示输出接口。 +::: + +## 2. 功率提升 + +连接外围设备后,将电源连接到 reComputer 主机。 + +- [reComputer J1010](https://www.seeedstudio.com/Jetson-10-1-A0-p-5336.html)的电源供应由Type-C接口提供,电源供应位置靠近HDMI接口,在下图中显示。 + +

pir

+ +:::note +Jetson J1010计算机在两侧都有一个Type-C端口,右侧靠近LAN端口的是数据传输端口。严禁将Type-C电源插入右侧的数据传输端口,否则可能会损坏组件。 +::: + +- reComputer J1020,[reComputer J2011](https://www.seeedstudio.com/Jetson-20-1-H1-p-5328.html),和[reComputer J2012](https://www.seeedstudio.com/Jetson-20-1-H2-p-5329.html) 都由靠近 HDMI 接口处的直流接口供电。 + +

pir

+ +连接到电源后,reComputer主机将自动开机。 + +## 3. 初始设置 + +新的重启计算机已经刷新了系统。但在我们可以使用它之前,仍需要进行一些必要的初始设置。 + +### 第一步:等待开机。 + +开机后,您会看到屏幕中央显示着巨大的NVIDIA标志。在进入配置页面之前,您可能会发现reComputer会自动重启两次,整个过程大约需要一分钟。 + +

pir

+ +### 第二步:审查并接受许可证。 + +在配置页面中,首先您将被要求检查许可证并选择“**我接受这些许可证的条款**”来同意,并然后继续下一步。 + +

pir

+ +### 第三步:选择系统语言和键盘布局。 + +点击“继续”按钮后,下一页会要求您选择系统语言和键盘布局。您可以根据实际需求进行选择。 + +

pir

+ +

pir

+ +### 第四步:连接到网络 + +连接 reComputer 到互联网有两种方式。一种是通过网络电缆直接连接,另一种是通过 Wi-Fi 连接到互联网(需要无线模块)。如果您不需要通过软件更新访问互联网,可以选择在此步骤中选择不连接互联网。 + +

pir

+ +### 第五步:配置用户信息和密码。 + +在下一页,您将被要求输入您的用户名和密码。您需要记住您的启动密码,因为您稍后需要启动 reComputer。 + +如果您觉得每次启动 reComputer 都输入密码很麻烦,为了确保其他人无法使用它,您可以选择下面的“需要我的密码登录”选项,但我们不建议这样做。 + +

pir

+ +### 第六步:选择供电电压 + +您将在reComputer操作时选择的是供电电压。 + +- [reComputer J1010](https://www.seeedstudio.com/Jetson-10-1-A0-p-5336.html) 和 [reComputer J1020](https://www.seeedstudio.com/Jetson-10-1-H0-p-5335.html) 都配备了 Jetson Nano 模块。我们强烈推荐 **MAXN** 型号,以确保您的 reComputer 正常运行。 + +

pir

+ +- [reComputer J2011](https://www.seeedstudio.com/Jetson-20-1-H1-p-5328.html)和[reComputer J2012](https://www.seeedstudio.com/Jetson-20-1-H2-p-5329.html)都配备了Jetson Xavier NX模块,可提供各种功率输出选项。默认型号为10W,即`MODE_10W_DESKTOP - (默认)`,您可以在这里看到: + +

pir

+ +:::note +以下表格显示了 NVIDIA 预定义的电源模式及相关模块资源使用上限。 +
+::: + +完成以上指示后,我们需要等待1~2分钟,让重新启动的计算机进行最终配置。 + +
+ +## 4. 开始吧 + +重新完成计算机的初始设置后,它将自动重新启动。之后,它将以下面的示例图进入系统桌面。显示系统已准备就绪,可以使用。 + +

pir

+ +由于产品包含内置的16 GB eMMC,其中已安装了`ubuntu 18.04 LTS`和`NVIDIA JetPack 4.6`,剩余用户可用空间约为2GB。下图显示了在终端中使用磁盘空间命令后的结果: + +```shell +seeed@seeed-desktop:~$ df -hl +Filesystem Size Used Avail Use% Mounted on +/dev/mmcblk0p1 14G 12G 2.0G 86% / +none 3.5G 0 3.5G 0% /dev +tmpfs 3.8G 75M 3.8G 2% /dev/shm +tmpfs 3.8G 22M 3.8G 1% /run +tmpfs 5.0M 4.0K 5.0M 1% /run/lock +tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup +tmpfs 777M 128K 777M 1% /run/user/1000 +seeed@seeed-desktop:~$ +``` + +## 在reComputer上安装NVIDIA系统。 + +如果您的 reComputer 设备崩溃,想要重新安装NVIDIA系统。我们在这里为您提供关于如何在reComputer上安装NVIDIA系统的wiki。所提供的wiki包括A20X载具板和reComputer J1010载具板。 + +- [Install NVIDIA system based on A20X carrier board](https://wiki.seeedstudio.com/reComputer_J2021_J202_Flash_Jetpack/) +- [Install NVIDIA system based on reComputer J1010 Carrier Board](https://wiki.seeedstudio.com/reComputer_J1010_J101_Flash_Jetpack/) + +## 故障排除 + +### Q1: 接收到的电脑中eMMC中剩余空间仅约2GB,如何解决空间不足的问题? + +我们目前提供三种方式来处理这种特殊情况,您可以根据实际情况选择适合您的解决方案。 + +**选项 1.** 系统重新部署到外部存储设备。 + +如果您尚未与reComputer开始项目,您可以考虑使用此选项在具有足够容量的存储设备上重新部署新系统。 + +通常有两种安装reComputer系统的方法,第一种是使用**NVIDIA SDK Manager**。 + +如果您使用的是**reComputer J2011**或**reComputer J2012**,在[使用SDK Manager刷写到eMMC](reComputer_J2021_J202_Flash_Jetpack#flashing-to-emmc-with-command-line)的**第12步**中,您可以通过改变系统烧录位置来扩展容量。 + +
+ +:::提示 +这种方法不适用于Jetson Nano模块。 + +- 通常有两种方法可用于reComputer的系统安装,第二种方法是使用**命令行**。 + +- 如果您正在使用**A20X载板**,请参阅[使用命令行刷写到eMMC](/reComputer_J2021_J202_Flash_Jetpack#flashing-to-emmc-with-command-line)的方法安装系统。 + +- 如果您正在使用**reComputer J1010载板**,请使用命令行按照[使用命令行刷写到eMMC](/reComputer_J1010_J101_Flash_Jetpack#flashing-jetpack-os-via-command-line)的步骤安装系统。 + +这两种方法都基本上通过以下命令完成系统安装。 + +```sh +sudo ./flash.sh [options] +``` + +在此: + +[options]是一个或多个命令行选项。所有选项都是可选的。有关选项的信息,请参阅Flashing Script Usage。 + +指定要应用于要刷写的设备的配置。在Jetson Modules and Configurations中的表格中列出了值。flash.sh从名为.conf的配置文件中获取配置。 + +指定要刷写的设备类型。使用值mmcblk0p1来刷写本地存储设备(根据平台的不同为eMMC或SD卡),与NFS服务器等区分开。 + +如上所述,如果要将系统安装在外部存储中,可以通过更改选项来实现。 + +对于连接到reComputer设备的USB存储设备上的分区,请输入以下命令: + +```sh +sudo ./flash.sh sda +``` + +连接到reComputer设备的NVMe存储设备上进行分区时,请输入此命令: + +```sh +sudo ./flash.sh nvme0n1p +``` + +“``是一个数字,指定了存储设备上APP分区的位置,如USB设备的`sda1`,或NVMe存储设备的`nvme0n1p1`。” + +**选项2。** 删除不必要的JetPack组件,以增加eMMC空间。 + +NVIDIA JetPack SDK是构建端到端加速AI应用程序的最全面解决方案。所有Jetson模块和开发者套件都受JetPack SDK支持。 + +JetPack SDK包括Jetson Linux驱动程序包(L4T)、Linux操作系统和用于深度学习、计算机视觉、加速计算和多媒体的CUDA-X加速库和API。它还包括针对主机计算机和开发套件的示例、文档和开发工具,并支持较高级别的SDK,如用于流媒体视频分析的DeepStream和用于机器人技术的Isaac。 + +[本表](https://docs.nvidia.com/jetson/jetpack/install-jetpack/index.html#jetpack-ota-packages)列出了包含在JetPack 4.6中的所有组件。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Component GroupPackages
CUDA Toolkit for L4Tcuda
cuda-11-4
cuda-cccl-11-4
cuda-command-line-tools-11-4
cuda-compiler-11-4
cuda-cudart-11-4
cuda-cudart-dev-11-4
cuda-cuobjdump-11-4
cuda-cupti-11-4
cuda-cupti-dev-11-4
cuda-cuxxfilt-11-4
cuda-documentation-11-4
cuda-driver-dev-11-4
cuda-gdb-11-4
cuda-gdb-src-11-4
cuda-libraries-11-4
cuda-libraries-dev-11-4
cuda-minimal-build-11-4
cuda-nvcc-11-4
cuda-nvdisasm-11-4
cuda-nvml-dev-11-4
cuda-nvprof-11-4
cuda-nvprune-11-4
cuda-nvrtc-11-4
cuda-nvrtc-dev-11-4
cuda-nvtx-11-4
cuda-runtime-11-4
cuda-samples-11-4
cuda-sanitizer-11-4
cuda-toolkit-11-4
cuda-toolkit-11-4-config-common
cuda-toolkit-11-config-common
cuda-toolkit-config-common
cuda-tools-11-4
cuda-visual-tools-11-4
libcublas-11-4
libcublas-dev-11-4
libcudla-11-4
libcudla-dev-11-4
libcufft-11-4
libcufft-dev-11-4
libcurand-11-4
libcurand-dev-11-4
libcusolver-11-4
libcusolver-dev-11-4
libcusparse-11-4
libcusparse-dev-11-4
libnpp-11-4
libnpp-dev-11-4
cuDNNlibcudnn8
libcudnn8-dev
libcudnn8-samples
TensorRTgraphsurgeon-tf
libnvinfer-bin
libnvinfer-dev
libnvinfer-doc
libnvinfer-plugin-dev
libnvinfer-plugin8
libnvinfer-samples
libnvinfer8
libnvonnxparsers-dev
libnvonnxparsers8
libnvparsers-dev
libnvparsers8
python3-libnvinfer
python3-libnvinfer-dev
tensorrt
uff-converter-tf
OpenCVlibopencv
libopencv-dev
opencv-licenses
libopencv-python
libopencv-samples
VPIlibnvvpi2
vpi2-dev
python-vpi2
python3.9-vpi2
vpi2-samples
vpi2-demos
NVIDIA container runtime with Docker integrationlibnvidia-container0
libnvidia-container1
libnvidia-container-tools
nvidia-container-toolkit
nvidia-container-runtime
nvidia-docker2
Multimedia APInvidia-l4t-jetson-multimedia-api
+ +JetPack SDK包含大量内容,但并非所有开发人员都需要使用。因此,有选择地移除它们以腾出更多存储空间是一个不错的选择。 + +我们可以使用以下命令查看在reComputer Jetson上安装的JetPack的信息。 + +```sh +sudo apt-cache show nvidia-jetpack +``` + +
+ +通过这个命令,您可以快速了解JetPack中安装的组件的内容,比如CUDA、openCV等。 + +要获取更详细的信息,您可以使用以下命令查找由reComputer当前安装的所有软件及其描述信息。 + +```sh +dpkg-query -l +``` + +然后,根据您的实际需求和组件的描述信息,您可以选择性地删除您不需要的内容。删除的命令如下所示。 + +```sh +sudo apt autoremove ${packagesname} +``` + +环境变量`${packagesname}`表示您要删除的组件包的名称。如果要删除所有以特定名称为前缀的包,可以在该前缀后面添加`*`来指示。 + +例如,如果我们想删除有关**CUDA**的所有组件,则可以使用以下命令。 + +```sh +sudo apt autoremove cuda* +``` + +释放CUDA组件的内容后,您会发现eMMC的剩余容量也会变得更大。 + +
+ +相同的规则也适用于其他JetPack组件。 + +**选项 3.** 通过外部存储设备进行容量扩展。 + +如果您已经在正常使用 reComputer 一段时间,并且不想破坏现有系统环境来完成扩展解决方案,则可以选择此选项。 + +我们已经拥有一个完善的扩展维基 [reComputer 系列内存扩展](https://wiki.seeedstudio.com/reComputer_Jetson_Memory_Expansion/)。 + +值得注意的是,任何扩展操作都是危险的,我们希望您在一切开始之前积极进行 **系统备份**。 + +## 技术支持与产品讨论 + +感谢您选择我们的产品!我们将为您提供不同的支持,以确保您与我们产品的体验尽可能顺利。我们提供多种沟通渠道,以满足不同的偏好和需求。 + +
+ + +
+ +
+ + +
+ diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1020v2/reComputer_J1020_A206_Flash_JetPack.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1020v2/reComputer_J1020_A206_Flash_JetPack.md new file mode 100755 index 000000000000..3358cca6394c --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1020v2/reComputer_J1020_A206_Flash_JetPack.md @@ -0,0 +1,332 @@ +--- +description: 将JetPack闪存到reComputer J1020v1(A206载板) +title: 将JetPack闪存到reComputer J1020v1(A206载板) +keywords: + - Edge + - reComputer JetPack™_OS_Installation +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_J1020_A206_Flash_JetPack +last_update: + date: 01/05/2023 + author: w0x7ce + +no_comments: false # for Disqus + +--- + +# 将JetPack闪存到reComputer J1020v1(A206载板) + +在这个wiki中,我们将向您展示如何将Jetpack OS闪存到reComputer J1020。由于其载板设计类似于官方NVIDIA Nano开发者载板,我们可以通过两种方式来闪存JetPack。 + +## 入门指南 + +我们可以使用**NVIDIA SDK Manager** Linux软件,也可以直接通过Linux命令行使用**NVIDIA Linux Driver Package**将JetPack OS闪存到reComputer J1020。对于素未谋面的NVIDIA Jetson新手,我们强烈推荐使用NVIDIA SDK Manager。 + +- [选项1 - 通过NVIDIA SDK Manager刷新JetPack操作系统。](#flashing-jetpack-os-via-nvidia-sdk-manager) +- [选项2 - 通过命令行刷新JetPack操作系统。](#flashing-jetpack-os-via-command-line) + +我们还需要一些准备工作。 + +### 软件准备 + +- 英伟达账户 +- Linux主机计算机配备Ubuntu 18.04操作系统(或更高版本)。 + +!!!note + 在这个教程中,我们将使用基于Ubuntu 18.04 LTS系统来完成安装。 + +### 硬件准备(强制恢复模式) + +在我们继续安装步骤之前,我们需要确保我们的reComputer处于强制恢复模式。 + +**步骤1.** 在开始之前,您需要断开reComputer的电源。 +**步骤2.** 要进入恢复模式,您需要使用跳线将**FC REC**和**GND**连接起来。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Button HeaderDescriptionButton HeaderDescription
1PWR BTN7AUTO ON
2GND8DISABLE
3FC REC9UART TXD
4GND10UART RXD
5SYS RET11LED +
6GND12LED -
+ +**第三步。** 使用左侧12V/5A DC电缆给reComputer供电,并使用Type-C电缆将Linux主机PC连接到reComputer的右侧。 + +
+ +!!!Attention + 在接线前,请注意电源连接器和数据连接器,请勿直接将数据连接器连接到直流电源。 + +**第4步。** 在主机计算机的命令行窗口下,输入命令 `lsusb`。当返回的内容中包含 `ID 0955:7f21 NVidia Corp.` 时,意味着reComputer处于强制恢复模式,我们可以继续进行后续操作。 + +
+ +## 通过 NVIDIA SDK 管理器刷写 JetPack 操作系统 + +接下来,我们将通过NVIDIA SDK Manager教程,介绍如何安装系统。NVIDIA SDK Manager是一个全能工具,捆绑了开发者软件,为NVIDIA SDK提供了端到端的开发环境设置解决方案。因此,它适合初学者使用。 + +
+ +### 第一步。在Linux主机PC上安装NVIDIA SDK Manager。 + +我们需要在Linux主机PC上打开浏览器,从NVIDIA官方网站请从NVIDIA官方网站下载NVIDIA SDK Manager + +
+ +### 第二步。打开NVIDIA SDK Manager并登录。 + +在Linux主机PC屏幕上,我们可以右键单击鼠标并打开一个终端。然后我们可以输入以下命令启动SDK Manager: + +`sdkmanager` + +
+ +首次使用NVIDIA SDK Manager时,会弹出一个网页提示您使用之前注册的NVIDIA账户登录。 + +### Step 3. 请选择目标设备。 + +登录成功后,您将进入第一个屏幕,开始安装的第一步。由于我们已经连接了 reComputer J1020,将会弹出一个窗口让您选择硬件设备。 + +reComputer J1020配备了**NVIDIA Jetson Nano 4GB模块**,因此我们可以选择第一个。 + +
+ +第一个屏幕有更多选择供您选择: + +- 在产品类别面板中需要选择**Jetson**。 +- 在硬件配置面板中,我们建议您**不要选择主机机器**。这将需要更多时间来为您当前的Ubuntu主机安装NVIDIA组件。如果有需要,您可以选择它。 +- 在目标操作系统面板中,我们可以选择不同的**操作系统**和**JetPack版本**。但要小心JetPack的版本,不同的模块可能支持不同类型的JetPack。我们推荐在这里选择"JetPack 4.6.1"。 +- 在额外的SDK中,由于eMMC的存储空间仅为16GB,如果在此安装DeepStream,会导致内存不足。 + +
+ +请点击“继续”以进行下一步操作。 + +### 第四步。审查所需的组件。 + +在**详细信息和许可**中,您可以展开主机组件和目标组件面板,以审查将安装在您的系统上的组件。 + +
+ +如果您只需要安装系统,则可以取消选择SDK组件。 + +
+ +!!!Tip + 在选择要安装的组件时,您可能需要注意已使用的容量。内置eMMC的大小仅为16GB,请根据实际需求明智地分配和使用这些空间。 +
+ 实际测试后,安装完整的SDK组件后,只剩下大约500MB的eMMC空间。 +
+ + 如果您想查看如何解决容量不足的问题,请参考[故障排除]。(https://wiki.seeedstudio.com/reComputer_Jetson_Series_Initiation/#q1-the-remaining-space-in-the-emmc-in-the-received-recomputer-jetson-is-only-about-2gb-how-can-i-solve-the-problem-of-insufficient-space). + +如果您希望SDK管理器将所有文件下载到除默认路径之外的位置,请转到位于屏幕底部的“下载和安装选项”,然后选择您希望使用的路径。 + +
+ +请点击“继续”以进入下一步。 + +### 第五步。安装系统。 + +安装开始之前,SDK 管理器会提示您输入您的 `sudo` 密码。 + +
+ +一段时间后,我们将被要求为我们的reComputer设置新系统。由于我们手动进入恢复模式,我们在这里选择“手动设置:通过手动操作将目标设置为强制恢复模式”。同时,我们选择默认的“Pre-Config”。 + +
+ +之后,我们需要将新Jetson系统的名称和密码输入到我们的reComputer中,这是由您自行设置的。 + +准备好后,点击“刷新”以继续。 + +显示屏显示软件的下载和安装进度。请耐心等待安装完成。 + +
+ +### (可选)步骤6. 安装SDK组件 + +如果您在上一个**第4步**已经检查过组件的安装情况,那么您需要继续进行这一步骤。 + +片刻之后,您将会在NVIDIA SDK Manager中看到一个新窗口弹出,提示您需要通过IP地址连接设备。这意味着系统已经安装完成,组件的安装将继续进行。 + +
+ +在这种情况下,我们可以**拔出跳线**并重新启动 reComputer。然后,我们需要通过 HDMI 将 reComputer 连接到显示器,输入您在**第 4 步**中输入的密码,然后登录到主界面。 + +此时,您需要将 reComputer 连接到与 Linux 主机 PC 相同的 LAN,并使用 `ifconfig` 命令确定 Jetson 的**IP 地址**。 + +返回 Linux 主机 PC 并输入刚刚获得的 IP 地址。NVIDIA SDK Manager 将尝试连接到 Jetson 设备并继续安装下一个 SDK 组件。 + +
+ +当您看到以下窗口出现时,安装已经完成。您可以开始使用Jetson,或继续按照下面的步骤完成对您的新系统的一些基本配置。 + +
+ +!!!Attention + 确保在重新启动系统之前拔掉跳线并退出强制恢复模式。 + +## 通过命令行闪现JetPack操作系统。 + +感谢自由定制BSP(NVIDIA Linux驱动程序包),通过命令行刷写JetPack操作系统对于Linux知识库用户来说可以非常容易。 + +
+ +### 第一步。下载适当的NVIDIA Linux驱动程序包。 + + +在**Linux主机**上,我们需要打开浏览器,访问Jetson Linux Archive。首先,我们应检查Jetson Linux的版本是否支持我们的reComputer Jetson模块。 + +
+ +找到适合的版本后,点击进入下载页面。找到并点击“L4T Driver Package (BSP)”和“Sample Root Filesystem”以下载驱动程序文件。文件的名称类似于`Tegra_Linux_Sample-Root-Filesystem_Rxx.x.x_aarch64.tbz2` 和 `Jetson-210_Linux_Rxx.x.x_aarch64.tbz2`. + +
+ +作为示例,我们选择NVIDIA L4T 32.7.1版本,因为它作为JetPack4.6.1的一部分,支持Jetson Nano模块。文件的名称为: + +- Tegra_Linux_Sample-Root-Filesystem_R32.7.2_aarch64.tbz2 +- Jetson-210_Linux_R32.7.2_aarch64.tbz2 + +### 第二步。通过命令行解压软件包文件并组装Rootfs。 + +在Linux主机PC上,我们应该找到一个文件夹,并在下载前将软件包文件存储在其中。然后在该文件夹中打开一个命令行窗口(终端),并使用以下命令行解压文件并组装根文件系统: + +```sh +tar xf ${L4T_RELEASE_PACKAGE} +cd Linux_for_Tegra/rootfs/ +sudo tar xpf ../../${SAMPLE_FS_PACKAGE} +cd .. +sudo ./apply_binaries.sh +``` + +!!!Note + `${}` 这里是您放置文件名称的地方。 + +在**NVIDIA L4T 32.7.1**的示例中,下载的文件存储在`/Desktop/L4T_Drivers`中,因此在'/Desktop/L4T_Drivers'路径下我们打开命令行窗口(终端)并执行以下命令。 + +```sh +tar xf Jetson-210_Linux_R32.7.1_aarch64.tbz2 +cd Linux_for_Tegra/rootfs/ +sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_R32.7.1_aarch64.tbz2 +cd .. +sudo ./apply_binaries.sh +``` + +请将上述文本从原语言翻译成中文(简体)。 + +
+ +### 第三步。刷新系统以重新计算机。 + +由于我们已经将reComputer J1020强制进入恢复模式,并且模块是Jetson Nano。我们可以直接将系统刷入reComputer,执行以下命令: + +```sh +sudo ./flash.sh jetson-nano-devkit-emmc mmcblk0p1 +``` + +
+ +!!!Tip + 刷写L4T大约需要10分钟时间,或者在慢的主机电脑下需要更长时间。 + +此刻,我们可以拔掉跳线,然后重新启动reComputer以继续使用。 + +## 故障排除 + +### 使用NVIDIA SDK Manager进行安装故障排除。 + +安装错误的原因有很多种。以下是常见安装问题的检查表,可能会帮助您从破损的安装中恢复。 + +1. 查看摘要表,确定哪个组件出现故障。 + + a. 展开具有“错误”状态的组。 + + b. 当找到故障组件时,单击 Install Error 右侧的详细信息图标,将被重定向至终端标签页,显示确切的错误信息。 + +
+ +2. 如果错误与环境问题有关,例如破损的apt存储库或缺少的先决条件,请尝试手动修复,然后点击“重试失败项”按钮。 + +
+ +3. 重新安装也有两种其他方式可供选择: + + 从**使用 SDK 管理器进行闪存到 eMMC 的第三步**,使用“修复/卸载”按钮进入管理 NVIDIA SDKs 页面。必要时,展开具有“损坏”状态的 SDK,然后点击相应部分(主机或目标)的“修复”。 + +
+ +4. 在**SDK 管理器会闪存到 eMMC — 第 3 步**,选择所需的 SDK,并重新运行安装程序。 + +5. 最后,尝试卸载并重新安装相关的SDK。 + +### 使用命令行故障排除安装问题。 + +命令行安装方法相对简单,但在使用强制恢复模式时常会出现错误。 + +如果在**使用命令行闪存到 eMMC -- 第 2步**中遇到下面显示的错误,可能是由于未成功将载板进入强制恢复模式。请特别注意,不要在开机状态下将载板进入强制恢复模式,这是无效的。 + +
+ +如果您无法进入“使用命令行将**闪存到eMMC** - 第3步”系统,并卡在启动显示命令行上,那么您可能没有退出强制恢复模式。同样,在载板仍供电时拔掉跳线以退出强制恢复模式是无效的,所有这些操作都需要在断电状态下完成。 + +
+ +!!!Note + + + 如果需要更多的存储空间,我们可以使用SD卡来扩展容量,或者将系统烧录到SD卡上,您可以参考我们推荐的解决方案[在SD卡上刷系统](https://wiki.seeedstudio.com/J101_Enable_SD_Card/)。 + +## 技术支持与产品讨论 + +感谢您选择我们的产品!我们在此为您提供不同的支持,以确保您与我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同偏好和需求。 + +
+ + +
+ +
+ + +
diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1020v2/reComputer_J1020v2_with_Jetson_getting_start.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1020v2/reComputer_J1020v2_with_Jetson_getting_start.md new file mode 100755 index 000000000000..c8c4d7b3f183 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1020v2/reComputer_J1020v2_with_Jetson_getting_start.md @@ -0,0 +1,152 @@ +--- +description: 开始使用reComputer J1020v2 +title: 开始使用reComputer J1020v2 +keywords: +- reComputer +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_J1020v2_with_Jetson_getting_start +last_update: + date: 6/29/2023 + author: Lakshantha +--- + +# 开始使用reComputer J1020v2 + +
+ + + +## 介绍 +Jetson系列的reComputer是搭载NVIDIA先进AI嵌入式系统的紧凑边缘计算机:J10(Jetson Nano 4GB)和J20(Jetson [Xavier NX](https://www.seeedstudio.com/NVIDIA-Jetson-Xavier-NX-Module-p-4421.html?queryID=fa33abfaf6f67f95a4c01b60263d2793&objectID=4421&indexName=bazaar_retailer_products) 8GB和Jetson Xavier 16GB)。具有丰富的扩展模块、工业外围设备和热管理功能,reComputer for Jetson旨在帮助您通过将流行的DNN模型和ML框架部署到边缘,并利用高性能进行推断,加速和扩展下一代AI产品。 + + + +reComputer J1020 v2 是一款功能强大且紧凑的智能边缘盒子,采用Jetson Nano生产模块构建,将现代人工智能性能带入边缘。内置的J202载板与Jetson Nano开发人员套件具有相同的尺寸,包括4个USB 3.0端口,M.2 Key M插槽,HDMI和DP接口。整个系统还包括风扇和电源适配器。 + +对于人工智能初学者,如果你想获得关键的人工智能技能,并深入学习深度学习。[英伟达深度学习学院(DLI)](https://www.nvidia.com/en-us/training/)提供实践性、动手操作的培训和认证。请查阅 Seeed [wiki](https://wiki.seeedstudio.com/reComputer_Jetson_Series_Started_Guide/) 指南,包括如何开始使用Jetson Nano以及构建不同的项目。 + + +对解决方案提供商来说,reComputer J1020 v2预装了Jetpack 4.6.1,配有丰富的I/O接口,这款AI盒简化了开发并适用于部署在边缘AI解决方案提供商的领域,涵盖视频分析、物体检测、自然语言处理、医学成像和各个智慧城市、安全、工业自动化、智能工厂等行业的机器人技术。 + +## 特点 + +- **NVIDIA Jetson Nano Dev Kit 替代品:**采用 Jetson Nano 4GB Production 模块构建的掌上边缘人工智能设备,扩展了丰富的 I/O 接口:GPIO、CSI、千兆以太网、4 个 USB 3.0 Type A,内置 16 GB eMMC 存储,可通过此处查看 SSD 存储扩展。 +- **128 个 NVIDIA CUDA® 核心提供 0.5 TFLOPs(FP16)**,可运行用于图像分类、目标检测、分割和语音处理等应用的人工智能框架和模型。 +- **预安装 NVIDIA Jetpack**,JetPack SDK 包括了面向板级支持包(BSP)、Linux 操作系统、NVIDIA CUDA、cuDNN 和 TensorRT 等深度学习、计算机视觉、GPU 计算和多媒体处理等软件库。 +- **支持整个** [Jetson 软件堆栈](https://developer.nvidia.com/embedded/develop/software) 和由 Seeed Edge AI 合作伙伴提供的各种 [开发者工具](https://wiki.seeedstudio.com/Jetson-AI-developer-tools/),用于构建快速而强大的人工智能应用。 + +## 规格说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
规格说明reComputer J1010reComputer J1020v2NVIDIA Jetson Nano Developer Kit-B01
ModuleJetson Nano 4GB (production version)Nano (not production version)
Storage16 GB eMMCMicroSD (Card not included)
SD Card SlotIncluded (On the carrier board)-Included (On the module)
Video Encoder4K30 | 2x1080p60 | 4x1080p30 | 4x720p60 | 9x720p30 (H.265 & H.264)4Kp30 | 4x 1080p30 | 9x 720p30 (H.264/H.265)
Video Decoder4K60 | 2x 4K30 | 4x 1080p60 | 8x 1080p30 | 9x 720p60 (H.265 & H.264) + 4Kp60 | 2x 4Kp30 | 8x 1080p30 | 18x 720p30 (H.264/H.265)
Gigabit Ethernet1*RJ45 Gigabit Ethernet Connector (10/100/1000)
USB1 * USB 3.0 Type A; +2 * USB 2.0 Type A; +1 * USB Type C for device mode; +1 * USB Type C for 5V power input4 * USB 3.0 Type-A ; +1 * Micro-USB port for device mode;4 * USB 3.0 Type-A; +1 * Micro-USB port for 5V power input or for device mode
CSI Camera Connect2*CSI Camera (15 pos, 1mm pitch, MIPI CSI-2 )
Display1*HDMI Type A1*HDMI Type A; +1*DP
FAN1* FAN connetcor (5V PWM)
M.2 KEY E1*M.2 Key E1*M.2 Key E (Disabled)1*M.2 Key E
M.2 KEY M-1*M.2 Key M-
RTC1*RTC Socket1*RTC Socket +1*RTC 2-pin-
Multifunctional port1* 40-Pin header
Power SupplyUSB-Type C 5V⎓3A +9-12V Power adapter not included(Barrel Jack 5.5/2.5mm)DC Jack 5V⎓4A; +Micro-USB 5V⎓2A
Mechanical130 mm x 120 mm x 50 mm (with case)100 mm x 80 mm x 29 mm
+ +## Flash JetPack to reComputer J1020v2 + +:::info +请参考此[wiki](/reComputer_J1010_J101_Flash_Jetpack)页面,获取更多信息,因为J1020v2使用J101载板。 +::: \ No newline at end of file diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_Jetson_Series_Introduction.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_Jetson_Series_Introduction.md new file mode 100755 index 000000000000..9c820024c8bd --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_Jetson_Series_Introduction.md @@ -0,0 +1,207 @@ +--- +description: Jetson 系列计算机介绍。 +title: Jetson 系列计算机介绍。 +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_Jetson_Series_Introduction +last_update: + date: 01/03/2023 + author: w0x7ce + +--- + +# Jetson 系列计算机介绍。 + +
+ +## ✨ 贡献者项目 + +- Seeed Studio公开维基平台更新 +- 我们有更新此页面的任务列表,该列表分类在我们的[贡献者项目](https://github.com/orgs/Seeed-Studio/projects/6/views/1?pane=issue&itemId=30957479)下,我们致力于通过发展维基平台来增强用户体验并提供更好的支持。 +- [您对此页面的贡献](https://github.com/orgs/Seeed-Studio/projects/6/views/1?pane=issue&itemId=35025656)对我们至关重要!我们非常重视您的意见,非常感谢您在提出想法方面的帮助。 + +## 介绍 + +Jetson系列的reComputer是紧凑的边缘计算机,内置了NVIDIA先进的AI嵌入式系统:reComputer J10(Nano)和reComputer J20(Xavier NX)。凭借丰富的扩展模块、工业外围设备、热管理以及数十年Seeed的硬件专业知识,reComputer for Jetson已经准备好帮助您加速和扩展在各种AI场景中出现的下一代AI产品。 + +该系列兼容NVIDIA Jetson软件堆栈、云原生工作流程、行业领先的AI框架,有助于实现无缝的AI集成。目前,我们已经推出了其中的四款,如下所示: + +| 产品 | [reComputer J1010](https://www.seeedstudio.com/Jetson-10-1-A0-p-5336.html ) | [reComputer J1020](https://www.seeedstudio.com/Jetson-10-1-H0-p-5335.html) | [reComputer J2011](https://www.seeedstudio.com/Jetson-20-1-H1-p-5328.html) | [reComputer J2012](https://www.seeedstudio.com/Jetson-20-1-H2-p-5329.html) | +|-------------------------|----------------|----------------|------------------|------------------| +| SKU | 110061362 |110061361 |110061363 | 110061401 | +| Side View | | | | | +| Equipped Module | Jetson Nano 4GB | Jetson Nano 4GB | Jetson Xavier NX 8GB | Jetson Xavier NX 16GB | +| Operating carrier Board | J1010 Carrier Board | Jetson A206 | Jetson A206 |Jetson A206 | +| Power Interface | Type-C connector | DC power adapter | DC power adapter | DC power adapter | +|Link |pir |pir |pir |pir | + +## 接口详情。 + +当前的4款reComputer产品外观相同,区别在于背部接口。[reComputer J1010](https://www.seeedstudio.com/Jetson-10-1-A0-p-5336.html)使用一种接口组合,其他三款使用另一种接口组合,因为底盘上使用了两个不同的载板。 + + +### J1010 载板 + +这个载板适用于[reComputer J1010](https://www.seeedstudio.com/Jetson-10-1-A0-p-5336.html)。 + +

pir

+ +| Mark. | Name | Note | +|-------|-------------------------|-----------------------| +| | DCIN(Type-C interface) | Power supply only | +| | HDMI | | +| | 1x USB 3.0 Type-A port | | +| | 2x USB 2.0 Type-A ports | | +| | LAN | | +| | USB Type-C port | Data transmitted only | + +### Jetson A206载板 + +这个载板适用于[reComputer J1020](https://www.seeedstudio.com/Jetson-10-1-H0-p-5335.html),[reComputer J2011](https://www.seeedstudio.com/Jetson-20-1-H1-p-5328.html),以及[reComputer J2012](https://www.seeedstudio.com/Jetson-20-1-H2-p-5329.html)。 + +

pir

+ +| Mark. | Name | Note | +|-------|-------------------------|-----------------------| +| | DCIN(circular interface)| Power supply only | +| | DP +| | HDMI | | +| | 4x USB 3.0 Type-A ports | | +| | LAN | | +| | Micro-B port | Data transmitted only | + +## 盒子里是什么 + +在开机启动之前,您需要对reComputer进行所有检查和准备工作,准备第一次启动。打开您收到的产品并检查包装内容是否与您购买的产品型号完整一致。 + +### [reComputer J1010](https://www.seeedstudio.com/Jetson-10-1-A0-p-5336.html) + +

pir

+ +**包含的箱子清单如下:** + +- reComputer J1010,包括: + - 4G Jetson Nano模块 x1 + - J1010载板 x1 + +**未包含配件,但需要用电源启动:** + +- USB键盘和鼠标 +- 显示屏 +- Type-C电源线和电源适配器 + +:::note + 产品中不包括Type-C电源电缆和电源适配器。 +::: + +--- + +### [reComputer J1020](https://www.seeedstudio.com/Jetson-10-1-H0-p-5335.html) + +

pir

+ +**包装盒清单如下:** + +- reComputer J1020,包括: + - 4G Jetson Nano 模块 x1 + - Jetson A206 扩展板 x1 +- 12V/2A 电源适配器(带有5种可替换适配器插头) x1 + +**不包括配件,但需要使用以下物品进行启动:** + +- USB键盘和鼠标 +- 显示屏幕 + +:::note +您将有5种可选择的电源适配器。产品包含Type-C电源线和电源适配器。因此,您可以选择适合您所在国家或地区的适配器为reComputer供电,无需额外购买任何电源设备。 +::: + +--- + +### [reComputer J2011](https://www.seeedstudio.com/Jetson-20-1-H1-p-5328.html) + +

pir

+ +**包含的盒子清单如下:** + +- reComputer Jetson J2011,包括: + - 8G Jetson Xavier NX 模块 x1 + - Jetson A206 扩展板 x1 +- 19V/4.74A(最大90W)电源适配器(不含电源供应线)x1 + +**请注意: 不包括配件,但需要配件来供电:** + +- USB键盘和鼠标 +- 显示屏幕 +- 适配器电源供应线 + +:::note +请根据您当地的电源插头标准匹配适配器的电源供应电缆。 +::: + +--- + +### [reComputer J2012](https://www.seeedstudio.com/Jetson-20-1-H2-p-5329.html) + +

pir

+ +

pir

+ +**包含的盒子清单如下:** + +- reComputer J2012,包括: + - 16G Jetson Xavier NX 模块 x1 + - Jetson A206 扩展板 x1 +- 19V/4.74A(最大90W)电源适配器(不含电源线)x1 + +**配件不包括在内,但需要额外购买以供开机使用。** + +- USB键盘和鼠标 +- 显示屏 +- 适配器电源供应电缆 + +:::note +请根据您当地的电源插头标准匹配电源适配器的电源供应电缆。 +::: + +--- + +## 更何况 + +我们在这里向您展示更完整的关于NVIDIA® Jetson模块供电设备比较和NVIDIA® Jetson模块兼容载板比较的表格。您可以点击图片或标题进行更详细查看。 + +### NVIDIA® Jetson模块供电设备比较 + +
+
+

 

+

+
+
+ +### NVIDIA® Jetson模块兼容的载板比较。 + +
+
+

 

+

+
+
+ +## Resources + +- **[PDF]** [NVIDIA Jetson设备和载板比较](https://files.seeedstudio.com/wiki/reComputer/NVIDIA-Jetson-Devices-and-carrier-boards-comparision.pdf) + +## 技术支持与产品讨论 + +感谢您选择我们的产品!我们在这里提供不同的支持,以确保您使用我们的产品的体验尽可能顺利。我们提供多种沟通渠道,以满足不同的偏好和需求。 + +
+ + +
+ +
+ + +
+ diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J30_40/reComputer_J30_40_with_Jetson_getting_start.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J30_40/reComputer_J30_40_with_Jetson_getting_start.md new file mode 100755 index 000000000000..a848dab7d545 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J30_40/reComputer_J30_40_with_Jetson_getting_start.md @@ -0,0 +1,187 @@ +--- +description: 开始使用reComputer J30/40 系列 +title: 开始使用reComputer J30/40 系列 +keywords: +- reComputer +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/reComputer_J30_40_with_Jetson_getting_start +last_update: + date: 6/29/2023 + author: Lakshantha +--- + +# 开始使用reComputer J30/40 系列 + +
+ + + +## 介绍 +reComputer J3010是采用Jetson Orin Nano 4GB打造的强大且紧凑的智能边缘盒子,可为边缘带来高达20TOPS的现代AI性能,提供与Jetson Xavier NX相当的性能。它将NVIDIA Ampere™GPU架构与64位操作能力相结合。 + +整个系统包括一个NVIDIA Jetson Orin Nano 4GB生产模块、一个散热片和一个电源适配器。reComputer J3010预装有Jetpack 5.1,简化了开发,并适用于在智能城市、安全、工业自动化和智能工厂等各行业中从事视频分析、目标检测、自然语言处理、医学成像和机器人技术的边缘AI解决方案提供商。 + +如果您正在寻找带电源适配器的版本,请查看 [reComputer J3010](https://www.seeedstudio.com/reComputer-J3010-p-5589.html)。 + +## 特点 + +- **生产中的出色人工智能性能:** 基于设备的处理,实现最高20 TOPS的人工智能性能,功耗低,延迟低。 +- **手掌大小的边缘人工智能设备:** 130mm x 120mm x 58.5mm的紧凑尺寸,包括NVIDIA Jetson Orin Nano 4GB生产模块、散热器、外壳和电源适配器。支持桌面、壁挂,方便携带。 +- **丰富的可扩展性:** 4x USB3.2、HDMI 2.1、2xCSI、1x千兆以太网的RJ45、M.2 Key E、M.2 Key M、CAN和GPIO。 +- **加速产品上市解决方案:** 预安装NVIDIA JetPack™5.1的Jetpack,搭载128GB NVMe固态硬盘、Linux操作系统BSP、128GB SSD、WiFi BT组合模块、两个天线,支持Jetson软件和主流人工智能框架和软件平台。 +- **全面的证书:** FCC、CE、RoHS、UKCA。 + +## 规格说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + colSpan={4} + + + + + + + + + + + + + + + + + + + +
规格要求reComputer J3010reComputer J3011reComputer J4011reComputer J4012
ModuleJetson Orin Nano 4GBJetson Orin Nano 8GBJetson Orin NX 8GBJetson Orin NX 16GB
AI Performance20 TOPS40 TOPS70 TOPS100 TOPS
GPU512-core NVIDIA Ampere architecture GPU with 16 Tensor Cores1024-core NVIDIA Ampere architecture GPU with 32 Tensor Cores1024-core NVIDIA Ampere architecture GPU with 32 Tensor Cores
GPU Max Frequency625 MHz765 MHz918 MHz
CPU6-core Arm® Cortex®-A78AE v8.2 64-bit CPU
1.5MB L2 + 4MB L3
6-core Arm® Cortex®-A78AE v8.2 64-bit CPU 1.5MB L2 + 4MB L38-core Arm® Cortex®-A78AE v8.2 64-bit CPU 2MB L2 + 4MB L3
CPU Max Frequency1.5 GHz2 GHz
Memory4GB 64-bit LPDDR5
34 GB/s
8GB 128-bit LPDDR5
68 GB/s
8GB 128-bit LPDDR5 102.4GB/s16GB 128-bit LPDDR5 102.4GB/s
DL Accelerator/1x NVDLA v22x NVDLA v2
DLA Max Frequency/614 MHz
Vision Accelerator/1x PVA v2
Storage128GB NVMe SSD
Video Encoder1080p30 supported by 1-2 CPU cores1x 4K60 (H.265) | 3x 4K30 (H.265)
6x 1080p60 (H.265) | 12x 1080p30 (H.265)
Video Decoder1x 4K60 (H.265)
2x 4K30 (H.265)
5x 1080p60 (H.265)
11x 1080p30 (H.265)
1x 8K30 (H.265) | 2x 4K60 (H.265) | 4x 4K30 (H.265)
9x 1080p60 (H.265) | 18x 1080p30 (H.265)
Display1* HDMI 2.1
CSI Camera2* CSI (2-lane 15pin)
Networking1* Gigabit Ethernet (10/100/1000M)
USB4* USB 3.2 Type-A (10Gbps); 1* USB2.0 Type-C (Device Mode)
M.2 Key M1* M.2 Key M
M.2 Key E1* M.2 Key E
Fan1* 4 pin Fan Connector(5V PWM)
CAN1* CAN
Multifunctional Port1* 40-Pin Expansion header,1* 12-Pin Control and UART header
RTCRTC 2-pin, RTC socket (supports CR1220 but not included)
Power9-19V
Power SupplyPower adapter not included
Temperature-10℃~60℃
Mechanical130mm x120mm x 58.5mm
+ +## Flash JetPack to reComputer J30/40 + +:::信息 +请参考此[wiki](/reComputer_J4012_Flash_Jetpack)页面了解更多信息,因为J30/40使用J401载板。 +::: diff --git a/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J30_40/reComputer_Jetson_with_Infineon_Wi-Fi_Module.md b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J30_40/reComputer_Jetson_with_Infineon_Wi-Fi_Module.md new file mode 100755 index 000000000000..fcb84cbca075 --- /dev/null +++ b/docs/zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J30_40/reComputer_Jetson_with_Infineon_Wi-Fi_Module.md @@ -0,0 +1,95 @@ +--- +description: 在 reComputer 上接入英飞凌 Wi-Fi 模组 +title: 在 reComputer 上接入英飞凌 Wi-Fi 模组 +keywords: +- reComputer +- Wifi +image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png +slug: /cn/Use_Infineon_Wifi_Module_on_reComputer +last_update: + date: 01/10/2024 + author: Youjiang +--- + +## 在 reComputer 上接入英飞凌 Wi-Fi 模组 + +在本文档中,您将学习如何在reComputer J4012上使用Infineon的Wi-Fi 6/6E模块。 + +## reComputer + +reComputer J4012采用Jetson Orin NX 16GB构建,这是一个功能强大且紧凑的智能边缘盒,为边缘带来高达100 TOPS的现代人工智能性能,比Jetson Xavier NX快高达5倍,比Jetson AGX Xavier快高达3倍。Jetson Orin NX将NVIDIA Ampere™ GPU架构与64位操作能力相结合,集成了先进的多功能视频和图像处理以及NVIDIA深度学习加速器。 + +
+ + +## 英飞凌Wi-Fi模块 + +英飞凌的Wi-Fi解决方案支持Wi-Fi 6/6E功能,具备三频段能力(2.4G、5G、6G)。其功能提高了范围、功率效率、网络稳定性和安全性,同时降低了材料成本和电路板空间。该解决方案在拥挤的网络环境中提供出色的高质量视频/音频流媒体和无缝连接体验,并通过在6G频谱中运行显著降低延迟。 + +
+ +
(从嵌入式艺术家图片:由嵌入式艺术家和村田共同开发的2EA M.2模块旨在评估、集成和易用性。)
+ + +## 硬件连接 +**第一步。** 准备所有将要使用的材料。 +- 搭载Jetpack 5.1.2的reComputer J4012 +- Infineon Wi-Fi模块 +- 2个IPEX转SMA母外置天线适配器和WIFI模块用的SMA公天线 +- 菲利普斯螺丝刀和螺丝 + +
+ +**步骤2。**将无线模块插入M.2 Key E插槽。并将2个IPEX插头插入无线模块的对应插座。 + +
+ +## 安装软件驱动程序。 + +**步骤1。**下载并上传 Infineon [WiFi 驱动程序](https://community.infineon.com/gfawx74859/attachments/gfawx74859/WiFiBluetoothLinux/2968/2/cyw55573-jetson-orin-agx-1.0-1-arm64.deb.zip) 和 [hostap 安装包](https://community.infineon.com/gfawx74859/attachments/gfawx74859/WiFiBluetoothLinux/2968/1/ifx-hostap-jetson-2.10-arm64.deb.zip) 到 reComputer。 + +
+ +**步骤2.** 在 reComputer 上打开一个终端,并运行以下命令来安装 Infineon hostap(wpa_supplicant/hostapd)软件包,您只需运行此步骤一次: + +```sh +sudo killall wpa_supplicant +sudo dpkg -i ifx-hostap-jetson-2.10-arm64.deb +``` + +
+ +**第三步。** 运行以下命令来运行Infineon WiFi驱动程序,每次系统启动后都需要运行此步骤: + +```sh +sudo dpkg -i cyw55573-jetson-orin-agx-1.0-1-arm64.deb +``` + +
+ +**第四步。** 使用以下命令检查wlan0接口是否可用: + +```sh +ifconfig +``` + +
+ + +**步骤5.** 连接到Wi-Fi网络 + +
+ + +## 可行性测试. +请使用浏览器打开一个网页,测试网络是否正常工作。 + +
+ +## 技术支持 + +请随时在我们的[论坛](https://forum.seeedstudio.com/)中提交问题。 + +
+

+
\ No newline at end of file diff --git a/sidebars.js b/sidebars.js index 8afccba50c81..eeddb0c7d24b 100644 --- a/sidebars.js +++ b/sidebars.js @@ -116,7 +116,7 @@ const sidebars = { { type: 'category', - label: 'Grove', + label: 'Grove 系列', collapsed: true, collapsible: true, link: { @@ -4824,40 +4824,7 @@ const sidebars = { - { - type: 'doc', - id: 'zh-CN/Sensor/mmWave_radar_sensor/cn-mmwave_radar_Intro', - label: '毫米波雷达传感器', - className: 'sideboard_calss', - }, - { - type: 'category', - label: '用于XIAO的毫米波', - collapsed: true, - collapsible: true, - items: [ - 'zh-CN/Sensor/mmWave_radar_sensor/mmwave-for-XIAO/cn-mmwave-for-xiao', - 'zh-CN/Sensor/mmWave_radar_sensor/mmwave-for-XIAO/cn-mmwave-for-xiao_arduino', - 'zh-CN/Sensor/mmWave_radar_sensor/mmwave-for-XIAO/cn-mmwave-for-xiao-connect-to-HA', - ], - }, - { - type: 'category', - label: '毫米波套件', - collapsed: true, - collapsible: true, - items: [ - 'zh-CN/Sensor/mmWave_radar_sensor/mmwave-kit/cn-mmwave_human_kit', - 'zh-CN/Sensor/mmWave_radar_sensor/mmwave-kit/cn-mmWave_Kit_And_Grove_Connect_To_ESPHome', - - ], - }, - 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR24BSD1', - 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR24FDB1', - 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR24HPB1', - 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR24HPC1', - 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR60BHA1', - 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR60FDA1', + { @@ -5111,7 +5078,135 @@ const sidebars = { 'zh-CN/Sensor/SeeedStudio_XIAO/CN_SeeedStudio_XIAO_Series_Projects', 'zh-CN/Sensor/SeeedStudio_XIAO/CN_XIAO_FAQ', + { + type: 'doc', + id: 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Intro', + label: 'NVIDIA Jetson 套件', + className: 'sideboard_calss', + }, + + { + type: 'category', + label: 'reComputer 英伟达系列', + link: { + type: "doc", + id: 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Intro', + }, + items: [ + { + type: 'category', + label: 'reComputer 工业级套件', + link: { + type: "doc", + id: 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_Getting_Started', + }, + items: [ + + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_J20_Hardware_Interfaces_Usage', + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_Industrial/reComputer_Industrial_J40_J30_Hardware_Interfaces_Usage' + ], + }, + { + type: 'category', + label: 'reComputer J10 套件', + link: { + type: "doc", + id: 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_Jetson_Series_Introduction', + }, + items: [ + { + type: 'category', + label: 'reComputer J1010', + items: [ + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_J1010_with_Jetson_getting_start', + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/J101_Enable_SD_Card', + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/J1010_Boot_From_SD_Card', + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_GPIO', + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Memory_Expansion', + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Series_Hardware_Layout', + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1010/reComputer_Jetson_Series_Initiation', + ], + }, + + { + type: 'category', + label: 'reComputer J1020', + items: [ + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1020v2/reComputer_J1020v2_with_Jetson_getting_start', + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J10/reComputer_J1020v2/reComputer_J1020_A206_Flash_JetPack', + ], + }, + ], + }, + { + type: 'category', + label: 'reComputer J30/40 套件', + // link: { + // type: "doc", + // id: 'Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J30_40', + // }, + items: [ + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J30_40/reComputer_J30_40_with_Jetson_getting_start', + 'zh-CN/Edge/NVIDIA_Jetson/reComputer_Jetson_Series/reComputer_J30_40/reComputer_Jetson_with_Infineon_Wi-Fi_Module' + ]} + ]}, + + + + // Generative AI + { + type: 'category', + label: '生成式人工智能应用', + link: { + type: "doc", + id: 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Generative_AI_Intro', + }, + + items: [ + // Models + 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Finetune_LLM_by_Llama_Factory_on_Jetson', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Quantized_Llama2_7B_with_MLC_LLM_on_Jetson', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/How_to_run_local_llm_text_to_image_on_reComputer', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Whisper_on_Jetson_for_Real_Time_Speech_to_Text', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Local_RAG_based_on_Jetson_with_LlamaIndex', + // 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/How_to_run_zero_shot_detection_on_reComputer', + // 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/How_to_run_VLM_on_reComputer', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/How_to_Format_the_Output_of_LLM_Using_Langchain_on_Jetson', + + // Projects + // 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Deploy_Riva_and_Llama2_on_reComputer', + // 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Real_Time_Subtitle_Recoder_on_Jetson', + // 'zh-CN/Edge/NVIDIA_Jetson/Application/Generative_AI/Deploy_Ollama_and_AnythingLLM_on_Jetson', + + ] + }, + + { + type: 'category', + label: '计算机视觉应用', + // link: { + // type: "doc", + // id: 'Edge/NVIDIA_Jetson/Application/Computer_Vision', + // }, + items: [ + // 'zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/DashCamNet-with-Jetson-Xavier-NX-Multicamera', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/How_to_Train_and_Deploy_YOLOv8_on_reComputer', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Jetson-Nano-MaskCam', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Security_Scan', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/reComputer_Jetson_Series_Projects', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/Traffic-Management-DeepStream-SDK', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv5-Object-Detection-Jetson', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8-DeepStream-TRT-Jetson', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8-TRT-Jetson', + // 'Edge/NVIDIA_Jetson/Application/Computer_Vision/reComputer_Jetson_Series_Tutorials_Exercise', + 'zh-CN/Edge/NVIDIA_Jetson/Application/Computer_Vision/YOLOv8_custom_classification_model', + ] + }, + + + + //Jetson 这里 { type: 'doc', @@ -5393,7 +5488,40 @@ const sidebars = { }, - + { + type: 'doc', + id: 'zh-CN/Sensor/mmWave_radar_sensor/cn-mmwave_radar_Intro', + label: '毫米波雷达传感器', + className: 'sideboard_calss', + }, + { + type: 'category', + label: '用于XIAO的毫米波', + collapsed: true, + collapsible: true, + items: [ + 'zh-CN/Sensor/mmWave_radar_sensor/mmwave-for-XIAO/cn-mmwave-for-xiao', + 'zh-CN/Sensor/mmWave_radar_sensor/mmwave-for-XIAO/cn-mmwave-for-xiao_arduino', + 'zh-CN/Sensor/mmWave_radar_sensor/mmwave-for-XIAO/cn-mmwave-for-xiao-connect-to-HA', + ], + }, + { + type: 'category', + label: '毫米波套件', + collapsed: true, + collapsible: true, + items: [ + 'zh-CN/Sensor/mmWave_radar_sensor/mmwave-kit/cn-mmwave_human_kit', + 'zh-CN/Sensor/mmWave_radar_sensor/mmwave-kit/cn-mmWave_Kit_And_Grove_Connect_To_ESPHome', + + ], + }, + 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR24BSD1', + 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR24FDB1', + 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR24HPB1', + 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR24HPC1', + 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR60BHA1', + 'zh-CN/Sensor/mmWave_radar_sensor/cn-Radar_MR60FDA1', ],