Skip to content

Commit 0824092

Browse files
authored
Merge pull request #37 from Ar-Ray-code/fix/dockerfiles
Fix/dockerfiles
2 parents d50edf0 + 3522ead commit 0824092

20 files changed

+455
-836
lines changed

yolox_ros_cpp/README.md

Lines changed: 2 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- TensorRT 8.x *
88
- ONNXRuntime *
99
- Tensorflow Lite *
10+
- **CUDA 11**
1011

1112
※ Either one of OpenVINO or TensorRT or ONNXRuntime or Tensorflow Lite is required.
1213

@@ -18,106 +19,8 @@
1819

1920
※ Model convert script is not supported OpenVINO 2022.*
2021

21-
YOLOX is not required.
22+
Don't use CUDA 12
2223

23-
※ Jetson + TensorRT docker support (Jetpack 4.6 r32.6.1). Tested with Jetson Nano 4GB.
24-
25-
26-
27-
28-
<!-- <details>
29-
<summary>Execute with docker</summary>
30-
31-
32-
#### OpenVINO
33-
```bash
34-
# base image is "openvino/ubuntu20_dev:2021.4.1_20210416"
35-
docker pull fateshelled/openvino_yolox_ros:latest
36-
37-
xhost +
38-
docker run --rm -it \
39-
--network host \
40-
--privileged \
41-
--user openvino \
42-
-v $HOME/ros2_ws:/home/openvino/ros2_ws \
43-
-v /tmp/.X11-unix:/tmp/.X11-unix \
44-
-w /home/openvino/ros2_ws \
45-
-e DISPLAY=$DISPLAY \
46-
--device /dev/video0:/dev/video0 \
47-
fateshelled/openvino_yolox_ros:latest /bin/bash
48-
49-
# If use NCS2, mount "/dev/bus/usb".
50-
xhost +
51-
docker run --rm -it \
52-
--network host \
53-
--privileged \
54-
--user openvino \
55-
-v $HOME/ros2_ws:/home/openvino/ros2_ws \
56-
-v /tmp/.X11-unix:/tmp/.X11-unix \
57-
-w /home/openvino/ros2_ws \
58-
-v /dev/bus/usb:/dev/bus/usb
59-
-e DISPLAY=$DISPLAY \
60-
--device /dev/video0:/dev/video0 \
61-
fateshelled/openvino_yolox_ros:latest \
62-
/bin/bash
63-
64-
```
65-
66-
#### TensorRT
67-
```bash
68-
# base image is "nvcr.io/nvidia/pytorch:21.09-py3"
69-
docker pull swiftfile/tensorrt_yolox_ros:latest
70-
71-
xhost +
72-
docker run --rm -it \
73-
--network host \
74-
--gpus all \
75-
--privileged \
76-
-v $HOME/ros2_ws:/root/ros2_ws \
77-
-v /tmp/.X11-unix:/tmp/.X11-unix \
78-
-w /root/ros2_ws \
79-
-e DISPLAY=$DISPLAY \
80-
--device /dev/video0:/dev/video0 \
81-
swiftfile/tensorrt_yolox_ros:latest \
82-
/bin/bash
83-
```
84-
85-
#### Jetson + TensorRT
86-
```bash
87-
# base image is "dustynv/ros:foxy-ros-base-l4t-r32.6.1"
88-
docker pull fateshelled/jetson_yolox_ros:foxy-ros-base-l4t-r32.6.1
89-
90-
# This image cannot display GUI.
91-
docker run --rm -it \
92-
--network host \
93-
--runtime nvidia \
94-
-v $HOME/ros2_ws:/root/ros2_ws \
95-
-w /root/ros2_ws \
96-
--device /dev/video0:/dev/video0 \
97-
fateshelled/jetson_yolox_ros:foxy-ros-base-l4t-r32.6.1 \
98-
/bin/bash
99-
```
100-
101-
#### ONNXRuntime
102-
```bash
103-
# base image is "nvcr.io/nvidia/cuda:11.4.2-cudnn8-devel-ubuntu20.04"
104-
docker pull fateshelled/onnxruntime_yolox_ros:latest
105-
106-
xhost +
107-
docker run --rm -it \
108-
--network host \
109-
--gpus all \
110-
--privileged \
111-
-v $HOME/ros2_ws:/root/ros2_ws \
112-
-v /tmp/.X11-unix:/tmp/.X11-unix \
113-
-w /root/ros2_ws \
114-
-e DISPLAY=$DISPLAY \
115-
--device /dev/video0:/dev/video0 \
116-
fateshelled/onnxruntime_yolox_ros:latest \
117-
/bin/bash
118-
```
119-
120-
</details> -->
12124

