Skip to content
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
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ INCLUDE(cmake/3rdparty.cmake)

OPTION(WITH_TRACE "Build with tracing library." OFF)
OPTION(BUILD_FAKE "Build fake target without CUDA libraries." OFF)
OPTION(ENABLE_CUDA "Build with CUDA support." ON)

IF(WITH_TRACE)
MESSAGE(STATUS "[OPENPOSE-PLUS] Trace Enabled.")
Expand Down
40 changes: 23 additions & 17 deletions cmake/3rdparty.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,34 @@ INCLUDE(ExternalProject)
SET(THIRDPARTY_PREFIX ${CMAKE_SOURCE_DIR}/3rdparty)

SET(STDTRACER_GIT_URL
https://github.com/lgarithm/stdtracer.git
CACHE STRING "URL for clone stdtracer")
https://github.com/lgarithm/stdtracer.git
CACHE STRING "URL for clone stdtracer")

EXTERNALPROJECT_ADD(
stdtracer-repo
GIT_REPOSITORY ${STDTRACER_GIT_URL}
GIT_TAG c2c7e99fbbd6ead266611c2497cc1ed88c63b46c
PREFIX ${THIRDPARTY_PREFIX}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRDPARTY_PREFIX} -DBUILD_TESTS=0
-DBUILD_EXAMPLES=0 -DCMAKE_CXX_FLAGS=-fPIC)
stdtracer-repo
LOG_DOWNLOAD ON
LOG_INSTALL ON
LOG_CONFIGURE ON
GIT_REPOSITORY ${STDTRACER_GIT_URL}
GIT_TAG c2c7e99fbbd6ead266611c2497cc1ed88c63b46c
PREFIX ${THIRDPARTY_PREFIX}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRDPARTY_PREFIX} -DBUILD_TESTS=0
-DBUILD_EXAMPLES=0 -DCMAKE_CXX_FLAGS=-fPIC)

SET(STDTENSOR_GIT_URL
https://github.com/lgarithm/stdtensor.git
CACHE STRING "URL for clone stdtensor")
https://github.com/lgarithm/stdtensor.git
CACHE STRING "URL for clone stdtensor")

EXTERNALPROJECT_ADD(
stdtensor-repo
GIT_REPOSITORY ${STDTENSOR_GIT_URL}
GIT_TAG v0.6.1
PREFIX ${THIRDPARTY_PREFIX}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRDPARTY_PREFIX} -DBUILD_TESTS=0
-DBUILD_EXAMPLES=0)
stdtensor-repo
LOG_DOWNLOAD ON
LOG_INSTALL ON
LOG_CONFIGURE ON
GIT_REPOSITORY ${STDTENSOR_GIT_URL}
GIT_TAG v0.6.1
PREFIX ${THIRDPARTY_PREFIX}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRDPARTY_PREFIX} -DBUILD_TESTS=0
-DBUILD_EXAMPLES=0)

INCLUDE_DIRECTORIES(${THIRDPARTY_PREFIX}/include)

Expand All @@ -37,4 +43,4 @@ LINK_DIRECTORIES(${THIRDPARTY_PREFIX}/lib)
FUNCTION(ADD_GLOBAL_DEPS target)
ADD_DEPENDENCIES(${target} all-external-projects)
TARGET_LINK_LIBRARIES(${target} stdtracer)
ENDFUNCTION()
ENDFUNCTION()
15 changes: 15 additions & 0 deletions cmake/cuda.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
IF(IS_DIRECTORY ${CUDA_TOOLKIT_ROOT_DIR})
MESSAGE("Using CUDA_TOOLKIT_ROOT_DIR=${CUDA_TOOLKIT_ROOT_DIR}")
INCLUDE_DIRECTORIES(${CUDA_TOOLKIT_ROOT_DIR}/include)
LINK_DIRECTORIES(${CUDA_TOOLKIT_ROOT_DIR}/lib64)
ELSE()
FIND_PACKAGE(CUDA REQUIRED)
INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})
EXECUTE_PROCESS(
COMMAND arch
COMMAND tr -d '\n'
OUTPUT_VARIABLE ARCH)
SET(CUDA_RT /usr/local/cuda/targets/${ARCH}-linux)

LINK_DIRECTORIES(${CUDA_RT}/lib)
ENDIF()
11 changes: 1 addition & 10 deletions cmake/openpose-plus.cmake
Original file line number Diff line number Diff line change
@@ -1,17 +1,8 @@
INCLUDE(cmake/cuda.cmake)
FIND_PACKAGE(OpenCV)

