diff --git a/psenet/README.md b/psenet/README.md
index 194d4f0..fc74e0f 100644
--- a/psenet/README.md
+++ b/psenet/README.md
@@ -9,6 +9,7 @@ The original Tensorflow implementation is [tensorflow_PSENet](https://github.com
- Object-Oriented Programming.
- Practice with C++ 11.
+
diff --git a/repvgg/CMakeLists.txt b/repvgg/CMakeLists.txt
new file mode 100644
index 0000000..a5bd6cf
--- /dev/null
+++ b/repvgg/CMakeLists.txt
@@ -0,0 +1,26 @@
+cmake_minimum_required(VERSION 2.6)
+
+project(repvgg)
+
+add_definitions(-std=c++11)
+
+option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_BUILD_TYPE Debug)
+
+include_directories(${PROJECT_SOURCE_DIR}/include)
+# include and link dirs of cuda and tensorrt, you need adapt them if yours are different
+# cuda
+include_directories(/usr/local/cuda/include)
+link_directories(/usr/local/cuda/lib64)
+# tensorrt
+include_directories(/usr/include/x86_64-linux-gnu/)
+link_directories(/usr/lib/x86_64-linux-gnu/)
+
+add_executable(repvgg ${PROJECT_SOURCE_DIR}/repvgg.cpp)
+target_link_libraries(repvgg nvinfer)
+target_link_libraries(repvgg cudart)
+
+
+add_definitions(-O2 -pthread)
+
diff --git a/repvgg/README.md b/repvgg/README.md
new file mode 100644
index 0000000..fcb7cc1
--- /dev/null
+++ b/repvgg/README.md
@@ -0,0 +1,50 @@
+# RepVGG
+
+RepVGG models from
+"RepVGG: Making VGG-style ConvNets Great Again"
+
+For the Pytorch implementation, you can refer to [DingXiaoH/RepVGG](https://github.com/DingXiaoH/RepVGG)
+
+# How to run
+
+1. generate wts file.
+
+```
+git clone https://github.com/DingXiaoH/RepVGG.git
+cd ReoVGG
+```
+
+You may convert a trained model into the inference-time structure with
+
+```
+python convert.py [weights file of the training-time model to load] [path to save] -a [model name]
+```
+
+For example,
+
+```
+python convert.py RepVGG-B2-train.pth RepVGG-B2-deploy.pth -a RepVGG-B2
+```
+
+Then copy `gen_wts.py` to `RepVGG` and generate .wts file, for example
+
+```
+python gen_wts.py -w RepVGG-B2-deploy.pth -s RepVGG-B2.wts
+```
+
+2. build and run
+```
+cd tensorrtx/repvgg
+
+mkdir build
+
+cd build
+
+cmake ..
+
+make
+
+sudo ./repvgg -s RepVGG-B2 // serialize model to plan file i.e. 'RepVGG-B2.engine'
+sudo ./repvgg -d RepVGG-B2 // deserialize plan file and run inference
+```
+
diff --git a/repvgg/gen_wts.py b/repvgg/gen_wts.py
new file mode 100644
index 0000000..9908d00
--- /dev/null
+++ b/repvgg/gen_wts.py
@@ -0,0 +1,38 @@
+import argparse
+import struct
+
+import torch
+
+
+def main(args):
+ # Load model
+ state_dict = torch.load(args.weight)
+ with open(args.save_path, "w") as f:
+ f.write("{}\n".format(len(state_dict.keys())))
+ for k, v in state_dict.items():
+ vr = v.reshape(-1).cpu().numpy()
+ f.write("{} {} ".format(k, len(vr)))
+ for vv in vr:
+ f.write(" ")
+ f.write(struct.pack(">f", float(vv)).hex())
+ f.write("\n")
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ "-w",
+ "--weight",
+ type=str,
+ required=True,
+ help="RepVGG model weight path",
+ )
+ parser.add_argument(
+ "-s",
+ "--save_path",
+ type=str,
+ required=True,
+ help="generated wts path",
+ )
+ args = parser.parse_args()
+ main(args)
\ No newline at end of file
diff --git a/repvgg/logging.h b/repvgg/logging.h
new file mode 100644
index 0000000..29b8ef9
--- /dev/null
+++ b/repvgg/logging.h
@@ -0,0 +1,46 @@
+#ifndef TENSORRT_LOGGING_H
+#define TENSORRT_LOGGING_H
+
+#include "NvInferRuntimeCommon.h"
+#include
+#include
+
+// Logger for TensorRT info/warning/errors
+class Logger : public nvinfer1::ILogger
+{
+public:
+ Logger() : Logger(Severity::kINFO) {}
+
+ Logger(Severity severity) : reportableSeverity(severity) {}
+
+ void log(Severity severity, const char *msg) override
+ {
+ // suppress messages with severity enum value greater than the reportable
+ if (severity > reportableSeverity)
+ return;
+
+ switch (severity)
+ {
+ case Severity::kINTERNAL_ERROR:
+ std::cerr << "INTERNAL_ERROR: ";
+ break;
+ case Severity::kERROR:
+ std::cerr << "ERROR: ";
+ break;
+ case Severity::kWARNING:
+ std::cerr << "WARNING: ";
+ break;
+ case Severity::kINFO:
+ std::cerr << "INFO: ";
+ break;
+ default:
+ std::cerr << "UNKNOWN: ";
+ break;
+ }
+ std::cerr << msg << std::endl;
+ }
+
+ Severity reportableSeverity{Severity::kWARNING};
+};
+
+#endif // TENSORRT_LOGGING_H
diff --git a/repvgg/repvgg.cpp b/repvgg/repvgg.cpp
new file mode 100644
index 0000000..e4a6c04
--- /dev/null
+++ b/repvgg/repvgg.cpp
@@ -0,0 +1,354 @@
+#include "NvInfer.h"
+#include "cuda_runtime_api.h"
+#include "logging.h"
+#include
+#include
+#include