diff --git a/csrnet/CMakeLists.txt b/csrnet/CMakeLists.txt
new file mode 100644
index 0000000..55bb75b
--- /dev/null
+++ b/csrnet/CMakeLists.txt
@@ -0,0 +1,26 @@
+cmake_minimum_required(VERSION 3.10)
+
+project(csrnet)
+
+add_definitions(-std=c++11)
+add_definitions(-DAPI_EXPORTS)
+option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_BUILD_TYPE Debug)
+
+# cuda
+include_directories(/usr/local/cuda/targets/x86_64-linux/include )
+link_directories(/usr/local/cuda/targets/x86_64-linux/lib)
+
+# tensorrt
+include_directories(/usr/include/x86_64-linux-gnu/)
+link_directories(/usr/lib/x86_64-linux-gnu/)
+
+# opencv
+find_package(OpenCV)
+include_directories(${OpenCV_INCLUDE_DIRS})
+
+include_directories(${PROJECT_SOURCE_DIR}/)
+
+add_executable(csrnet csrnet.cpp)
+target_link_libraries(csrnet nvinfer cudart ${OpenCV_LIBS})
\ No newline at end of file
diff --git a/csrnet/README.md b/csrnet/README.md
new file mode 100644
index 0000000..54cfc4a
--- /dev/null
+++ b/csrnet/README.md
@@ -0,0 +1,58 @@
+# csrnet
+
+The Pytorch implementation is [leeyeehoo/CSRNet-pytorch](https://github.com/leeyeehoo/CSRNet-pytorch).
+
+This repo is a TensorRT implementation of CSRNet.
+
+paper : [CSRNet: Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes](https://arxiv.org/abs/1802.10062)
+
+Dev environment:
+- Ubuntu 22.04
+- TensorRT 8.6
+- OpenCV 4.5.4
+- CMake 3.24
+- GPU Driver 535.113.01
+- CUDA 12.2
+- RTX3080
+
+
+# how to run
+
+```bash
+1. generate csrnet engine
+git clone https://github.com/leeyeehoo/CSRNet-pytorch.git
+git clone https://github.com/wang-xinyu/tensorrtx.git
+// copy gen_wts.py to CSRNet-pytorch
+// generate wts file
+python gen_wts.py
+// csrnet wts will be generated in CSRNet-pytorch
+
+2. build csrnet.engine
+// mv CSRNet-pytorch/csrnet.engine to tensorrtx/csrnet
+mv CSRNet-pytorch/csrnet.wts tensorrtx/csrnet
+// build
+mkdir build
+cmake ..
+make
+sudo ./csrnet -s ./csrnet.wts
+
+Loading weights: ./csrnet.wts
+build engine successfully : ./csrnet.engine
+
+// download images https://github.com/wang-xinyu/tensorrtx/assets/46584679/46bc4def-e573-44ae-996d-5d68927c78ff and copy to images
+sudo ./csrnet -d ./images
+
+// output e.g
+// enqueueV2 time: 0.0323869s
+// detect time:44ms
+// people num :22.9101 write_path: ../images/data.jpg
+```
+
+
+# result
+
+inference people num: 22.9101
+
+
+
+
diff --git a/csrnet/config.h b/csrnet/config.h
new file mode 100644
index 0000000..1bf0a17
--- /dev/null
+++ b/csrnet/config.h
@@ -0,0 +1,16 @@
+#pragma once
+
+const static char *kInputTensorName = "data";
+const static char *kOutputTensorName = "prob";
+const static char *kEngineFile = "./csrnet.engine";
+
+const static int kBatchSize = 1;
+
+const static int MAX_INPUT_SIZE = 1440; // 32x
+const static int MIN_INPUT_SIZE = 608;
+const static int OPT_INPUT_W = 1152;
+const static int OPT_INPUT_H = 640;
+
+constexpr static int kMaxInputImageSize = MAX_INPUT_SIZE * MAX_INPUT_SIZE * 3;
+constexpr static int kMaxOutputProbSize =
+ (MAX_INPUT_SIZE * MAX_INPUT_SIZE) >> 6;
\ No newline at end of file
diff --git a/csrnet/csrnet.cpp b/csrnet/csrnet.cpp
new file mode 100644
index 0000000..7ef08bd
--- /dev/null
+++ b/csrnet/csrnet.cpp
@@ -0,0 +1,536 @@
+#include "NvInfer.h"
+#include "cuda_runtime_api.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include