https://www.bilibili.com/video/BV1Nv4y1K727/
https://github.com/Monday-Leo/Retinaface_Tensorrt
下载Retinaface仓库和本仓库,权重文件链接https://pan.baidu.com/s/12nl4d_oKrj2aLXEKYcwxiQ 提取码:l7ls
git clone https://github.com/biubug6/Pytorch_Retinaface
git clone https://github.com/Monday-Leo/Retinaface_Tensorrt
将仓库中的gen_wts.py和刚才下载好的权重文件拷贝至Pytorch_Retinaface的目录下
parser = argparse.ArgumentParser(description='Retinaface')
parser.add_argument('-m', '--trained_model', default='./weights/mobilenet0.25_Final.pth',type=str)
parser.add_argument('--network', default='mobile0.25', help='mobile0.25 or resnet50')
args = parser.parse_args()
修改default参数,指定权重路径和模型类型,mobile0.25或resnet50
python gen_wts.py
生成mobile0_25.wts或resnet50.wts模型
Opencv、Tensorrt如果已经安装完成,可以跳过下述步骤。
1、在OpenCV官网下载适用于Windows平台的3.4.6版本 下载地址
2、运行下载的可执行文件,将OpenCV解压至指定目录,例如 D:\projects\opencv
3、我的电脑->属性->高级系统设置->环境变量,在系统变量中找到Path(如没有,自行创建),并双击编辑,将opencv路径填入并保存,如D:\projects\opencv\build\x64\vc15\bin
1、在tensorrt官网下载适用于Windows平台的版本 下载地址
2、将TensorRT/lib下所有lib复制到cuda/v10.2/lib/x64下,将TensorRT/lib下所有dll复制到cuda/v10.2/bin下,将TensorRT/include下所有.h文件复制到cuda/v10.2/include下
3、我的电脑->属性->高级系统设置->环境变量,在系统变量中找到Path(如没有,自行创建),并双击编辑,将TensorRT/lib路径填入并保存,如G:\c++\TensorRT-8.2.1.8\lib
打开本仓库的CMakeLists.txt,修改Opencv、Tensorrt的目录
set(OpenCV_DIR "G:\\c++\\paddle_test\\opencv\\build")
set(TRT_DIR "G:\\c++\\TensorRT-8.2.1.8")
在本仓库目录下新建一个build文件夹,打开Cmake,选择本仓库目录,以及新建的build目录,再点击左下方configure按钮。
选择自己的Visual Studio版本,如2017,第二个框中选择x64,之后点击finish
会自动加载CMakeLists.txt,添加库,正常运行如下
若出现红色警告,则需要修改框中信息。例如,未找到cuda目录,则需要点击上图红色框,添加上自己的cuda路径,再点击configure。一切正常之后点击generate,最后点击open project。
可以在decode.h中修改输入图片的尺寸,尺寸越大识别越准,速度越慢,一般保持默认即可。
static const int INPUT_H = 480;
static const int INPUT_W = 640;
将界面上方Debug改为Release,右键retina_mnet或retina_r50项目,点击重新生成。编译成功后打开build/Release,可以看到生成的exe可执行文件。
将第一步生成的wts模型复制到exe的文件夹中,在这个目录下打开cmd输入
retina_mnet -s
正常运行,此时程序在将wts转换为engine序列化模型,需要等待预计10-20分钟左右。生成完毕后,将仓库内的pictures/test.jpg复制到文件夹,测试运行
retina_mnet -d
右键工程项目,属性,修改配置类型为DLL,然后点击生成,在Release下会生成retina_mnet.dll,将仓库内的python_trt.py复制到dll文件夹下。
设置模型路径,dll路径和想要预测的图片路径,特别注意模型路径需要加b’'!!
det = Detector(model_path=b"./retina_mnet.engine",dll_path="./retina_mnet.dll") # b'' is needed
img = cv2.imread("test.jpg")
直接运行python_trt.py即可,python预测的最大优势在于支持了numpy格式的图片,极易融合进项目中。
https://github.com/wang-xinyu/tensorrtx