Files
isaac/cv/fast-foundationstereo/cpp/CMakeLists.txt
T
dasha_f 6e1a22ba8b Добавлены пропсы конвейера и стереодвижки, задействованные в прогоне
assets/conveyors (274 МБ) - ленты и угловая секция NVIDIA, на которые ссылается сцена
относительным путём. Раньше исключались как перекачиваемые, но без них сцена не
композится из коробки.

cv/ - код стереодвижков, которые вызывает control_test, без весов:
* defom-stereo - рабочий бейзлайн (DEFOM vitl, вход 480, iters 24)
* crestereo - второй движок, точнее по габаритам (MAE 23.5 против 32.8 мм)
* fast-foundationstereo - проверялся, в бейзлайн не вошёл
* circular_section.py - показатель кругового сечения, перенесён в measure_plane.py:
  выравнивает облако по СОБСТВЕННЫМ главным осям и режет на пяти высотах вдоль каждой.
  Три самодельные версии (мировые оси, одно сечение) давали хуже; результаты проверки
  на эталонной геометрии - в circular_section_results.json

Веса по-прежнему не в репозитории - источники в MODELS.md. Наборы кадров прежних
прогонов (cv/flow_*, 1.26 ГБ) исключены: это выход, а не исходники.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 13:12:07 +00:00

157 lines
4.0 KiB
CMake

cmake_minimum_required(VERSION 3.18)
project(fast_foundation_stereo_cpp LANGUAGES CXX CUDA)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CUDA_STANDARD 17)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING
"Build type: Debug, Release, RelWithDebInfo" FORCE)
endif()
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
set(CMAKE_CUDA_ARCHITECTURES "80;86;89;90")
endif()
add_compile_options(
$<$<COMPILE_LANGUAGE:CUDA>:--expt-relaxed-constexpr>
$<$<COMPILE_LANGUAGE:CUDA>:--diag-suppress=20015>
$<$<COMPILE_LANGUAGE:CUDA>:--diag-suppress=20013>
$<$<COMPILE_LANGUAGE:CUDA>:--diag-suppress=20011>
$<$<COMPILE_LANGUAGE:CUDA>:--diag-suppress=20091>
)
find_package(CUDAToolkit REQUIRED)
# ---- TensorRT ----
set(TENSORRT_ROOT "/usr" CACHE PATH "TensorRT installation path")
set(TENSORRT_HINT_DIRS
${TENSORRT_ROOT}
$ENV{CONDA_PREFIX}
/usr
/usr/local
/usr/local/tensorrt
${CUDAToolkit_TARGET_DIR}
/usr/local/cuda
/usr/local/cuda/targets/x86_64-linux
/usr/local/cuda-13.0
/usr/local/cuda-13.0/targets/x86_64-linux
/usr/src/tensorrt
)
if(DEFINED ENV{CONDA_PREFIX})
file(GLOB TENSORRT_PY_LIB_DIRS
"$ENV{CONDA_PREFIX}/lib/python*/site-packages/tensorrt_libs"
)
file(GLOB TENSORRT_PY_INCLUDE_DIRS
"$ENV{CONDA_PREFIX}/lib/python*/site-packages/tensorrt/include"
)
endif()
find_library(NVINFER_LIB
NAMES nvinfer nvinfer.so.10
HINTS
${TENSORRT_HINT_DIRS}
${TENSORRT_PY_LIB_DIRS}
PATH_SUFFIXES
lib
lib64
lib/x86_64-linux-gnu
)
if(NOT NVINFER_LIB)
message(FATAL_ERROR "TensorRT nvinfer library not found. Set -DTENSORRT_ROOT=/path/to/tensorrt")
endif()
message(STATUS "TensorRT nvinfer: ${NVINFER_LIB}")
find_library(NVONNXPARSER_LIB
NAMES nvonnxparser nvonnxparser.so.10
HINTS
${TENSORRT_HINT_DIRS}
${TENSORRT_PY_LIB_DIRS}
PATH_SUFFIXES
lib
lib64
lib/x86_64-linux-gnu
)
if(NOT NVONNXPARSER_LIB)
message(FATAL_ERROR "TensorRT nvonnxparser library not found. Set -DTENSORRT_ROOT=/path/to/tensorrt")
endif()
message(STATUS "TensorRT nvonnxparser: ${NVONNXPARSER_LIB}")
find_path(NVINFER_INCLUDE_DIR NvInfer.h
HINTS
${TENSORRT_HINT_DIRS}
${TENSORRT_PY_INCLUDE_DIRS}
PATH_SUFFIXES
include
include/x86_64-linux-gnu
)
if(NOT NVINFER_INCLUDE_DIR)
message(FATAL_ERROR "TensorRT headers (NvInfer.h) not found. Set -DTENSORRT_ROOT=/path/to/tensorrt")
endif()
find_package(OpenCV QUIET COMPONENTS core imgcodecs imgproc)
add_library(ffs_gwc_plugin SHARED
src/gwc_volume_plugin.cpp
src/depth_kernels.cu
)
set_target_properties(ffs_gwc_plugin PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
CUDA_RESOLVE_DEVICE_SYMBOLS ON
OUTPUT_NAME "ffs_gwc_plugin"
)
target_include_directories(ffs_gwc_plugin PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
${NVINFER_INCLUDE_DIR}
)
target_link_libraries(ffs_gwc_plugin PUBLIC
${NVINFER_LIB}
CUDA::cudart
)
add_library(ffs_depth_inference STATIC
src/ffs_depth_tensorrt.cpp
src/ffs_depth_single_tensorrt.cpp
src/gwc_volume_plugin.cpp
src/depth_kernels.cu
)
set_target_properties(ffs_depth_inference PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
CUDA_RESOLVE_DEVICE_SYMBOLS ON
)
target_include_directories(ffs_depth_inference PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
${NVINFER_INCLUDE_DIR}
)
target_link_libraries(ffs_depth_inference PUBLIC
${NVINFER_LIB}
CUDA::cudart
)
if(OpenCV_FOUND)
add_executable(ffs_depth_main app/main.cpp)
target_link_libraries(ffs_depth_main PRIVATE
ffs_depth_inference
${OpenCV_LIBS}
)
else()
message(WARNING "OpenCV C++ development package not found; skipping ffs_depth_main and ffs_profile_speed")
endif()
add_executable(ffs_build_single_engine app/build_single_engine.cpp)
target_link_libraries(ffs_build_single_engine PRIVATE
ffs_depth_inference
${NVONNXPARSER_LIB}
)
if(OpenCV_FOUND)
add_executable(ffs_profile_speed app/profile_speed.cpp)
target_link_libraries(ffs_profile_speed PRIVATE
ffs_depth_inference
${OpenCV_LIBS}
)
endif()