12225
## Clone YOLOX-ROS
12326
```bash
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Jetson
2+
3+
## Environment
4+
5+
- Jetson AGX Orin
6+
- Jetpack 5.1 (R35.1.0 @Ubuntu 20.04)
7+
- Docker
8+
- [TIER IV C1 Camera environment](https://github.com/tier4/tier4_automotive_hdr_camera) (When using C1 camera)
9+
10+
## Build & attach shell
11+
12+
13+
```bash
14+
cd ./YOLOX-ROS/yolox_ros_cpp/docker/jetson
15+
bash setup.bash
16+
```
17+
18+
## Build (in docker container)
19+
20+
```bash
21+
source /dependencies/install/setup.bash
22+
colcon build --cmake-args -DJETSON=ON
23+
bash src/YOLOX-ROS/weights/onnx/download.bash yolox_tiny
24+
bash src/YOLOX-ROS/weights/tensorrt/convert.bash yolox_tiny
25+
```
26+
27+
28+
## Run (in docker container)
29+
30+
```bash
31+
source ./install/setup.bash
32+
ros2 launch yolox_ros_cpp yolox_tensorrt.launch.py
33+
```

yolox_ros_cpp/docker/jetson/docker-compose.yaml

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 21 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,27 @@
1-
FROM dustynv/ros:foxy-ros-base-l4t-r32.6.1
1+
FROM dustynv/ros:humble-ros-base-deepstream-l4t-r35.1.0
22

33
ENV DEBIAN_FRONTEND=noninteractive
44

5-
RUN apt update && \
6-
apt install -y libeigen3-dev python3-pip && \
7-
apt -y clean && \
8-
rm -rf /var/lib/apt/lists/*
9-
10-
RUN python3 -m pip install -U pip && \
11-
python3 -m pip install cmake
12-
135
# add PATH
146
ENV PATH=$PATH:/usr/src/tensorrt/bin
157

16-
# torch 1.9.0
17-
WORKDIR /workspace
18-
RUN apt update && \
19-
apt install -y libopenblas-base libopenmpi-dev && \
20-
apt -y clean && \
21-
rm -rf /var/lib/apt/lists/*
22-
RUN wget https://nvidia.box.com/shared/static/h1z9sw4bb1ybi0rm3tu8qdj8hs05ljbm.whl -O torch-1.9.0-cp36-cp36m-linux_aarch64.whl && \
23-
python3 -m pip install Cython && \
24-
python3 -m pip install numpy torch-1.9.0-cp36-cp36m-linux_aarch64.whl &&\
25-
rm torch-1.9.0-cp36-cp36m-linux_aarch64.whl
26-
27-
# torch2trt
28-
WORKDIR /workspace
29-
RUN git clone https://github.com/NVIDIA-AI-IOT/torch2trt && \
30-
cd torch2trt && \
31-
python3 setup.py install
32-
33-
# torchvision
34-
ENV TORCHVISION_VERSION=0.10.0
35-
WORKDIR /workspace
36-
RUN apt update && \
37-
apt install -y libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev && \
38-
apt -y clean && \
39-
rm -rf /var/lib/apt/lists/*
40-
RUN git clone --branch v${TORCHVISION_VERSION} https://github.com/pytorch/vision torchvision && \
41-
cd torchvision && \
42-
BUILD_VERSION=$TORCHVISION_VERSION && \
43-
python3 setup.py install
44-
45-
# YOLOX
46-
WORKDIR /workspace
47-
ENV YOLOX_VERSION=0.2.0
48-
# matplotlib, onnx-optimizer cannot install by pip
49-
RUN apt update && \
50-
apt install -y python3-matplotlib && \
51-
apt -y clean && \
52-
rm -rf /var/lib/apt/lists/*
53-
RUN python3 -m pip install onnx==1.8.1 onnxruntime==1.8.0
54-
RUN git clone --recursive https://github.com/onnx/optimizer onnxoptimizer && \
55-
cd onnxoptimizer && \
56-
python3 -m pip install -e .
57-
58-
# bugfix for numpy==1.19.5
59-
# set OPENBLAS_CORETYPE environment variable to ARMV8
60-
ENV OPENBLAS_CORETYPE=ARMV8
61-
62-
RUN git clone -b $YOLOX_VERSION https://github.com/Megvii-BaseDetection/YOLOX YOLOX && \
63-
cd YOLOX && \
64-
python3 -m pip install -e .
65-
8+
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 42D5A192B819C5DA && \
9+
apt-get update && \
10+
apt-get install -y \
11+
doxygen \
12+
libfmt-dev \
13+
librange-v3-dev \
14+
python3-pip \
15+
python3-jinja2 \
16+
python3-typeguard
17+
RUN mkdir -p /dependencies/src && \
18+
cd /dependencies/src && \
19+
git clone https://github.com/PickNikRobotics/RSL.git && \
20+
git clone https://github.com/PickNikRobotics/cpp_polyfills.git && \
21+
git clone https://github.com/ros-perception/vision_opencv.git -b humble && \
22+
git clone https://github.com/PickNikRobotics/generate_parameter_library.git && \
23+
cd /dependencies/ && \
24+
. /opt/ros/humble/install/setup.sh && \
25+
colcon build
26+
27+
COPY /usr/include/aarch64-linux-gnu/ /usr/include/aarch64-linux-gnu/
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
SCRIPT_DIR=$(cd $(dirname $0); pwd)
2+
cd ${SCRIPT_DIR}
3+
mkdir ./tensorrt_dir
4+
cp -r /usr/include/aarch64-linux-gnu/* ./tensorrt_dir/
5+
6+
docker build -t yolox_ros_jetson:latest -f ./dockerfile .
7+
docker run -it --rm --network host --volume $HOME/ros2_ws:/root/ros2_ws --device /dev/video0:/dev/video0 --workdir /root/ros2_ws --runtime nvidia yolox_ros_jetson /bin/bash
8+
9+
10+
# source /dependencies/install/setup.bash
11+
# colcon build --cmake-args -DJETSON=ON
12+
# bash src/YOLOX-ROS/weights/onnx/download.bash yolox_tiny
13+
# bash src/YOLOX-ROS/weights/tensorrt/convert.bash yolox_tiny

yolox_ros_cpp/docker/onnxruntime/docker-compose.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
version: '3.4'
22
services:
3-
yolox_ros:
3+
yolox_ros_onnxruntime:
44
container_name: yolox_onnxruntime
5-
# build:
6-
# context: .
7-
# args:
8-
# - BASE_TAB=11.4.2-cudnn8-devel-ubuntu20.04
5+
build:
6+
context: .
7+
args:
8+
- BASE_TAB=12.1.0-cudnn8-devel-ubuntu22.04
99
image: fateshelled/onnxruntime_yolox_ros:latest
1010
network_mode: host
1111
runtime: nvidia

yolox_ros_cpp/docker/onnxruntime/dockerfile

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ARG BASE_TAG=11.4.2-cudnn8-devel-ubuntu20.04
1+
ARG BASE_TAG=11.7.1-cudnn8-devel-ubuntu22.04
22
FROM nvcr.io/nvidia/cuda:${BASE_TAG}
33
ENV DEBIAN_FRONTEND=noninteractive
44

@@ -22,12 +22,9 @@ RUN git clone --depth 1 --recursive https://github.com/microsoft/onnxruntime -b
2222
--use_cuda \
2323
--config RelWithDebInfo \
2424
--build_shared_lib \
25-
--parallel \
26-
--build_wheel \
2725
--skip_tests && \
2826
cd build/Linux/RelWithDebInfo && \
2927
make install && \
30-
python3 -m pip install dist/*.whl && \
3128
rm -r /workdir/onnxruntime
3229

3330
# Install ROS2
@@ -39,41 +36,26 @@ RUN apt update && apt install locales && \
3936
ENV LANG=en_US.UTF-8
4037

4138
RUN apt update && \
42-
apt install -y curl gnupg2 lsb-release && \
43-
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg && \
39+
apt install -y git wget curl gnupg2 lsb-release && \
40+
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg && \
4441
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null && \
45-
sed -i -e 's/ubuntu .* main/ubuntu focal main/g' /etc/apt/sources.list.d/ros2.list && \
42+
sed -i -e 's/ubuntu .* main/ubuntu jammy main/g' /etc/apt/sources.list.d/ros2.list && \
4643
apt update && \
47-
apt install -y ros-foxy-ros-base \
48-
python3-colcon-common-extensions \
49-
ros-foxy-v4l2-camera \
50-
ros-foxy-cv-bridge \
51-
ros-foxy-rqt-graph \
52-
ros-foxy-rqt-image-view && \
53-
rm -rf /var/lib/apt/lists/* &&\
44+
apt install -y ros-dev-tools \
45+
ros-humble-cv-bridge \
46+
ros-humble-generate-parameter-library \
47+
ros-humble-parameter-traits \
48+
ros-humble-ros-base \
49+
ros-humble-rqt-image-view \
50+
ros-humble-v4l2-camera && \
5451
apt -y clean && \
52+
rm -rf /var/lib/apt/lists/* && \
5553
pip install -U pip && \
5654
pip install catkin_pkg && \
5755
pip install empy && \
5856
pip install lark && \
5957
python3 -m pip cache purge
6058

61-
WORKDIR /workdir
62-
ENV YOLOX_VERSION=0.3.0
63-
RUN git clone --depth 1 https://github.com/Megvii-BaseDetection/YOLOX -b $YOLOX_VERSION && \
64-
cd YOLOX && \
65-
# python3 -m pip install -r requirements.txt && \
66-
python3 -m pip install -U numpy \
67-
torch>=1.7 \
68-
opencv_python \
69-
loguru \
70-
tqdm \
71-
torchvision \
72-
thop \
73-
ninja \
74-
tabulate && \
75-
python3 -m pip install --no-deps . && \
76-
python3 -m pip cache purge
7759

7860
COPY ./ros_entrypoint.sh /ros_entrypoint.sh
7961
RUN echo "source /ros_entrypoint.sh" >> /root/.bashrc
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/bin/bash
2-
source /opt/ros/foxy/setup.bash
2+
source /opt/ros/humble/setup.bash
33
source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash

yolox_ros_cpp/docker/openvino/docker-compose.yaml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
version: '3.4'
22
services:
3-
yolox_ros:
3+
yolox_ros_openvino:
44
container_name: yolox_openvino
5-
# build:
6-
# context: .
7-
image: fateshelled/openvino_yolox_ros:latest
5+
build:
6+
context: .
87
network_mode: host
98
environment:
109
- DISPLAY=$DISPLAY
1110
volumes:
12-
- $HOME/ros2_ws:/root/ros2_ws
11+
- ../../../:/root/ros2_ws/src
1312
- /tmp/.X11-unix:/tmp/.X11-unix
1413
devices:
1514
- "/dev/video0:/dev/video0"

0 commit comments

Comments
 (0)