事前准备:
编译步骤:
参照PaddleDetection文档进行,
选择项目代码所在路径,并打开CMakeList.txt
:
点击:
项目
->cpp_inference_demo的CMake设置(VS需要选择安装CMAKE)
点击浏览
,分别设置编译选项指定CUDA
、OpenCV
、Paddle预测库
的路径
5.点击生成
->全部生成
问题总结:
inline std::vector get_directory_images(const std::string& path,
const std::string& exts) {
std::vector imgs;
/* for (const auto& item :
std::experimental::filesystem::directory_iterator(path)) {
auto suffix = item.path().extension().string();
if (exts.find(suffix) != std::string::npos && suffix.size() > 0) {
auto fullname = path_join(path, item.path().filename().string());
imgs.push_back(item.path().string());
}
}
sort(imgs.begin(), imgs.end());*/
return imgs;
}
解决方法:
打开CMakeLists.txt,在首行添加即可
set(CMAKE_CXX_STANDARD 17)
2.报错__cudaPopCallConfiguration,建议安装cuda后重新安装VS试试
3.报错/DWIN32 /D_WINDOWS /Wall /GR /EHsc ,这个问题我换电脑之后没有发现
4.这段YAML会直接报错,因为路径解析的原因,我直接把模型读取的相关路径写死在代码里就没事了
if (!_model_config.load_config(conf)) {
----------------------------------------------------------------------------这里是分隔符---------------------------------------------------------------------------
编译完成后就可以 尽情愉快的玩耍啦,运行程序需要读取相应YAML路径中的配置和模型路径,官方给出了fast-rcnn和加了fpn的fast-rcnn。
如果要尝试其他模型,可以在python ./tools/export_model.py这个文件把相应的文件导出
# 导出FasterRCNN模型,输入是3x640x640
python tools/export_model.py -c configs/faster_rcnn_r50_1x.yml \
--output_dir=./inference_model \
-o weights=https://paddlemodels.bj.bcebos.com/object_detection/faster_rcnn_r50_1x.tar \
TestReader.inputs_def.image_shape=[3,640,640]
# 导出YOLOv3模型,输入是3x320x320
python tools/export_model.py -c configs/yolov3_darknet.yml \
--output_dir=./inference_model \
-o weights=https://paddlemodels.bj.bcebos.com/object_detection/yolov3_darknet.tar \
TestReader.inputs_def.image_shape=[3,320,320]
# 导出SSD模型,输入是3x300x300
python tools/export_model.py -c configs/ssd/ssd_mobilenet_v1_voc.yml \
--output_dir=./inference_model \
-o weights= https://paddlemodels.bj.bcebos.com/object_detection/ssd_mobilenet_v1_voc.tar \
TestReader.inputs_def.image_shape=[3,300,300]