jetson-examples 0.1.5__py3-none-any.whl → 0.1.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jetson_examples-0.1.5.dist-info → jetson_examples-0.1.6.dist-info}/METADATA +35 -15
- jetson_examples-0.1.6.dist-info/RECORD +127 -0
- {jetson_examples-0.1.5.dist-info → jetson_examples-0.1.6.dist-info}/WHEEL +1 -1
- reComputer/main.py +1 -1
- reComputer/scripts/MoveNet-Lightning/clean.sh +8 -0
- reComputer/scripts/MoveNet-Lightning/getVersion.sh +59 -0
- reComputer/scripts/MoveNet-Lightning/images/dance_movenet.gif +0 -0
- reComputer/scripts/MoveNet-Lightning/init.sh +6 -0
- reComputer/scripts/MoveNet-Lightning/readme.md +30 -0
- reComputer/scripts/MoveNet-Lightning/run.sh +19 -0
- reComputer/scripts/MoveNet-Thunder/clean.sh +7 -0
- reComputer/scripts/MoveNet-Thunder/getVersion.sh +59 -0
- reComputer/scripts/MoveNet-Thunder/images/dance_movenet.gif +0 -0
- reComputer/scripts/MoveNet-Thunder/init.sh +6 -0
- reComputer/scripts/MoveNet-Thunder/readme.md +31 -0
- reComputer/scripts/MoveNet-Thunder/run.sh +18 -0
- reComputer/scripts/MoveNetJS/clean.sh +4 -0
- reComputer/scripts/MoveNetJS/images/dance.gif +0 -0
- reComputer/scripts/MoveNetJS/readme.md +56 -0
- reComputer/scripts/MoveNetJS/run.sh +13 -0
- reComputer/scripts/comfyui/LICENSE +21 -0
- reComputer/scripts/comfyui/README.md +127 -0
- reComputer/scripts/comfyui/clean.sh +7 -0
- reComputer/scripts/comfyui/config.yaml +29 -0
- reComputer/scripts/comfyui/images/comfyui.png +0 -0
- reComputer/scripts/comfyui/init.sh +163 -0
- reComputer/scripts/comfyui/run.sh +30 -0
- reComputer/scripts/depth-anything/README.md +33 -0
- reComputer/scripts/depth-anything/clean.sh +6 -1
- reComputer/scripts/depth-anything/config.yaml +31 -0
- reComputer/scripts/depth-anything/init.sh +164 -0
- reComputer/scripts/depth-anything/run.sh +20 -10
- reComputer/scripts/depth-anything-v2/Dockerfile +6 -0
- reComputer/scripts/depth-anything-v2/LICENSE +21 -0
- reComputer/scripts/depth-anything-v2/README.md +135 -0
- reComputer/scripts/depth-anything-v2/clean.sh +8 -0
- reComputer/scripts/depth-anything-v2/config.yaml +31 -0
- reComputer/scripts/depth-anything-v2/images/Autonomous Driving.png +0 -0
- reComputer/scripts/depth-anything-v2/images/Indoor Scenes.png +0 -0
- reComputer/scripts/depth-anything-v2/images/Opr.png +0 -0
- reComputer/scripts/depth-anything-v2/images/Security.png +0 -0
- reComputer/scripts/depth-anything-v2/images/Underwater Scenes.png +0 -0
- reComputer/scripts/depth-anything-v2/images/WebUI.png +0 -0
- reComputer/scripts/depth-anything-v2/images/teaser.png +0 -0
- reComputer/scripts/depth-anything-v2/init.sh +164 -0
- reComputer/scripts/depth-anything-v2/run.sh +22 -0
- reComputer/scripts/llama-factory/README.md +5 -4
- reComputer/scripts/llama-factory/assets/training.gif +0 -0
- reComputer/scripts/llama-factory/init.sh +0 -0
- reComputer/scripts/llama3/clean.sh +22 -0
- reComputer/scripts/ollama/clean.sh +22 -0
- reComputer/scripts/parler-tts/clean.sh +7 -0
- reComputer/scripts/parler-tts/getVersion.sh +59 -0
- reComputer/scripts/parler-tts/images/audio1.png +0 -0
- reComputer/scripts/parler-tts/images/audio2.png +0 -0
- reComputer/scripts/parler-tts/init.sh +8 -0
- reComputer/scripts/parler-tts/readme.md +63 -0
- reComputer/scripts/parler-tts/run.sh +17 -0
- reComputer/scripts/run.sh +5 -0
- reComputer/scripts/ultralytics-yolo/LICENSE +0 -0
- reComputer/scripts/ultralytics-yolo/README.md +78 -4
- reComputer/scripts/ultralytics-yolo/clean.sh +5 -1
- reComputer/scripts/ultralytics-yolo/config.yaml +32 -0
- reComputer/scripts/ultralytics-yolo/images/Ultralytics-yolo.gif +0 -0
- reComputer/scripts/ultralytics-yolo/images/ultralytics_fig1.png +0 -0
- reComputer/scripts/ultralytics-yolo/images/ultralytics_fig2.png +0 -0
- reComputer/scripts/ultralytics-yolo/init.sh +163 -0
- reComputer/scripts/ultralytics-yolo/run.sh +22 -9
- jetson_examples-0.1.5.dist-info/RECORD +0 -79
- reComputer/scripts/yolov8:detect/Dockerfile +0 -9
- reComputer/scripts/yolov8:detect/README.txt +0 -32
- reComputer/scripts/yolov8:detect/app.py +0 -47
- reComputer/scripts/yolov8:detect/run.sh +0 -3
- reComputer/scripts/yolov8:detect/templates/index.html +0 -27
- {jetson_examples-0.1.5.dist-info → jetson_examples-0.1.6.dist-info}/LICENSE +0 -0
- {jetson_examples-0.1.5.dist-info → jetson_examples-0.1.6.dist-info}/entry_points.txt +0 -0
- {jetson_examples-0.1.5.dist-info → jetson_examples-0.1.6.dist-info}/top_level.txt +0 -0
@@ -1,12 +1,22 @@
|
|
1
|
-
# Jetson-Example: Run Ultralytics YOLO on NVIDIA Jetson Orin 🚀
|
1
|
+
# Jetson-Example: Run Ultralytics YOLO Platform Service on NVIDIA Jetson Orin 🚀
|
2
2
|
|
3
|
-
##
|
3
|
+
## "One-Click Quick Deployment of Plug-and-Play Ultralytics YOLOv8 for All Task Models with Web UI and HTTP API Interface"
|
4
4
|
<p align="center">
|
5
5
|
<img src="images/Ultralytics-yolo.gif" alt="Ultralytics YOLO">
|
6
6
|
</p>
|
7
7
|
|
8
8
|
## Introduction 📘
|
9
|
-
|
9
|
+
In this project, you can quickly deploy all YOLOv8 task models on Nvidia Jetson Orin devices with one click. This setup enables object detection, segmentation, human pose estimation, and classification. It supports uploading local videos, images, and using a webcam, and also allows one-click TensorRT model conversion. By accessing [http://127.0.0.1:5001](http://127.0.0.1:5001) on your local machine or within the same LAN, you can quickly start using Ultralytics YOLO. Additionally, an HTTP API method has been added at [http://127.0.0.1:5001/results](http://127.0.0.1:5001/results) to display detection data results for any task, and an additional Python script is provided to read YOLOv8 detection data within Docker.
|
10
|
+
|
11
|
+
## **Key Features**:
|
12
|
+
|
13
|
+
1. **One-Click Deployment and Plug-and-Play**: Quickly deploy all YOLOv8 task models on Nvidia Jetson Orin devices.
|
14
|
+
2. **Comprehensive Task Support**: Enables object detection, segmentation, human pose estimation, and classification.
|
15
|
+
3. **Versatile Input Options**: Supports uploading local videos, images, and using a webcam.
|
16
|
+
4. **TensorRT Model Conversion**: Allows one-click conversion of models to TensorRT.
|
17
|
+
5. **Web UI Access**: Easy access via [`http://127.0.0.1:5001`](http://127.0.0.1:5001) on the local machine or within the same LAN.
|
18
|
+
6. **HTTP API Interface**: Added HTTP API at [`http://127.0.0.1:5001/results`](http://127.0.0.1:5001/results) to display detection data results.
|
19
|
+
7. **Python Script Support**: Provides an additional Python script to read YOLOv8 detection data within Docker.
|
10
20
|
|
11
21
|
[](https://github.com/ultralytics/ultralytics?tab=readme-ov-file#models)
|
12
22
|
All models implemented in this project are from the official [Ultralytics Yolo](https://github.com/ultralytics/ultralytics?tab=readme-ov-file#models).
|
@@ -19,6 +29,36 @@ All models implemented in this project are from the official [Ultralytics Yolo](
|
|
19
29
|
|
20
30
|
## Quickstart ⚡
|
21
31
|
|
32
|
+
### Modify Docker Daemon Configuration (Optional)
|
33
|
+
To enhance the experience of quickly loading models in Docker, you need to add the following content to the `/etc/docker/daemon.json` file:
|
34
|
+
|
35
|
+
```json
|
36
|
+
{
|
37
|
+
"default-runtime": "nvidia",
|
38
|
+
"runtimes": {
|
39
|
+
"nvidia": {
|
40
|
+
"path": "nvidia-container-runtime",
|
41
|
+
"runtimeArgs": []
|
42
|
+
}
|
43
|
+
},
|
44
|
+
"storage-driver": "overlay2",
|
45
|
+
"data-root": "/var/lib/docker",
|
46
|
+
"log-driver": "json-file",
|
47
|
+
"log-opts": {
|
48
|
+
"max-size": "100m",
|
49
|
+
"max-file": "3"
|
50
|
+
},
|
51
|
+
"no-new-privileges": true,
|
52
|
+
"experimental": false
|
53
|
+
}
|
54
|
+
```
|
55
|
+
|
56
|
+
After modifying the `daemon.json` file, you need to restart the Docker service to apply the configuration:
|
57
|
+
|
58
|
+
```sh
|
59
|
+
sudo systemctl restart docker
|
60
|
+
```
|
61
|
+
|
22
62
|
### Installation via PyPI (Recommended) 🐍
|
23
63
|
1. Install the package:
|
24
64
|
```sh
|
@@ -34,11 +74,45 @@ All models implemented in this project are from the official [Ultralytics Yolo](
|
|
34
74
|
```sh
|
35
75
|
reComputer run ultralytics-yolo
|
36
76
|
```
|
77
|
+
4. "Enter [`http://127.0.0.1:5001`](http://127.0.0.1:5001) or http://device_IP:5001 in your browser to access the Web UI."
|
78
|
+
<p align="center">
|
79
|
+
<img src="images/ultralytics_fig1.png" alt="Ultralytics YOLO">
|
80
|
+
</p>
|
81
|
+
|
82
|
+
- **Choose Model**: Select YOLOv8 n, s, l, m, x models and various tasks such as object detection, classification, segmentation, human pose estimation, OBB, etc.
|
83
|
+
- **Upload Custom Model**: Users can upload their own trained YOLOv8 models.
|
84
|
+
- **Choose Input Type**: Users can select to input locally uploaded images, videos, or real-time camera devices.
|
85
|
+
- **Enable TensorRT**: Choose whether to convert and use the TensorRT model. The initial conversion may require varying amounts of time.
|
86
|
+
|
87
|
+
5. If you want to see the detection result data, you can enter [`http://127.0.0.1:5001/results`](http://127.0.0.1:5001/results) in your browser to view the `JSON` formatted data results. These results include `boxes` for object detection, `masks` for segmentation, `keypoints` for human pose estimation, and the `names` corresponding to all numerical categories.
|
88
|
+
<p align="center">
|
89
|
+
<img src="images/ultralytics_fig2.png" alt="Ultralytics YOLO">
|
90
|
+
</p>
|
91
|
+
We also provide a Python script to help users integrate the data into their own programs.
|
92
|
+
|
93
|
+
```python
|
94
|
+
import requests
|
95
|
+
|
96
|
+
def fetch_results():
|
97
|
+
response = requests.get('http://localhost:5001/results')
|
98
|
+
if response.status_code == 200:
|
99
|
+
results = response.json()
|
100
|
+
return results
|
101
|
+
else:
|
102
|
+
print('Failed to fetch results')
|
103
|
+
return None
|
104
|
+
|
105
|
+
results = fetch_results()
|
106
|
+
print(results)
|
107
|
+
```
|
108
|
+
|
37
109
|
|
38
110
|
## Notes 📝
|
39
|
-
- The first time you start the code for detection, there will be a wait of at least 30 seconds for loading; this is normal.
|
40
111
|
- To stop detection at any time, press the Stop button.
|
41
112
|
- When accessing the WebUI from other devices within the same LAN, use the URL: `http://{Jetson_IP}:5001`.
|
113
|
+
- You can view the JSON formatted detection results by accessing http://{Jetson_IP}:5001/results.
|
114
|
+
- The first model conversion may require different amounts of time depending on the hardware and network environment, so please be patient.
|
115
|
+
|
42
116
|
|
43
117
|
## Further Development 🔧
|
44
118
|
- [Training a YOLOv8 Model](https://wiki.seeedstudio.com/How_to_Train_and_Deploy_YOLOv8_on_reComputer/)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
allowed_l4t_versions:
|
2
|
+
- 35.3.1
|
3
|
+
- 35.4.1
|
4
|
+
- 35.5.0
|
5
|
+
- 36.3.0 # Add your version here
|
6
|
+
required_disk_space: 20 # in GB
|
7
|
+
min_mem_gb: 4
|
8
|
+
min_swap_gb: 2
|
9
|
+
nvidia_jetson_package: "nvidia-jetpack"
|
10
|
+
packages:
|
11
|
+
#- "ros-noetic-ros-base"
|
12
|
+
#- "flask"
|
13
|
+
docker:
|
14
|
+
desired_daemon_json: |
|
15
|
+
{
|
16
|
+
"default-runtime": "nvidia",
|
17
|
+
"runtimes": {
|
18
|
+
"nvidia": {
|
19
|
+
"path": "nvidia-container-runtime",
|
20
|
+
"runtimeArgs": []
|
21
|
+
}
|
22
|
+
},
|
23
|
+
"storage-driver": "overlay2",
|
24
|
+
"data-root": "/var/lib/docker",
|
25
|
+
"log-driver": "json-file",
|
26
|
+
"log-opts": {
|
27
|
+
"max-size": "100m",
|
28
|
+
"max-file": "3"
|
29
|
+
},
|
30
|
+
"no-new-privileges": true,
|
31
|
+
"experimental": false
|
32
|
+
}
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,163 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#set color value
|
3
|
+
RED=$(tput setaf 1)
|
4
|
+
GREEN=$(tput setaf 2)
|
5
|
+
YELLOW=$(tput setaf 3)
|
6
|
+
BLUE=$(tput setaf 4)
|
7
|
+
MAGENTA=$(tput setaf 5)
|
8
|
+
CYAN=$(tput setaf 6)
|
9
|
+
RESET=$(tput sgr0)
|
10
|
+
|
11
|
+
echo "${CYAN}This script will install the necessary packages and configurations for running ultralytics-yolo on a Jetson Nano.${RESET}"
|
12
|
+
|
13
|
+
# Install yq for parsing YAML files
|
14
|
+
sudo apt-get update
|
15
|
+
sudo apt-get install -y jq
|
16
|
+
# Read configuration
|
17
|
+
CURRENT_DIR="ultralytics-yolo"
|
18
|
+
CONFIG_FILE="./jetson-examples/reComputer/scripts/${CURRENT_DIR}/config.yaml"
|
19
|
+
ALLOWED_L4T_VERSIONS=$(yq -r '.allowed_l4t_versions[]' $CONFIG_FILE)
|
20
|
+
ALLOWED_L4T_VERSIONS_ARRAY=($ALLOWED_L4T_VERSIONS)
|
21
|
+
REQUIRED_DISK_SPACE=$(yq -r '.required_disk_space' $CONFIG_FILE)
|
22
|
+
MIN_MEM_GB=$(yq -r '.min_mem_gb' $CONFIG_FILE)
|
23
|
+
MIN_SWAP_GB=$(yq -r '.min_swap_gb' $CONFIG_FILE)
|
24
|
+
NVIDIA_JETSON_PACKAGE=$(yq -r '.nvidia_jetson_package' $CONFIG_FILE)
|
25
|
+
PACKAGES=$(yq -r '.packages[]' $CONFIG_FILE)
|
26
|
+
DESIRED_DAEMON_JSON=$(yq -r '.docker.desired_daemon_json' $CONFIG_FILE)
|
27
|
+
CURRENT_DISK_SPACE=$(df -BG --output=avail / | tail -1 | sed 's/[^0-9]*//g')
|
28
|
+
MEM_GB=$(free -g | awk '/^Mem:/{print $2}')
|
29
|
+
SWAP_GB=$(free -g | awk '/^Swap:/{print $2}')
|
30
|
+
|
31
|
+
echo "${MAGENTA}Allowed L4T versions:${RESET} ${GREEN}$ALLOWED_L4T_VERSIONS ${RESET}"
|
32
|
+
echo "${MAGENTA}Required disk space: ${GREEN}${REQUIRED_DISK_SPACE}G ${RESET}"
|
33
|
+
echo "${MAGENTA}Minimum memory: ${GREEN}${MIN_MEM_GB}G ${RESET}"
|
34
|
+
echo "${MAGENTA}Minimum swap: ${GREEN}${MIN_SWAP_GB}G ${RESET}"
|
35
|
+
echo "${MAGENTA}NVIDIA Jetson package:${RESET} ${GREEN}$NVIDIA_JETSON_PACKAGE ${RESET}"
|
36
|
+
echo "${MAGENTA}Additional packages: ${RESET} ${GREEN}$PACKAGES ${RESET}"
|
37
|
+
|
38
|
+
# Check if NVIDIA Jetson package is installed
|
39
|
+
if ! dpkg -l | grep -qw "$NVIDIA_JETSON_PACKAGE"; then
|
40
|
+
echo "$NVIDIA_JETSON_PACKAGE is not installed. Installing $NVIDIA_JETSON_PACKAGE..."
|
41
|
+
sudo apt-get install -y $NVIDIA_JETSON_PACKAGE
|
42
|
+
else
|
43
|
+
echo "$NVIDIA_JETSON_PACKAGE is installed: ${GREEN}OK!${RESET}"
|
44
|
+
fi
|
45
|
+
|
46
|
+
# Install additional packages
|
47
|
+
for PACKAGE in $PACKAGES; do
|
48
|
+
if ! dpkg -l | grep -qw "$PACKAGE"; then
|
49
|
+
echo "$PACKAGE is not installed. Installing $PACKAGE..."
|
50
|
+
sudo apt-get install -y $PACKAGE
|
51
|
+
else
|
52
|
+
echo "$PACKAGE is installed: ${GREEN}OK!${RESET}"
|
53
|
+
fi
|
54
|
+
done
|
55
|
+
|
56
|
+
# Get system architecture
|
57
|
+
ARCH=$(uname -i)
|
58
|
+
if [ "$ARCH" = "aarch64" ]; then
|
59
|
+
# Check for L4T version string
|
60
|
+
L4T_VERSION_STRING=$(head -n 1 /etc/nv_tegra_release)
|
61
|
+
|
62
|
+
if [ -z "$L4T_VERSION_STRING" ]; then
|
63
|
+
L4T_VERSION_STRING=$(dpkg-query --showformat='${Version}' --show nvidia-l4t-core)
|
64
|
+
fi
|
65
|
+
|
66
|
+
L4T_RELEASE=$(echo "$L4T_VERSION_STRING" | cut -f 2 -d ' ' | grep -Po '(?<=R)[^;]+')
|
67
|
+
L4T_REVISION=$(echo "$L4T_VERSION_STRING" | cut -f 2 -d ',' | grep -Po '(?<=REVISION: )[^;]+')
|
68
|
+
L4T_VERSION="$L4T_RELEASE.$L4T_REVISION"
|
69
|
+
|
70
|
+
elif [ "$ARCH" = "x86_64" ]; then
|
71
|
+
echo "${RED}Unsupported architecture: $ARCH${RESET}"
|
72
|
+
exit 1
|
73
|
+
fi
|
74
|
+
|
75
|
+
|
76
|
+
# Check L4T version
|
77
|
+
if [[ " ${ALLOWED_L4T_VERSIONS_ARRAY[@]} " =~ " ${L4T_VERSION} " ]]; then
|
78
|
+
echo "L4T VERSION ${GREEN}${L4T_VERSION}${RESET} is in the allowed: ${GREEN}OK!${RESET}"
|
79
|
+
else
|
80
|
+
echo "${RED}L4T VERSION ${GREEN}${L4T_VERSION}${RESET}${RED} is not in the allowed versions list.${RESET}"
|
81
|
+
exit 1
|
82
|
+
fi
|
83
|
+
|
84
|
+
# Check disk space
|
85
|
+
if [ "$CURRENT_DISK_SPACE" -lt "$REQUIRED_DISK_SPACE" ]; then
|
86
|
+
echo "${RED}Insufficient disk space. Required: ${REQUIRED_DISK_SPACE}G, Available: ${CURRENT_DISK_SPACE}G. ${RESET}"
|
87
|
+
exit 1
|
88
|
+
else
|
89
|
+
echo "Required ${GREEN}${REQUIRED_DISK_SPACE}${RESET} G disk space: ${GREEN}OK!${RESET}"
|
90
|
+
fi
|
91
|
+
|
92
|
+
# Check memory and swap space
|
93
|
+
if [ "$MEM_GB" -lt "$MIN_MEM_GB" ]; then
|
94
|
+
echo "${RED}Insufficient memory: $MEM_GB GB (minimum required: $MIN_MEM_GB GB).${RESET}"
|
95
|
+
exit 1
|
96
|
+
else
|
97
|
+
echo "Required ${GREEN}$MIN_MEM_GB${RESET} G memory space: ${GREEN}OK!${RESET}"
|
98
|
+
fi
|
99
|
+
|
100
|
+
if [ "$SWAP_GB" -lt "$MIN_SWAP_GB" ]; then
|
101
|
+
echo "${RED}Insufficient swap space: $SWAP_GB GB (minimum required: $MIN_SWAP_GB GB). ${RESET}"
|
102
|
+
exit 1
|
103
|
+
else
|
104
|
+
echo "Required ${GREEN}$MIN_SWAP_GB${RESET} G swap space: ${GREEN}OK!${RESET}"
|
105
|
+
fi
|
106
|
+
|
107
|
+
# Check if Docker is installed
|
108
|
+
if ! command -v docker &> /dev/null; then
|
109
|
+
echo "${BLUE}Docker is not installed. Installing Docker...${RESET}"
|
110
|
+
|
111
|
+
sudo apt-get install -y \
|
112
|
+
apt-transport-https \
|
113
|
+
ca-certificates \
|
114
|
+
curl \
|
115
|
+
software-properties-common
|
116
|
+
|
117
|
+
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
118
|
+
sudo add-apt-repository \
|
119
|
+
"deb [arch=arm64] https://download.docker.com/linux/ubuntu \
|
120
|
+
$(lsb_release -cs) \
|
121
|
+
stable"
|
122
|
+
|
123
|
+
sudo apt-get update
|
124
|
+
sudo apt-get install -y docker-ce
|
125
|
+
sudo systemctl enable docker
|
126
|
+
sudo systemctl start docker
|
127
|
+
sudo usermod -aG docker $USER
|
128
|
+
sudo systemctl restart docker
|
129
|
+
newgrp docker
|
130
|
+
|
131
|
+
echo "Docker has been installed and configured."
|
132
|
+
fi
|
133
|
+
|
134
|
+
# Check if the current user has permissions to use Docker
|
135
|
+
if ! docker info &> /dev/null; then
|
136
|
+
echo "The current user does not have permissions to use Docker. Adding permissions..."
|
137
|
+
sudo usermod -aG docker $USER
|
138
|
+
sudo systemctl restart docker
|
139
|
+
newgrp docker
|
140
|
+
echo "${BLUE}Permissions added. Please log out and log back in for the changes to take effect.${RESET}"
|
141
|
+
else
|
142
|
+
echo "${GREEN}Docker is installed and the current user has permissions to use it.${RESET}"
|
143
|
+
fi
|
144
|
+
|
145
|
+
DAEMON_JSON_PATH="/etc/docker/daemon.json"
|
146
|
+
if [ ! -f "$DAEMON_JSON_PATH" ] || [ "$(cat $DAEMON_JSON_PATH)" != "$DESIRED_DAEMON_JSON" ]; then
|
147
|
+
echo "${BLUE}Creating/updating $DAEMON_JSON_PATH with the desired content...${RESET}"
|
148
|
+
echo "$DESIRED_DAEMON_JSON" | sudo tee $DAEMON_JSON_PATH > /dev/null
|
149
|
+
sudo systemctl restart docker
|
150
|
+
echo "${GREEN}$DAEMON_JSON_PATH has been created/updated.${RESET}"
|
151
|
+
else
|
152
|
+
echo "${GREEN}$DAEMON_JSON_PATH already exists and has the correct content.${RESET}"
|
153
|
+
fi
|
154
|
+
|
155
|
+
# Install additional packages
|
156
|
+
for PACKAGE in $PACKAGES; do
|
157
|
+
if ! dpkg -l | grep -qw "$PACKAGE"; then
|
158
|
+
echo "${CYAN}$PACKAGE${RESET} ${BLUE}is not installed. Installing $PACKAGE...${RESET}"
|
159
|
+
sudo apt-get install -y $PACKAGE
|
160
|
+
else
|
161
|
+
echo "${GREEN}$PACKAGE${RESET} is already installed: ${GREEN}OK!${RESET}"
|
162
|
+
fi
|
163
|
+
done
|
@@ -1,12 +1,25 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
|
3
|
-
|
3
|
+
CONTAINER_NAME="ultralytics-yolo"
|
4
|
+
IMAGE_NAME="yaohui1998/ultralytics-yolo:latest"
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
# Pull the latest image
|
7
|
+
docker pull $IMAGE_NAME
|
8
|
+
|
9
|
+
# Check if the container with the specified name already exists
|
10
|
+
if [ $(docker ps -a -q -f name=^/${CONTAINER_NAME}$) ]; then
|
11
|
+
echo "Container $CONTAINER_NAME already exists. Starting and attaching..."
|
12
|
+
docker start $CONTAINER_NAME
|
13
|
+
docker exec -it $CONTAINER_NAME /bin/bash
|
14
|
+
else
|
15
|
+
echo "Container $CONTAINER_NAME does not exist. Creating and starting..."
|
16
|
+
docker run -it \
|
17
|
+
--name $CONTAINER_NAME \
|
18
|
+
--privileged \
|
19
|
+
--network host \
|
20
|
+
-v /tmp/.X11-unix:/tmp/.X11-unix \
|
21
|
+
-v /dev/*:/dev/* \
|
22
|
+
-v /etc/localtime:/etc/localtime:ro \
|
23
|
+
--runtime nvidia \
|
24
|
+
$IMAGE_NAME
|
25
|
+
fi
|
@@ -1,79 +0,0 @@
|
|
1
|
-
reComputer/__init__.py,sha256=XEqb2aiIn8fzGE68Mph4ck1FtQqsR_am0wRWvrYPffQ,22
|
2
|
-
reComputer/main.py,sha256=A9otIJQ69cwKq6ZrRKPMRuR5Xe5uHHtUy-KwcK_9YZM,2088
|
3
|
-
reComputer/scripts/check.sh,sha256=cUMwAjHpgJoaD5a8gTLJG7QWjF9CyKPgQ-ewRNK3FD8,127
|
4
|
-
reComputer/scripts/clean.sh,sha256=TlGas1IKqSX7MEkZe4VvCQJgjDNEvfQyuAeXtKraNMA,898
|
5
|
-
reComputer/scripts/run.sh,sha256=7a6eIwyaJ-Fp_toqsw135WyGUZPDnUfDh3z3CxktAqo,1032
|
6
|
-
reComputer/scripts/update.sh,sha256=9Pw9-laO8NU2-4t4UisjFEwHPY5-ZAIoDi3AqWBzBbs,900
|
7
|
-
reComputer/scripts/Sheared-LLaMA-2.7B-ShareGPT/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
8
|
-
reComputer/scripts/Sheared-LLaMA-2.7B-ShareGPT/run.sh,sha256=uPDPZ4zM3uKgnLg1oU19E3XlzI-8xio2Bub4Zx-3Oig,237
|
9
|
-
reComputer/scripts/audiocraft/README.md,sha256=EGEoK1Rq-Vczri24APoe2kK8e5VmJHn_gRGdvGPI8lg,951
|
10
|
-
reComputer/scripts/audiocraft/clean.sh,sha256=0mk1BHYa1IlnPOXZt_Vy8TqxTLGAnXPIDuClMwzdTmM,77
|
11
|
-
reComputer/scripts/audiocraft/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
12
|
-
reComputer/scripts/audiocraft/run.sh,sha256=b0kjEeZnA5diQw6vjyrkOX-Svs5XVKGt0ABbWtZsZEs,160
|
13
|
-
reComputer/scripts/depth-anything/Dockerfile,sha256=gJ2Q1g2E06_z4hy9C-m1bA4X2IMqRWuo42izFfQ_E5Y,279
|
14
|
-
reComputer/scripts/depth-anything/LICENSE,sha256=feSgondqafLDgk7Dp9gnVBE5Y9K5X9mal_DGYKALzXQ,1073
|
15
|
-
reComputer/scripts/depth-anything/README.md,sha256=nHFcFIEZyoy3_n7bFuQ_3zT3IKRwLmRkxuXj9YE4sWw,4205
|
16
|
-
reComputer/scripts/depth-anything/clean.sh,sha256=81oScb0iXcFQ6-3X9bfIJRcE6hBuVETGDyNbQwMhQ7Q,75
|
17
|
-
reComputer/scripts/depth-anything/run.sh,sha256=m8g6LHQHPssKuOftLil0y3IbZaIwFIkHGt_laecCRBs,315
|
18
|
-
reComputer/scripts/depth-anything/images/Autonomous Driving.png,sha256=oHdvvCyA5-ifHNWz4MxnBGT4HSy5Bbud9vbxlilS2-w,331869
|
19
|
-
reComputer/scripts/depth-anything/images/Indoor Scenes.png,sha256=bnTMltdVecbP4TjRk7t-ldE3Rj7CmUh53RK8A6dK2lo,625925
|
20
|
-
reComputer/scripts/depth-anything/images/Opr.png,sha256=9ppsKQZ2SWI7NFKWuQMLyxyfpsHAyN1dhp1ufYuPt4k,45174
|
21
|
-
reComputer/scripts/depth-anything/images/Security.png,sha256=F25Ay65Mz6jWAP-P20fmG4-RftkijuNM6uFhUNW2rtY,235206
|
22
|
-
reComputer/scripts/depth-anything/images/Underwater Scenes.png,sha256=xpBV1VoCoQqgomAjHQKQYofJha0r4tUTNUGG6XWCm20,598471
|
23
|
-
reComputer/scripts/depth-anything/images/WebUI.png,sha256=HtlUbq6KSOqR6vV1n7mFaV_Kz5DLs2W4UcAVvEG4c-4,721506
|
24
|
-
reComputer/scripts/depth-anything/images/teaser.png,sha256=J1VpUd71nshdWgZ1dS0LUl9ppJn-Rm2-ZPX9YuM4C38,5657444
|
25
|
-
reComputer/scripts/live-llava/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
26
|
-
reComputer/scripts/live-llava/run.sh,sha256=4sWld5d8Fkr9GUVqLH2S1RyOKOjobhjojSzuJu8EuCg,10137
|
27
|
-
reComputer/scripts/llama-factory/README.md,sha256=N727Q8X-OGo-_d4ZIAhwbWtcOyjto0XwfzmI2Zw8wHg,2449
|
28
|
-
reComputer/scripts/llama-factory/clean.sh,sha256=cRpFDKCkKDCgaCoXdmF60dQ_RLAcIHbYZ5w-8PLKRr8,133
|
29
|
-
reComputer/scripts/llama-factory/init.sh,sha256=FAaIlBQxLdenS6aW8Vpo5OqBZgV0NmkrCpkbJMwkwtU,1633
|
30
|
-
reComputer/scripts/llama-factory/run.sh,sha256=NsxvjSkwFQ-b5DoPRN5DlCYsyvq1_wpZmubVN9y4nQs,231
|
31
|
-
reComputer/scripts/llama-factory/assets/llama-factory-Jetson.png,sha256=bUoDJWCiGfGRM_cQBEve-7nJyJFxCS5E0ekBcc1fpUg,574732
|
32
|
-
reComputer/scripts/llama-factory/assets/webui.png,sha256=RXaMyX3cIqZVoO27z5kn0rmbfEapdMuWN2JmPZlJlB0,419226
|
33
|
-
reComputer/scripts/llama3/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
34
|
-
reComputer/scripts/llama3/run.sh,sha256=IkHvMwh_U8fp7AH2qWFUMWywHZDbZKHlp8ODzfHgqBQ,328
|
35
|
-
reComputer/scripts/llava/clean.sh,sha256=7t2SIxj6_elOpHxtTjl9ofnU5d9Ir2r5eyNAj6lAI68,70
|
36
|
-
reComputer/scripts/llava/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
37
|
-
reComputer/scripts/llava/run.sh,sha256=w5AAak8rDX3drwPiwtzpIbMxN-Tzw3DcmtJPhfKCbH8,251
|
38
|
-
reComputer/scripts/llava-v1.5-7b/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
39
|
-
reComputer/scripts/llava-v1.5-7b/run.sh,sha256=w5AAak8rDX3drwPiwtzpIbMxN-Tzw3DcmtJPhfKCbH8,251
|
40
|
-
reComputer/scripts/llava-v1.6-vicuna-7b/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
41
|
-
reComputer/scripts/llava-v1.6-vicuna-7b/run.sh,sha256=s0KKqqvIGkRNhWZmHSd1HrARYcr9VCjSsp1bInTE6fg,269
|
42
|
-
reComputer/scripts/nanodb/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
43
|
-
reComputer/scripts/nanodb/readme.md,sha256=kzWnCq4qAB95Sssj8mFs_VrH5ju3phSqygLjSRO3ceQ,247
|
44
|
-
reComputer/scripts/nanodb/run.sh,sha256=YHuLNtWcmx82QBnTa4vGzhFjNM9MJUbyi_XYbMG6hfQ,2571
|
45
|
-
reComputer/scripts/nanoowl/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
46
|
-
reComputer/scripts/nanoowl/run.sh,sha256=jXG3JoE1MQOb6UjOwf0SNmbX5MsAA5weMEQLihspI0c,264
|
47
|
-
reComputer/scripts/ollama/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
48
|
-
reComputer/scripts/ollama/run.sh,sha256=JQNDtIlpuGNJm4XuUC_Sy4qPmSOfeAsd8VOrxAvyavU,246
|
49
|
-
reComputer/scripts/stable-diffusion-webui/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
50
|
-
reComputer/scripts/stable-diffusion-webui/run.sh,sha256=E0_KRJK5BLFsBzAiJw-Ir81bvmIU4GV-TLJRgda2XHM,160
|
51
|
-
reComputer/scripts/text-generation-webui/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
52
|
-
reComputer/scripts/text-generation-webui/run.sh,sha256=mRlWxZTArGXoyyeHbgZvPbVKTflQSsFCKUERKoHYHHE,407
|
53
|
-
reComputer/scripts/ultralytics-yolo/LICENSE,sha256=feSgondqafLDgk7Dp9gnVBE5Y9K5X9mal_DGYKALzXQ,1073
|
54
|
-
reComputer/scripts/ultralytics-yolo/README.md,sha256=xmK-K6EIONhyOBzSTq30G39b6NiYkvGWL8WTTGmymSY,2397
|
55
|
-
reComputer/scripts/ultralytics-yolo/clean.sh,sha256=0sS0YZI0B1GdydOyDJU4IG1cVmAssWZS60Qt8LJobdE,63
|
56
|
-
reComputer/scripts/ultralytics-yolo/run.sh,sha256=yxXAFIKVa_nknnhowCMxfIo2_3dej9I9b9Wa23KQlho,287
|
57
|
-
reComputer/scripts/ultralytics-yolo/images/Ultralytics-yolo.gif,sha256=_xF_n-Gfa-Er-evCcJ1tBSgNkSc9oqitgDXmq4ggwBw,12628076
|
58
|
-
reComputer/scripts/ultralytics-yolo/images/tasks.png,sha256=ILhKVHoGiwZM1BQdbjcb8RM07ijq_2s3c5XqBM5rRx0,275724
|
59
|
-
reComputer/scripts/whisper/init.sh,sha256=ktAKm4XFtJYntnSR-oAK4G5OhCSSoKw511mR9qk6xGw,428
|
60
|
-
reComputer/scripts/whisper/run.sh,sha256=UKiY7Ie5uyGrdvAob1XwPSlpdEL27HR5vcMtnVOrph4,146
|
61
|
-
reComputer/scripts/yolov10/Dockerfile,sha256=G25SPvYE9yYpMi0nRWcqKXbXJNdomnPV4tIZUVkmhWw,466
|
62
|
-
reComputer/scripts/yolov10/README.md,sha256=oMIr-1IBN0VZdovILqX-bLjfUT8cHQRGotqefTm0MVQ,3623
|
63
|
-
reComputer/scripts/yolov10/clean.sh,sha256=ErryX-k5UNlOj3IoIxEs5j55e7hysO3rlo5KenN4QWE,106
|
64
|
-
reComputer/scripts/yolov10/init.sh,sha256=juYjv4_djBF0T05G0o6gsmitv3jxQT7LU9SneETIAX8,1679
|
65
|
-
reComputer/scripts/yolov10/run.sh,sha256=xPZ9pvoi_AyY9F4ujT-xGcockqeQOZzSC45J-6qyHwE,289
|
66
|
-
reComputer/scripts/yolov10/assets/webui.png,sha256=gNOLP0ptxTcFk16zktRE5qEJ9aIkOmWeMBU08FeB9YM,2600779
|
67
|
-
reComputer/scripts/yolov8-rail-inspection/readme.md,sha256=awuvn2sLDnr-U4Q5pTTyieJMYNy27NRQyFhiQyiUNFI,2008
|
68
|
-
reComputer/scripts/yolov8-rail-inspection/run.sh,sha256=rTpjiwMgn6iA3IJ6QDFR9wkOMDVCQ-qgTbFo2YKiX-c,809
|
69
|
-
reComputer/scripts/yolov8:detect/Dockerfile,sha256=V4E0x1EAAqPwHIpvwgM6QgS4VkmC9XQszpafS9we6fY,167
|
70
|
-
reComputer/scripts/yolov8:detect/README.txt,sha256=gLAXjOR1X9gXJM0XA0c1P12nz81zvUoZyT5DBK4ZY9w,1122
|
71
|
-
reComputer/scripts/yolov8:detect/app.py,sha256=63o2icb_av9owTBW6nL6wJfXdYEyZRt8feBL6YqrWTw,1307
|
72
|
-
reComputer/scripts/yolov8:detect/run.sh,sha256=iq5o5iy2iPaUfC471sOWY4HhYWIOZ1geauqNQ-fg-2Y,130
|
73
|
-
reComputer/scripts/yolov8:detect/templates/index.html,sha256=Q0mRmqax_F4cZq8Zau_JLtwvCpFH_Al6lUisu9Uaids,524
|
74
|
-
jetson_examples-0.1.5.dist-info/LICENSE,sha256=ac_LOi8ChcJhymEfBulX98Y06wTI2IMcQnqCXZ5yay4,1066
|
75
|
-
jetson_examples-0.1.5.dist-info/METADATA,sha256=389saGoBSnNuJzwFBxj07iucvIAQgHbJcKSR0FkY9lY,5323
|
76
|
-
jetson_examples-0.1.5.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
|
77
|
-
jetson_examples-0.1.5.dist-info/entry_points.txt,sha256=5-OdcBifoDjVXE9KjNoN6tQa8l_XSXhdbBEgL2hxeDM,58
|
78
|
-
jetson_examples-0.1.5.dist-info/top_level.txt,sha256=SI-liiUOkoGwOJfMP7d7k63JKgdcbiEj6DEC8QIKI90,11
|
79
|
-
jetson_examples-0.1.5.dist-info/RECORD,,
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# Run YOLOv8 Detect Model on Jetson in One Line
|
2
|
-
|
3
|
-
## Introduction
|
4
|
-
|
5
|
-
This is a simple demo about how to quickly run the ultralytics YOLOv8 detection model on Jetson device.
|
6
|
-
|
7
|
-
## Getting Started
|
8
|
-
|
9
|
-
- install **jetson-examples** by pip:
|
10
|
-
```sh
|
11
|
-
pip3 install jetson-examples
|
12
|
-
```
|
13
|
-
- restart reComputer
|
14
|
-
```sh
|
15
|
-
sudo restart
|
16
|
-
```
|
17
|
-
- run yolov8 detect model on jetson in one line:
|
18
|
-
```sh
|
19
|
-
reComputer run yolov8-counter
|
20
|
-
```
|
21
|
-
|
22
|
-
## FAQs
|
23
|
-
1. The project has been tested on the Jetson Orin platform, and its execution entails the use of Docker; therefore, it is essential to ensure that all necessary Docker components are fully installed and functional.
|
24
|
-
2. During program execution, you may encounter an ```ERROR: Could not open requirements file.``` This error message does not impact the normal operation of the program and can be safely ignored.
|
25
|
-
3. If you want to run `Docker` commands without using `sudo` you can configure it with the following commands:
|
26
|
-
```sh
|
27
|
-
sudo groupadd docker
|
28
|
-
sudo gpasswd -a ${USER} docker
|
29
|
-
sudo systemctl restart docker
|
30
|
-
sudo chmod a+rw /var/run/docker.sock
|
31
|
-
```
|
32
|
-
|
@@ -1,47 +0,0 @@
|
|
1
|
-
from flask import Flask, render_template, Response
|
2
|
-
import cv2 as cv
|
3
|
-
from ultralytics import YOLO
|
4
|
-
import numpy
|
5
|
-
|
6
|
-
|
7
|
-
class JetsonExampleYoloV8:
|
8
|
-
|
9
|
-
def __init__(self):
|
10
|
-
self.app = Flask(__name__)
|
11
|
-
self.cap = cv.VideoCapture(0)
|
12
|
-
assert self.cap.isOpened(), "Error reading video file"
|
13
|
-
|
14
|
-
print("prepare yolo model")
|
15
|
-
self.model = YOLO("/usr/src/ultralytics/yolov8n.pt")
|
16
|
-
print("done")
|
17
|
-
self.setup_routes()
|
18
|
-
|
19
|
-
def setup_routes(self):
|
20
|
-
@self.app.route('/')
|
21
|
-
def index():
|
22
|
-
return render_template("index.html")
|
23
|
-
|
24
|
-
@self.app.route('/video-feed')
|
25
|
-
def video_feed():
|
26
|
-
return Response(self.gen_frames(),mimetype='multipart/x-mixed-replace; boundary=frame')
|
27
|
-
|
28
|
-
def gen_frames(self):
|
29
|
-
while True:
|
30
|
-
ret0, frame= self.cap.read()
|
31
|
-
|
32
|
-
if not ret0:break
|
33
|
-
|
34
|
-
results = self.model.predict(frame, show=False)
|
35
|
-
annotated_frame = results[0].plot()
|
36
|
-
|
37
|
-
ret1, buffer = cv.imencode('.jpg',annotated_frame)
|
38
|
-
frame = buffer.tobytes()
|
39
|
-
yield (b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
|
40
|
-
|
41
|
-
def run(self):
|
42
|
-
self.app.run()
|
43
|
-
|
44
|
-
|
45
|
-
if __name__=='__main__':
|
46
|
-
yolo = JetsonExampleYoloV8()
|
47
|
-
yolo.run()
|
@@ -1,27 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html lang="en">
|
3
|
-
<head>
|
4
|
-
<meta charset="UTF-8">
|
5
|
-
<title>ultralytics YOLOv8</title>
|
6
|
-
<style>
|
7
|
-
.container{
|
8
|
-
width: 60%;
|
9
|
-
margin: 0 auto;
|
10
|
-
display: flex;
|
11
|
-
justify-content: center;
|
12
|
-
align-items: center;
|
13
|
-
}
|
14
|
-
.container img {
|
15
|
-
width: 100%;
|
16
|
-
height: auto;
|
17
|
-
}
|
18
|
-
</style>
|
19
|
-
</head>
|
20
|
-
|
21
|
-
<body>
|
22
|
-
<div class="container">
|
23
|
-
<img src="{{url_for('video_feed')}}" alt="YOLOv8 Output">
|
24
|
-
</div>
|
25
|
-
</body>
|
26
|
-
|
27
|
-
</html>
|
File without changes
|
File without changes
|
File without changes
|