ADD_DEFINITIONS(-Ofast -march=native)

FIND_PACKAGE(CUDA REQUIRED)
INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})
EXECUTE_PROCESS(
COMMAND arch
COMMAND tr -d '\n'
OUTPUT_VARIABLE ARCH)
SET(CUDA_RT /usr/local/cuda/targets/${ARCH}-linux)

LINK_DIRECTORIES(${CUDA_RT}/lib)

ADD_LIBRARY(openpose-plus src/cudnn.cpp src/paf.cpp src/uff_runner.cpp)
TARGET_LINK_LIBRARIES(
openpose-plus
Expand Down
33 changes: 22 additions & 11 deletions configure
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
#!/bin/bash
set -e

CMAKE_FLAGS=

add_cmake_flag() {
echo "usinig $1=$2"
CMAKE_FLAGS="$CMAKE_FLAGS -D$1=$2"
}
if [ -d /usr/local/cuda ]; then
CUDA_HOME=/usr/local/cuda
fi

parse_args() {
for i in "$@"; do
Expand All @@ -20,26 +17,40 @@ parse_args() {
--build-fake)
BUILD_FAKE=1
;;
--with-cuda=*)
CUDA_HOME="${i#*=}"
echo "configure --with-cuda=$CUDA_HOME"
;;
*)
echo "unknown argument $1"
echo "unknown argument $i"
exit
;;
esac
done
}

CMAKE_FLAGS=

add_cmake_flag() {
echo "using $1=$2"
CMAKE_FLAGS="$CMAKE_FLAGS -D$1=$2"
}

add_cmake_flags() {
if [ "${BUILD_FAKE}" == 1 ]; then
add_cmake_flag BUILD_FAKE ON
fi
if [ "${WITH_TRACE}" == 1 ]; then
add_cmake_flag WITH_TRACE ON
fi

add_cmake_flag CMAKE_EXPORT_COMPILE_COMMANDS ON
if [ ! -z "${CUDA_HOME}" ]; then
add_cmake_flag CUDA_TOOLKIT_ROOT_DIR $CUDA_HOME
add_cmake_flag CMAKE_CUDA_COMPILER $CUDA_HOME/bin/nvcc
fi
add_cmake_flag CMAKE_BUILD_TYPE Release
add_cmake_flag EXECUTABLE_OUTPUT_PATH $(pwd)/bin
add_cmake_flag LIBRARY_OUTPUT_PATH $(pwd)/lib
add_cmake_flag CMAKE_EXPORT_COMPILE_COMMANDS ON
add_cmake_flag EXECUTABLE_OUTPUT_PATH $PWD/bin
add_cmake_flag LIBRARY_OUTPUT_PATH $PWD/lib
}

parse_args $@
Expand Down
46 changes: 29 additions & 17 deletions examples/example_batch_detector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,25 +22,36 @@ DEFINE_bool(use_f16, false, "Use float16.");
DEFINE_bool(flip_rgb, true, "Flip RGB.");

// input flags
DEFINE_string(data_dir, "../../data/media", "path to data folder");
DEFINE_string(image_files,
"../../data/media/COCO_val2014_000000000192.jpg,"
"../../data/media/COCO_val2014_000000000459.jpg,"
"../../data/media/COCO_val2014_000000000415.jpg,"
"../../data/media/COCO_val2014_000000000564.jpg,"
"../../data/media/COCO_val2014_000000000294.jpg,"
"../../data/media/COCO_val2014_000000000623.jpg,"
"../../data/media/COCO_val2014_000000000357.jpg,"
"../../data/media/COCO_val2014_000000000488.jpg,"
"../../data/media/COCO_val2014_000000000589.jpg,"
"../../data/media/COCO_val2014_000000000474.jpg,"
"../../data/media/COCO_val2014_000000000338.jpg,"
"../../data/media/COCO_val2014_000000000569.jpg,"
"../../data/media/COCO_val2014_000000000544.jpg,"
"../../data/media/COCO_val2014_000000000428.jpg,"
"../../data/media/COCO_val2014_000000000536.jpg,"
"../../data/media/COCO_val2014_000000000395.jpg",
"COCO_val2014_000000000192.jpg,"
"COCO_val2014_000000000459.jpg,"
"COCO_val2014_000000000415.jpg,"
"COCO_val2014_000000000564.jpg,"
"COCO_val2014_000000000294.jpg,"
"COCO_val2014_000000000623.jpg,"
"COCO_val2014_000000000357.jpg,"
"COCO_val2014_000000000488.jpg,"
"COCO_val2014_000000000589.jpg,"
"COCO_val2014_000000000474.jpg,"
"COCO_val2014_000000000338.jpg,"
"COCO_val2014_000000000569.jpg,"
"COCO_val2014_000000000544.jpg,"
"COCO_val2014_000000000428.jpg,"
"COCO_val2014_000000000536.jpg,"
"COCO_val2014_000000000395.jpg",
"Comma separated list of paths to image.");

