Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: support ipm #3

Merged
merged 3 commits into from
Aug 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 40 additions & 11 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,29 +1,58 @@
cmake_minimum_required(VERSION 3.1)
project(lightNet-TRT VERSION 1.0)
enable_language(CUDA)
# cmake_minimum_required(VERSION 3.1)
cmake_minimum_required(VERSION 3.14)
project(lightnet_trt VERSION 1.0)

enable_language(CUDA) # not supported on CMAKE 3.14

find_package(OpenMP REQUIRED)
set(CMAKE_CXX_COMPILIER "/usr/bin/g++")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -O3 -Wno-write-strings ${OpenMP_CXX_FLAGS} -fopenmp")
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-relaxed-constexpr") # Added for CMAKE 3.14
set(CMAKE_CXX_COMPILER "/usr/bin/g++")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -O3 -Wno-unused-function -Wno-maybe-uninitialized -Wno-narrowing -Wno-misleading-indentation -Wno-unused-but-set-variable -Wno-unused-variable -Wno-return-type -Wno-deprecated-declarations -Wno-write-strings -Wno-reorder -Wno-sign-compare -Wno-unused-parameter -Wno-unused-value -Wno-uninitialized ${OpenMP_CXX_FLAGS} -fopenmp")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -O0 -g -Wno-write-strings")
#set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb -g")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,$ORIGIN")



include_directories(/usr/local/cuda/include)
find_package(CUDA REQUIRED)

find_package(OpenCV REQUIRED)

file(GLOB_RECURSE sources modules/*.hpp modules/*.cpp modules/*.h modules/*.cu extra/*.h module/preprocess.cu)
add_library(detector SHARED ${sources})

target_include_directories(detector PRIVATE extra/ modules/ ${OpenCV_INCLUDE_DIRS} ${CUDA_TOOLKIT_ROOT_DIR}/include)
target_link_libraries(detector nvinfer nvinfer_plugin nvparsers gflags "stdc++fs")
target_link_libraries(detector ${CUDA_LIBRARIES} nvinfer nvinfer_plugin nvparsers gflags "stdc++fs")

add_executable(lightnet_trt samples/sample_detector.cpp ${sources})

target_include_directories(lightnet_trt PRIVATE modules/ extra/)
target_link_libraries(lightnet_trt ${CUDA_LIBRARIES} ${OpenCV_LIBS} nvinfer nvinfer_plugin nvparsers gflags boost_system boost_filesystem "stdc++fs" "stdc++")


# ROS 2 package
if(BUILD_ROS2_LIGHTNET_TRT)
find_package(autoware_cmake REQUIRED)
autoware_package()

find_package(Eigen3 REQUIRED)

add_executable(lightNet-TRT samples/sample_detector.cpp ${sources})
# build nodelet
# TODO

# build node
ament_auto_add_executable(lightnet_trt_node
src/main.cpp
src/lightnet_trt_node.cpp
src/lightnet_trt_core.cpp
src/utils.cpp
)
ament_target_dependencies(lightnet_trt_node)
target_include_directories(lightnet_trt_node PRIVATE modules/ extra/)
target_link_libraries(lightnet_trt_node detector)
target_link_libraries(lightnet_trt_node ${CUDA_LIBRARIES} ${OpenCV_LIBS} Eigen3::Eigen nvinfer nvinfer_plugin nvparsers gflags boost_system boost_filesystem "stdc++fs" "stdc++")

target_include_directories(lightNet-TRT PRIVATE modules/ extra/)
target_link_libraries(lightNet-TRT ${OpenCV_LIBS} nvinfer nvinfer_plugin nvparsers gflags boost_system boost_filesystem "stdc++fs" "stdc++")
ament_auto_package(INSTALL_TO_SHARE
launch
configs
)
endif()
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,24 @@ Inference from images
$ ./lightNet-TRT --flagfile ../configs/lightNet-BDD100K-det-semaseg-1280x960.txt --precision [kFLOAT/kHALF/kINT8] {--dla [0/1]} --d VIDEO
```

### Inference with ROS 2 node

You can build as follows. Note that current implementation requires Autoware installed and sourced.

```bash
mkdir lightnet_trt_ws/src -p
cd lightnet_trt_ws/src
git clone https://github.com/kminoda/lightNet-TRT-ROS2.git
cd ..
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release -DBUILD_ROS2_LIGHTNET_TRT=ON
```

Then, you can run the node as follows.

```bash
ros2 launch lightnet_trt lightnet_trt.launch.xml
```

## Implementation

LightNet-TRT is built on the LightNet framework and integrates with TensorRT using the Network Definition API. The implementation is based on the following repositories:
Expand Down
Loading