std::vector<std::string> get_input_files(const std::string &dir,
const std::string &names)
{
std::vector<std::string> paths;
for (const auto &name : split(names, ',')) {
paths.push_back(dir + "/" + name);
}
return paths;
}

int main(int argc, char *argv[])
{
TRACE_SCOPE(__func__);
Expand All @@ -49,7 +60,8 @@ int main(int argc, char *argv[])
// TODO: derive from model
const int f_height = FLAGS_input_height / 8;
const int f_width = FLAGS_input_width / 8;
auto files = repeat(split(FLAGS_image_files, ','), FLAGS_repeat);
const auto files = repeat(
get_input_files(FLAGS_data_dir, FLAGS_image_files), FLAGS_repeat);

std::unique_ptr<pose_detector> pd(create_pose_detector(
FLAGS_model_file, FLAGS_input_height, FLAGS_input_width, f_height,
Expand Down
3 changes: 2 additions & 1 deletion scripts/download-pretrained-inf-models.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ cd ../data/models

echo "Installing Pretrained VGG uff model file..."
if [ ! -f hao28-600000-256x384.uff ]; then
curl -LOJ https://github.com/tensorlayer/pretrained-models/trunk/models/openpose-plus/hao28-600000-256x384.uff
URL=https://media.githubusercontent.com/media/tensorlayer/pretrained-models/master/models/openpose-plus/hao28-600000-256x384.uff
curl -vLOJ $URL
fi
echo "Installation completed!"
28 changes: 16 additions & 12 deletions src/logger.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#pragma once

#include <fstream>
#include <iostream>
#include <string>
Expand All @@ -9,6 +8,14 @@
// Logger for TensorRT info/warning/errors
class Logger : public nvinfer1::ILogger
{
std::string log_file = "tensorrt.log";
std::fstream fs;

void log_with(std::ostream &os, const char *prefix, const char *msg) const
{
os << prefix << msg << std::endl;
}

public:
Logger() : Logger(Severity::kINFO) {}

Expand All @@ -21,31 +28,28 @@ class Logger : public nvinfer1::ILogger
{
// suppress messages with severity enum value greater than the
// reportable
if (severity > reportableSeverity) return;
if (severity > reportableSeverity) { return; }

switch (severity) {
case Severity::kINTERNAL_ERROR:
fs << "INTERNAL_ERROR: ";
log_with(fs, "INTERNAL_ERROR: ", msg);
log_with(std::cerr, "INTERNAL_ERROR: ", msg);
break;
case Severity::kERROR:
fs << "ERROR: ";
log_with(fs, "ERROR: ", msg);
log_with(std::cerr, "ERROR: ", msg);
break;
case Severity::kWARNING:
fs << "WARNING: ";
log_with(fs, "WARNING: ", msg);
break;
case Severity::kINFO:
fs << "INFO: ";
log_with(fs, "INFO: ", msg);
break;
default:
fs << "UNKNOWN: ";
log_with(fs, "UNKNOWN: ", msg);
break;
}
fs << msg << std::endl;
}

Severity reportableSeverity{Severity::kWARNING};

private:
std::string log_file = "tensorrt.log";
std::fstream fs;
};
3 changes: 1 addition & 2 deletions src/uff_runner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -172,8 +172,7 @@ void uff_runner_impl::createBuffers_(int batch_size)
std::cout << "binding " << i << ":"
<< " name: " << name << " type" << to_string(dtype)
<< to_string(dims) << std::endl;
buffers_.emplace_back(
cuda_buffer_t(batch_size, volume(dims) * elementSize(dtype)));
buffers_.emplace_back(batch_size, volume(dims) * elementSize(dtype));
}
}

Expand Down