mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-31 03:46:40 +08:00
[Benchmark] add PaddleDetection to benchmark (#1675)
* 添加paddleclas模型 * 更新README_CN * 更新README_CN * 更新README * update get_model.sh * update get_models.sh * update paddleseg models * update paddle_seg models * update paddle_seg models * modified test resources * update benchmark_gpu_trt.sh * add paddle detection * add paddledetection to benchmark * modified benchmark cmakelists * update benchmark scripts * modified benchmark function calling --------- Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com>
This commit is contained in:
@@ -22,7 +22,18 @@ add_executable(benchmark_ppmatting ${PROJECT_SOURCE_DIR}/benchmark_ppmatting.cc)
|
|||||||
add_executable(benchmark_ppocr_det ${PROJECT_SOURCE_DIR}/benchmark_ppocr_det.cc)
|
add_executable(benchmark_ppocr_det ${PROJECT_SOURCE_DIR}/benchmark_ppocr_det.cc)
|
||||||
add_executable(benchmark_ppocr_cls ${PROJECT_SOURCE_DIR}/benchmark_ppocr_cls.cc)
|
add_executable(benchmark_ppocr_cls ${PROJECT_SOURCE_DIR}/benchmark_ppocr_cls.cc)
|
||||||
add_executable(benchmark_ppocr_rec ${PROJECT_SOURCE_DIR}/benchmark_ppocr_rec.cc)
|
add_executable(benchmark_ppocr_rec ${PROJECT_SOURCE_DIR}/benchmark_ppocr_rec.cc)
|
||||||
|
add_executable(benchmark_ppyolo ${PROJECT_SOURCE_DIR}/benchmark_ppyolo.cc)
|
||||||
|
add_executable(benchmark_yolov3 ${PROJECT_SOURCE_DIR}/benchmark_yolov3.cc)
|
||||||
|
add_executable(benchmark_fasterrcnn ${PROJECT_SOURCE_DIR}/benchmark_fasterrcnn.cc)
|
||||||
|
add_executable(benchmark_maskrcnn ${PROJECT_SOURCE_DIR}/benchmark_maskrcnn.cc)
|
||||||
|
add_executable(benchmark_ssd ${PROJECT_SOURCE_DIR}/benchmark_ssd.cc)
|
||||||
|
add_executable(benchmark_rtmdet ${PROJECT_SOURCE_DIR}/benchmark_rtmdet.cc)
|
||||||
|
add_executable(benchmark_cascadercnn ${PROJECT_SOURCE_DIR}/benchmark_cascadercnn.cc)
|
||||||
|
add_executable(benchmark_fcos ${PROJECT_SOURCE_DIR}/benchmark_fcos.cc)
|
||||||
|
add_executable(benchmark_gfl ${PROJECT_SOURCE_DIR}/benchmark_gfl.cc)
|
||||||
|
add_executable(benchmark_retinanet ${PROJECT_SOURCE_DIR}/benchmark_retinanet.cc)
|
||||||
|
add_executable(benchmark_tood ${PROJECT_SOURCE_DIR}/benchmark_tood.cc)
|
||||||
|
add_executable(benchmark_ttfnet ${PROJECT_SOURCE_DIR}/benchmark_ttfnet.cc)
|
||||||
add_executable(benchmark ${PROJECT_SOURCE_DIR}/benchmark.cc)
|
add_executable(benchmark ${PROJECT_SOURCE_DIR}/benchmark.cc)
|
||||||
|
|
||||||
if(UNIX AND (NOT APPLE) AND (NOT ANDROID))
|
if(UNIX AND (NOT APPLE) AND (NOT ANDROID))
|
||||||
@@ -40,6 +51,18 @@ if(UNIX AND (NOT APPLE) AND (NOT ANDROID))
|
|||||||
target_link_libraries(benchmark_ppocr_det ${FASTDEPLOY_LIBS} gflags pthread)
|
target_link_libraries(benchmark_ppocr_det ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
target_link_libraries(benchmark_ppocr_cls ${FASTDEPLOY_LIBS} gflags pthread)
|
target_link_libraries(benchmark_ppocr_cls ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
target_link_libraries(benchmark_ppocr_rec ${FASTDEPLOY_LIBS} gflags pthread)
|
target_link_libraries(benchmark_ppocr_rec ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_ppyolo ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_yolov3 ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_fasterrcnn ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_maskrcnn ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_ssd ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_rtmdet ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_cascadercnn ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_fcos ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_gfl ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_retinanet ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_tood ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
|
target_link_libraries(benchmark_ttfnet ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
target_link_libraries(benchmark ${FASTDEPLOY_LIBS} gflags pthread)
|
target_link_libraries(benchmark ${FASTDEPLOY_LIBS} gflags pthread)
|
||||||
else()
|
else()
|
||||||
target_link_libraries(benchmark_yolov5 ${FASTDEPLOY_LIBS} gflags)
|
target_link_libraries(benchmark_yolov5 ${FASTDEPLOY_LIBS} gflags)
|
||||||
@@ -56,6 +79,18 @@ else()
|
|||||||
target_link_libraries(benchmark_ppocr_det ${FASTDEPLOY_LIBS} gflags)
|
target_link_libraries(benchmark_ppocr_det ${FASTDEPLOY_LIBS} gflags)
|
||||||
target_link_libraries(benchmark_ppocr_cls ${FASTDEPLOY_LIBS} gflags)
|
target_link_libraries(benchmark_ppocr_cls ${FASTDEPLOY_LIBS} gflags)
|
||||||
target_link_libraries(benchmark_ppocr_rec ${FASTDEPLOY_LIBS} gflags)
|
target_link_libraries(benchmark_ppocr_rec ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_ppyolo ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_yolov3 ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_fasterrcnn ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_maskrcnn ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_ssd ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_rtmdet ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_cascadercnn ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_fcos ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_gfl ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_retinanet ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_tood ${FASTDEPLOY_LIBS} gflags)
|
||||||
|
target_link_libraries(benchmark_ttfnet ${FASTDEPLOY_LIBS} gflags)
|
||||||
target_link_libraries(benchmark ${FASTDEPLOY_LIBS} gflags)
|
target_link_libraries(benchmark ${FASTDEPLOY_LIBS} gflags)
|
||||||
endif()
|
endif()
|
||||||
# only for Android ADB test
|
# only for Android ADB test
|
||||||
|
|||||||
@@ -68,6 +68,44 @@ sleep_seconds() {
|
|||||||
./benchmark_picodet --model picodet_l_640_coco_lcnet --image 000000014439.jpg --config_path $CONFIG_PATH && sleep_seconds
|
./benchmark_picodet --model picodet_l_640_coco_lcnet --image 000000014439.jpg --config_path $CONFIG_PATH && sleep_seconds
|
||||||
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH && sleep_seconds 60
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH && sleep_seconds 60
|
||||||
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH && sleep_seconds 60
|
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH && sleep_seconds 60
|
||||||
|
./benchmark_ppyolov5 --model yolov5_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov6 --model yolov6_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov8 --model yolov8_s_500e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolox --model yolox_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_plus_crn_m_80e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_picodet --model picodet_l_640_coco_lcnet_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolo --model ppyolo_r50vd_dcn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_yolov3 --model yolov3_darknet53_270e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolo --model ppyolov2_r101vd_dcn_365e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_picodet --model picodet_l_320_coco_lcnet --image 000000014439.jpg $CONFIG_PATH
|
||||||
|
./benchmark_fasterrcnn --model faster_rcnn_r50_vd_fpn_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_maskrcnn --model mask_rcnn_r50_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_rtmdet --model rtmdet_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_rtmdet --model rtmdet_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_cascadercnn --model cascade_rcnn_r50_fpn_1x_coco --image 000000014439.jpg $CONFIG_PATH
|
||||||
|
./benchmark_cascadercnn --model cascade_rcnn_r50_vd_fpn_ssld_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_fcos --model fcos_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_gfl --model gfl_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_retinanet --model retinanet_r101_fpn_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_retinanet --model retinanet_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_tood --model tood_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ttfnet --model ttfnet_darknet53_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov5 --model yolov5_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov6 --model yolov6_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov6 --model yolov6_s_400e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov7 --model yolov7_x_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_fasterrcnn --model faster_rcnn_enhance_3x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_crn_l_80e_sliced_visdrone_640_025 --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssd_mobilenet_v1_300_120e_voc --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssd_vgg16_300_240e_voc --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssdlite_mobilenet_v1_300_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_x_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_l_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_m_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_n_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
|
||||||
# PaddleSeg
|
# PaddleSeg
|
||||||
./benchmark_ppseg --model Portrait_PP_HumanSegV2_Lite_256x144_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH && sleep_seconds
|
./benchmark_ppseg --model Portrait_PP_HumanSegV2_Lite_256x144_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH && sleep_seconds
|
||||||
|
|||||||
89
benchmark/cpp/benchmark_cascadercnn.cc
Executable file
89
benchmark/cpp/benchmark_cascadercnn.cc
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + "model.pdmodel";
|
||||||
|
auto params_file = FLAGS_model + sep + "model.pdiparams";
|
||||||
|
auto config_file = FLAGS_model + sep + "infer_cfg.yml";
|
||||||
|
if (config_info["backend"] == "paddle_trt") {
|
||||||
|
option.paddle_infer_option.collect_trt_shape = true;
|
||||||
|
}
|
||||||
|
if (config_info["backend"] == "paddle_trt" ||
|
||||||
|
config_info["backend"] == "trt") {
|
||||||
|
option.trt_option.SetShape("image", {1, 3, 640, 640}, {1, 3, 640, 640},
|
||||||
|
{1, 3, 640, 640});
|
||||||
|
option.trt_option.SetShape("scale_factor", {1, 2}, {1, 2},
|
||||||
|
{1, 2});
|
||||||
|
}
|
||||||
|
auto model_cascade_rcnn = vision::detection::CascadeRCNN(model_file, params_file,
|
||||||
|
config_file, option,model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_cascade_rcnn.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "cascade_rcnn_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_cascade_rcnn.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_cascade_rcnn, model_cascade_rcnn.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
89
benchmark/cpp/benchmark_fasterrcnn.cc
Executable file
89
benchmark/cpp/benchmark_fasterrcnn.cc
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + model_name;
|
||||||
|
auto params_file = FLAGS_model + sep + params_name;
|
||||||
|
auto config_file = FLAGS_model + sep + config_name;
|
||||||
|
if (config_info["backend"] == "paddle_trt") {
|
||||||
|
option.paddle_infer_option.collect_trt_shape = true;
|
||||||
|
}
|
||||||
|
if (config_info["backend"] == "paddle_trt" ||
|
||||||
|
config_info["backend"] == "trt") {
|
||||||
|
option.trt_option.SetShape("image", {1, 3, 640, 640}, {1, 3, 640, 640},
|
||||||
|
{1, 3, 640, 640});
|
||||||
|
option.trt_option.SetShape("scale_factor", {1, 2}, {1, 2},
|
||||||
|
{1, 2});
|
||||||
|
}
|
||||||
|
auto model_fasterrcnn = vision::detection::FasterRCNN(
|
||||||
|
model_file, params_file, config_file, option, model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_fasterrcnn.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "fasterrcnn_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_fasterrcnn.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_fasterrcnn, model_fasterrcnn.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
89
benchmark/cpp/benchmark_fcos.cc
Executable file
89
benchmark/cpp/benchmark_fcos.cc
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + model_name;
|
||||||
|
auto params_file = FLAGS_model + sep + params_name;
|
||||||
|
auto config_file = FLAGS_model + sep + config_name;
|
||||||
|
if (config_info["backend"] == "paddle_trt") {
|
||||||
|
option.paddle_infer_option.collect_trt_shape = true;
|
||||||
|
}
|
||||||
|
if (config_info["backend"] == "paddle_trt" ||
|
||||||
|
config_info["backend"] == "trt") {
|
||||||
|
option.trt_option.SetShape("image", {1, 3, 640, 640}, {1, 3, 640, 640},
|
||||||
|
{1, 3, 640, 640});
|
||||||
|
option.trt_option.SetShape("scale_factor", {1, 2}, {1, 2},
|
||||||
|
{1, 2});
|
||||||
|
}
|
||||||
|
auto model_fcos = vision::detection::FCOS(
|
||||||
|
model_file, params_file, config_file, option, model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_fcos.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "fcos_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_fcos.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_fcos, model_fcos.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
89
benchmark/cpp/benchmark_gfl.cc
Executable file
89
benchmark/cpp/benchmark_gfl.cc
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + model_name;
|
||||||
|
auto params_file = FLAGS_model + sep + params_name;
|
||||||
|
auto config_file = FLAGS_model + sep + config_name;
|
||||||
|
if (config_info["backend"] == "paddle_trt") {
|
||||||
|
option.paddle_infer_option.collect_trt_shape = true;
|
||||||
|
}
|
||||||
|
if (config_info["backend"] == "paddle_trt" ||
|
||||||
|
config_info["backend"] == "trt") {
|
||||||
|
option.trt_option.SetShape("image", {1, 3, 640, 640}, {1, 3, 640, 640},
|
||||||
|
{1, 3, 640, 640});
|
||||||
|
option.trt_option.SetShape("scale_factor", {1, 2}, {1, 2},
|
||||||
|
{1, 2});
|
||||||
|
}
|
||||||
|
auto model_gfl = vision::detection::GFL(
|
||||||
|
model_file, params_file, config_file, option, model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_gfl.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "gfl_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_gfl.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_gfl, model_gfl.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -46,25 +46,58 @@ fi
|
|||||||
./benchmark_ppocr_rec --model ch_PP-OCRv2_rec_infer --image rec_img.jpg --rec_label_file ppocr_keys_v1.txt --config_path $CONFIG_PATH
|
./benchmark_ppocr_rec --model ch_PP-OCRv2_rec_infer --image rec_img.jpg --rec_label_file ppocr_keys_v1.txt --config_path $CONFIG_PATH
|
||||||
|
|
||||||
# PaddleDetection
|
# PaddleDetection
|
||||||
|
./benchmark_ppyolov5 --model yolov5_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov6 --model yolov6_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov8 --model yolov8_s_500e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolox --model yolox_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_plus_crn_m_80e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_picodet --model picodet_l_640_coco_lcnet_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolo --model ppyolo_r50vd_dcn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_yolov3 --model yolov3_darknet53_270e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolo --model ppyolov2_r101vd_dcn_365e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_picodet --model picodet_l_320_coco_lcnet --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_fasterrcnn --model faster_rcnn_r50_vd_fpn_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_maskrcnn --model mask_rcnn_r50_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_rtmdet --model rtmdet_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_rtmdet --model rtmdet_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_cascadercnn --model cascade_rcnn_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_cascadercnn --model cascade_rcnn_r50_vd_fpn_ssld_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_fcos --model fcos_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_gfl --model gfl_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_retinanet --model retinanet_r101_fpn_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_retinanet --model retinanet_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_tood --model tood_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ttfnet --model ttfnet_darknet53_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov5 --model yolov5_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolov5 --model yolov5_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov5 --model yolov5_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolov6 --model yolov6_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov6 --model yolov6_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolov8 --model yolov8_s_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov6 --model yolov6_s_400e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolox --model yolox_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
|
||||||
./benchmark_ppyoloe --model ppyoloe_plus_crn_m_80e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
|
||||||
./benchmark_picodet --model picodet_l_640_coco_lcnet --image 000000014439.jpg --config_path $CONFIG_PATH
|
|
||||||
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov7 --model yolov7_x_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_fasterrcnn --model faster_rcnn_enhance_3x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_crn_l_80e_sliced_visdrone_640_025 --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssd_mobilenet_v1_300_120e_voc --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssd_vgg16_300_240e_voc --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssdlite_mobilenet_v1_300_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_x_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_l_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_m_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_s_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_n_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
|
||||||
# PaddleSeg
|
# PaddleSeg
|
||||||
./benchmark_ppseg --model Portrait_PP_HumanSegV2_Lite_256x144_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
./benchmark_ppseg --model Portrait_PP_HumanSegV2_Lite_256x144_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model PP_HumanSegV2_Lite_192x192_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
./benchmark_ppseg --model PP_HumanSegV2_Lite_192x192_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model PP_HumanSegV1_Lite_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
./benchmark_ppseg --model PP_HumanSegV1_Lite_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
./benchmark_ppseg --model PP_HumanSegV2_Mobile_192x192_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model FCN_HRNet_W18_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
|
||||||
./benchmark_ppseg --model SegFormer_B0-cityscapes-with-argmax --image cityscapes_demo.png --config_path $CONFIG_PATH
|
|
||||||
./benchmark_ppseg --model Deeplabv3_ResNet101_OS8_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
./benchmark_ppseg --model Deeplabv3_ResNet101_OS8_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model Unet_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
./benchmark_ppseg --model PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model PP_HumanSegV1_Server_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
./benchmark_ppseg --model SegFormer_B0-cityscapes-with-argmax --image cityscapes_demo.png --config_path $CONFIG_PATH
|
||||||
./benchmark_ppmatting --model PP-Matting-512 --image matting_input.jpg --config_path $CONFIG_PATH
|
./benchmark_ppmatting --model PP-Matting-512 --image matting_input.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppmatting --model PPHumanMatting --image matting_input.jpg --config_path $CONFIG_PATH
|
./benchmark_ppmatting --model PPHumanMatting --image matting_input.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppmatting --model PPModnet_MobileNetV2 --image matting_input.jpg --config_path $CONFIG_PATH
|
./benchmark_ppmatting --model PPModnet_MobileNetV2 --image matting_input.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppseg --model Unet_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppseg --model PP_HumanSegV1_Server_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppseg --model FCN_HRNet_W18_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
||||||
|
|||||||
@@ -45,35 +45,44 @@ fi
|
|||||||
./benchmark_ppocr_det --model ch_PP-OCRv2_det_infer --image 12.jpg --config_path $CONFIG_PATH --trt_shape 1,3,960,608:1,3,960,608:1,3,960,608
|
./benchmark_ppocr_det --model ch_PP-OCRv2_det_infer --image 12.jpg --config_path $CONFIG_PATH --trt_shape 1,3,960,608:1,3,960,608:1,3,960,608
|
||||||
./benchmark_ppocr_rec --model ch_PP-OCRv2_rec_infer --image rec_img.jpg --rec_label_file ppocr_keys_v1.txt --config_path $CONFIG_PATH --trt_shape 1,3,32,10:1,3,32,320:1,3,32,2304
|
./benchmark_ppocr_rec --model ch_PP-OCRv2_rec_infer --image rec_img.jpg --rec_label_file ppocr_keys_v1.txt --config_path $CONFIG_PATH --trt_shape 1,3,32,10:1,3,32,320:1,3,32,2304
|
||||||
|
|
||||||
|
|
||||||
# PaddleDetection
|
# PaddleDetection
|
||||||
./benchmark_ppyolov5 --model yolov5_s_300e_coco_trt_nms --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov5 --model yolov5_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
./benchmark_ppyolov6 --model yolov6_s_300e_coco_trt_nms --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov6 --model yolov6_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
./benchmark_ppyolov8 --model yolov8_s_500e_coco_trt_nms --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
./benchmark_ppyolox --model yolox_s_300e_coco_trt_nms --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov8 --model yolov8_s_500e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
./benchmark_ppyoloe --model ppyoloe_plus_crn_m_80e_coco_trt_nms --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolox --model yolox_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
./benchmark_picodet --model picodet_l_640_coco_lcnet_trt_nms --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
./benchmark_ppyolov7 --model yolov7_l_300e_coco_trt_nms --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyoloe --model ppyoloe_plus_crn_m_80e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco_trt_nms --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_picodet --model picodet_l_640_coco_lcnet_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_yolov3 --model yolov3_darknet53_270e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_picodet --model picodet_l_320_coco_lcnet --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_rtmdet --model rtmdet_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_rtmdet --model rtmdet_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov5 --model yolov5_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolov5 --model yolov5_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov5 --model yolov5_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolov6 --model yolov6_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov6 --model yolov6_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolov8 --model yolov8_s_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov6 --model yolov6_s_400e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolox --model yolox_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
|
||||||
./benchmark_ppyoloe --model ppyoloe_plus_crn_m_80e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
|
||||||
./benchmark_picodet --model picodet_l_640_coco_lcnet --image 000000014439.jpg --config_path $CONFIG_PATH
|
|
||||||
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov7 --model yolov7_x_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_crn_l_80e_sliced_visdrone_640_025 --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_x_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_l_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_m_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_s_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_n_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
|
||||||
# PaddleSeg
|
# PaddleSeg
|
||||||
./benchmark_ppseg --model Portrait_PP_HumanSegV2_Lite_256x144_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --trt_shape 1,3,144,256:1,3,144,256:1,3,144,256
|
./benchmark_ppseg --model Portrait_PP_HumanSegV2_Lite_256x144_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --trt_shape 1,3,144,256:1,3,144,256:1,3,144,256
|
||||||
./benchmark_ppseg --model PP_HumanSegV2_Lite_192x192_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --trt_shape 1,3,192,192:1,3,192,192:1,3,192,192
|
./benchmark_ppseg --model PP_HumanSegV2_Lite_192x192_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --trt_shape 1,3,192,192:1,3,192,192:1,3,192,192
|
||||||
./benchmark_ppseg --model PP_HumanSegV1_Lite_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --trt_shape 1,3,192,192:1,3,192,192:1,3,192,192
|
./benchmark_ppseg --model PP_HumanSegV1_Lite_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --trt_shape 1,3,192,192:1,3,192,192:1,3,192,192
|
||||||
./benchmark_ppseg --model PP_HumanSegV2_Mobile_192x192_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --trt_shape 1,3,192,192:1,3,192,192:1,3,192,192
|
./benchmark_ppseg --model PP_HumanSegV2_Mobile_192x192_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --trt_shape 1,3,192,192:1,3,192,192:1,3,192,192
|
||||||
./benchmark_ppseg --model PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
|
||||||
./benchmark_ppseg --model FCN_HRNet_W18_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
|
||||||
./benchmark_ppseg --model SegFormer_B0-cityscapes-with-argmax --image cityscapes_demo.png --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
|
||||||
./benchmark_ppseg --model Deeplabv3_ResNet101_OS8_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
./benchmark_ppseg --model Deeplabv3_ResNet101_OS8_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
||||||
./benchmark_ppseg --model Unet_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
./benchmark_ppseg --model PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
||||||
./benchmark_ppseg --model PP_HumanSegV1_Server_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
./benchmark_ppseg --model SegFormer_B0-cityscapes-with-argmax --image cityscapes_demo.png --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
||||||
./benchmark_ppmatting --model PP-Matting-512 --image matting_input.jpg --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
./benchmark_ppmatting --model PP-Matting-512 --image matting_input.jpg --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
||||||
./benchmark_ppmatting --model PPHumanMatting --image matting_input.jpg --config_path $CONFIG_PATH --trt_shape 1,3,2048,2048:1,3,2048,2048:1,3,2048,2048
|
./benchmark_ppmatting --model PPHumanMatting --image matting_input.jpg --config_path $CONFIG_PATH --trt_shape 1,3,2048,2048:1,3,2048,2048:1,3,2048,2048
|
||||||
./benchmark_ppmatting --model PPModnet_MobileNetV2 --image matting_input.jpg --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
./benchmark_ppmatting --model PPModnet_MobileNetV2 --image matting_input.jpg --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
||||||
|
./benchmark_ppseg --model Unet_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
||||||
|
./benchmark_ppseg --model PP_HumanSegV1_Server_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
||||||
|
./benchmark_ppseg --model FCN_HRNet_W18_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH --trt_shape 1,3,512,512:1,3,512,512:1,3,512,512
|
||||||
|
|||||||
89
benchmark/cpp/benchmark_maskrcnn.cc
Executable file
89
benchmark/cpp/benchmark_maskrcnn.cc
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + model_name;
|
||||||
|
auto params_file = FLAGS_model + sep + params_name;
|
||||||
|
auto config_file = FLAGS_model + sep + config_name;
|
||||||
|
if (config_info["backend"] == "paddle_trt") {
|
||||||
|
option.paddle_infer_option.collect_trt_shape = true;
|
||||||
|
}
|
||||||
|
if (config_info["backend"] == "paddle_trt" ||
|
||||||
|
config_info["backend"] == "trt") {
|
||||||
|
option.trt_option.SetShape("image", {1, 3, 640, 640}, {1, 3, 640, 640},
|
||||||
|
{1, 3, 640, 640});
|
||||||
|
option.trt_option.SetShape("scale_factor", {1, 2}, {1, 2},
|
||||||
|
{1, 2});
|
||||||
|
}
|
||||||
|
auto model_maskrcnn = vision::detection::MaskRCNN(
|
||||||
|
model_file, params_file, config_file, option, model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_maskrcnn.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "maskrcnn_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_maskrcnn.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_maskrcnn, model_maskrcnn.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
89
benchmark/cpp/benchmark_ppyolo.cc
Executable file
89
benchmark/cpp/benchmark_ppyolo.cc
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + model_name;
|
||||||
|
auto params_file = FLAGS_model + sep + params_name;
|
||||||
|
auto config_file = FLAGS_model + sep + config_name;
|
||||||
|
if (config_info["backend"] == "paddle_trt") {
|
||||||
|
option.paddle_infer_option.collect_trt_shape = true;
|
||||||
|
}
|
||||||
|
if (config_info["backend"] == "paddle_trt" ||
|
||||||
|
config_info["backend"] == "trt") {
|
||||||
|
option.trt_option.SetShape("image", {1, 3, 640, 640}, {1, 3, 640, 640},
|
||||||
|
{1, 3, 640, 640});
|
||||||
|
option.trt_option.SetShape("scale_factor", {1, 2}, {1, 2},
|
||||||
|
{1, 2});
|
||||||
|
}
|
||||||
|
auto model_ppyolo = vision::detection::PPYOLO(
|
||||||
|
model_file, params_file, config_file, option, model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_ppyolo.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "ppyolo_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_ppyolo.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_ppyolo, model_ppyolo.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
89
benchmark/cpp/benchmark_retinanet.cc
Executable file
89
benchmark/cpp/benchmark_retinanet.cc
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + model_name;
|
||||||
|
auto params_file = FLAGS_model + sep + params_name;
|
||||||
|
auto config_file = FLAGS_model + sep + config_name;
|
||||||
|
if (config_info["backend"] == "paddle_trt") {
|
||||||
|
option.paddle_infer_option.collect_trt_shape = true;
|
||||||
|
}
|
||||||
|
if (config_info["backend"] == "paddle_trt" ||
|
||||||
|
config_info["backend"] == "trt") {
|
||||||
|
option.trt_option.SetShape("image", {1, 3, 640, 640}, {1, 3, 640, 640},
|
||||||
|
{1, 3, 640, 640});
|
||||||
|
option.trt_option.SetShape("scale_factor", {1, 2}, {1, 2},
|
||||||
|
{1, 2});
|
||||||
|
}
|
||||||
|
auto model_retinanet = vision::detection::RetinaNet(
|
||||||
|
model_file, params_file, config_file, option, model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_retinanet.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "retinanet_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_retinanet.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_retinanet, model_retinanet.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
89
benchmark/cpp/benchmark_rtmdet.cc
Executable file
89
benchmark/cpp/benchmark_rtmdet.cc
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + model_name;
|
||||||
|
auto params_file = FLAGS_model + sep + params_name;
|
||||||
|
auto config_file = FLAGS_model + sep + config_name;
|
||||||
|
if (config_info["backend"] == "paddle_trt") {
|
||||||
|
option.paddle_infer_option.collect_trt_shape = true;
|
||||||
|
}
|
||||||
|
if (config_info["backend"] == "paddle_trt" ||
|
||||||
|
config_info["backend"] == "trt") {
|
||||||
|
option.trt_option.SetShape("image", {1, 3, 640, 640}, {1, 3, 640, 640},
|
||||||
|
{1, 3, 640, 640});
|
||||||
|
option.trt_option.SetShape("scale_factor", {1, 2}, {1, 2},
|
||||||
|
{1, 2});
|
||||||
|
}
|
||||||
|
auto model_rtmdet = vision::detection::RTMDet(
|
||||||
|
model_file, params_file, config_file, option, model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_rtmdet.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "rtmdet_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_rtmdet.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_rtmdet, model_rtmdet.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
89
benchmark/cpp/benchmark_ssd.cc
Executable file
89
benchmark/cpp/benchmark_ssd.cc
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + model_name;
|
||||||
|
auto params_file = FLAGS_model + sep + params_name;
|
||||||
|
auto config_file = FLAGS_model + sep + config_name;
|
||||||
|
if (config_info["backend"] == "paddle_trt") {
|
||||||
|
option.paddle_infer_option.collect_trt_shape = true;
|
||||||
|
}
|
||||||
|
if (config_info["backend"] == "paddle_trt" ||
|
||||||
|
config_info["backend"] == "trt") {
|
||||||
|
option.trt_option.SetShape("image", {1, 3, 640, 640}, {1, 3, 640, 640},
|
||||||
|
{1, 3, 640, 640});
|
||||||
|
option.trt_option.SetShape("scale_factor", {1, 2}, {1, 2},
|
||||||
|
{1, 2});
|
||||||
|
}
|
||||||
|
auto model_ssd = vision::detection::SSD(
|
||||||
|
model_file, params_file, config_file, option, model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_ssd.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "ssd_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_ssd.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_ssd, model_ssd.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
89
benchmark/cpp/benchmark_tood.cc
Executable file
89
benchmark/cpp/benchmark_tood.cc
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + model_name;
|
||||||
|
auto params_file = FLAGS_model + sep + params_name;
|
||||||
|
auto config_file = FLAGS_model + sep + config_name;
|
||||||
|
if (config_info["backend"] == "paddle_trt") {
|
||||||
|
option.paddle_infer_option.collect_trt_shape = true;
|
||||||
|
}
|
||||||
|
if (config_info["backend"] == "paddle_trt" ||
|
||||||
|
config_info["backend"] == "trt") {
|
||||||
|
option.trt_option.SetShape("image", {1, 3, 640, 640}, {1, 3, 640, 640},
|
||||||
|
{1, 3, 640, 640});
|
||||||
|
option.trt_option.SetShape("scale_factor", {1, 2}, {1, 2},
|
||||||
|
{1, 2});
|
||||||
|
}
|
||||||
|
auto model_tood = vision::detection::TOOD(
|
||||||
|
model_file, params_file, config_file, option, model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_tood.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "tood_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_tood.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_tood, model_tood.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
89
benchmark/cpp/benchmark_ttfnet.cc
Executable file
89
benchmark/cpp/benchmark_ttfnet.cc
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + model_name;
|
||||||
|
auto params_file = FLAGS_model + sep + params_name;
|
||||||
|
auto config_file = FLAGS_model + sep + config_name;
|
||||||
|
if (config_info["backend"] == "paddle_trt") {
|
||||||
|
option.paddle_infer_option.collect_trt_shape = true;
|
||||||
|
}
|
||||||
|
if (config_info["backend"] == "paddle_trt" ||
|
||||||
|
config_info["backend"] == "trt") {
|
||||||
|
option.trt_option.SetShape("image", {1, 3, 640, 640}, {1, 3, 640, 640},
|
||||||
|
{1, 3, 640, 640});
|
||||||
|
option.trt_option.SetShape("scale_factor", {1, 2}, {1, 2},
|
||||||
|
{1, 2});
|
||||||
|
}
|
||||||
|
auto model_ttfnet = vision::detection::TTFNet(
|
||||||
|
model_file, params_file, config_file, option, model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_ttfnet.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "ttfnet_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_ttfnet.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_ttfnet, model_ttfnet.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -46,21 +46,53 @@ fi
|
|||||||
./benchmark_ppocr_rec --model ch_PP-OCRv2_rec_infer --image rec_img.jpg --rec_label_file ppocr_keys_v1.txt --config_path $CONFIG_PATH
|
./benchmark_ppocr_rec --model ch_PP-OCRv2_rec_infer --image rec_img.jpg --rec_label_file ppocr_keys_v1.txt --config_path $CONFIG_PATH
|
||||||
|
|
||||||
# PaddleDetection
|
# PaddleDetection
|
||||||
|
./benchmark_ppyolov5 --model yolov5_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov6 --model yolov6_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov8 --model yolov8_s_500e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolox --model yolox_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_plus_crn_m_80e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_picodet --model picodet_l_640_coco_lcnet_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolo --model ppyolo_r50vd_dcn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_yolov3 --model yolov3_darknet53_270e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolo --model ppyolov2_r101vd_dcn_365e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_picodet --model picodet_l_320_coco_lcnet --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_fasterrcnn --model faster_rcnn_r50_vd_fpn_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_maskrcnn --model mask_rcnn_r50_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_rtmdet --model rtmdet_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_rtmdet --model rtmdet_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_cascadercnn --model cascade_rcnn_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_cascadercnn --model cascade_rcnn_r50_vd_fpn_ssld_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_fcos --model fcos_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_gfl --model gfl_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_retinanet --model retinanet_r101_fpn_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_retinanet --model retinanet_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_tood --model tood_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ttfnet --model ttfnet_darknet53_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov5 --model yolov5_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolov5 --model yolov5_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov5 --model yolov5_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolov6 --model yolov6_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov6 --model yolov6_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolov8 --model yolov8_s_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov6 --model yolov6_s_400e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolox --model yolox_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
|
||||||
./benchmark_ppyoloe --model ppyoloe_plus_crn_m_80e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
|
||||||
./benchmark_picodet --model picodet_l_640_coco_lcnet --image 000000014439.jpg --config_path $CONFIG_PATH
|
|
||||||
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov7 --model yolov7_x_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_fasterrcnn --model faster_rcnn_enhance_3x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_crn_l_80e_sliced_visdrone_640_025 --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssd_mobilenet_v1_300_120e_voc --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssd_vgg16_300_240e_voc --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssdlite_mobilenet_v1_300_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_x_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_l_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_m_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_s_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_n_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
|
||||||
# PaddleSeg
|
# PaddleSeg
|
||||||
./benchmark_ppseg --model Portrait_PP_HumanSegV2_Lite_256x144_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
./benchmark_ppseg --model Portrait_PP_HumanSegV2_Lite_256x144_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model PP_HumanSegV2_Lite_192x192_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
./benchmark_ppseg --model PP_HumanSegV2_Lite_192x192_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model PP_HumanSegV1_Lite_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
./benchmark_ppseg --model PP_HumanSegV1_Lite_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppseg --model PP_HumanSegV2_Mobile_192x192_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
./benchmark_ppseg --model PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model FCN_HRNet_W18_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
|
||||||
./benchmark_ppseg --model SegFormer_B0-cityscapes-with-argmax --image cityscapes_demo.png --config_path $CONFIG_PATH
|
./benchmark_ppseg --model SegFormer_B0-cityscapes-with-argmax --image cityscapes_demo.png --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model Deeplabv3_ResNet101_OS8_cityscapes_with_argmax_infer --image cityscapes_demo.png --warmup 10 --repeat 50 --config_path $CONFIG_PATH
|
./benchmark_ppseg --model Deeplabv3_ResNet101_OS8_cityscapes_with_argmax_infer --image cityscapes_demo.png --warmup 10 --repeat 50 --config_path $CONFIG_PATH
|
||||||
./benchmark_ppseg --model Unet_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
./benchmark_ppseg --model Unet_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
||||||
@@ -68,3 +100,4 @@ fi
|
|||||||
./benchmark_ppmatting --model PP-Matting-512 --image matting_input.jpg --warmup 10 --repeat 50 --config_path $CONFIG_PATH
|
./benchmark_ppmatting --model PP-Matting-512 --image matting_input.jpg --warmup 10 --repeat 50 --config_path $CONFIG_PATH
|
||||||
./benchmark_ppmatting --model PPHumanMatting --image matting_input.jpg --warmup 10 --repeat 50 --config_path $CONFIG_PATH
|
./benchmark_ppmatting --model PPHumanMatting --image matting_input.jpg --warmup 10 --repeat 50 --config_path $CONFIG_PATH
|
||||||
./benchmark_ppmatting --model PPModnet_MobileNetV2 --image matting_input.jpg --config_path $CONFIG_PATH
|
./benchmark_ppmatting --model PPModnet_MobileNetV2 --image matting_input.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppseg --model FCN_HRNet_W18_cityscapes_with_argmax_infer --image cityscapes_demo.png --config_path $CONFIG_PATH
|
||||||
|
|||||||
@@ -54,6 +54,44 @@ fi
|
|||||||
./benchmark_picodet --model picodet_l_640_coco_lcnet --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_picodet --model picodet_l_640_coco_lcnet --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov5 --model yolov5_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov6 --model yolov6_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolov8 --model yolov8_s_500e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolox --model yolox_s_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_crn_l_300e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_plus_crn_m_80e_coco_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_picodet --model picodet_l_640_coco_lcnet_no_nms --image 000000014439.jpg --config_path $CONFIG_PATH --no_nms
|
||||||
|
./benchmark_ppyolo --model ppyolo_r50vd_dcn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_yolov3 --model yolov3_darknet53_270e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolo --model ppyolov2_r101vd_dcn_365e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_picodet --model picodet_l_320_coco_lcnet --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_fasterrcnn --model faster_rcnn_r50_vd_fpn_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_maskrcnn --model mask_rcnn_r50_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_rtmdet --model rtmdet_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_rtmdet --model rtmdet_s_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_cascadercnn --model cascade_rcnn_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_cascadercnn --model cascade_rcnn_r50_vd_fpn_ssld_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_fcos --model fcos_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_gfl --model gfl_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_retinanet --model retinanet_r101_fpn_2x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_retinanet --model retinanet_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_tood --model tood_r50_fpn_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ttfnet --model ttfnet_darknet53_1x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov5 --model yolov5_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov6 --model yolov6_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov6 --model yolov6_s_400e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov7 --model yolov7_l_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov7 --model yolov7_x_300e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_fasterrcnn --model faster_rcnn_enhance_3x_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyoloe --model ppyoloe_crn_l_80e_sliced_visdrone_640_025 --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssd_mobilenet_v1_300_120e_voc --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssd_vgg16_300_240e_voc --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ssd --model ssdlite_mobilenet_v1_300_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_x_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_l_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_m_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
./benchmark_ppyolov8 --model yolov8_n_500e_coco --image 000000014439.jpg --config_path $CONFIG_PATH
|
||||||
|
|
||||||
# PaddleSeg
|
# PaddleSeg
|
||||||
./benchmark_ppseg --model Portrait_PP_HumanSegV2_Lite_256x144_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --xpu_l3_cache 0
|
./benchmark_ppseg --model Portrait_PP_HumanSegV2_Lite_256x144_with_argmax_infer --image portrait_heng.jpg --config_path $CONFIG_PATH --xpu_l3_cache 0
|
||||||
|
|||||||
79
benchmark/cpp/benchmark_yolov3.cc
Normal file
79
benchmark/cpp/benchmark_yolov3.cc
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "flags.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "option.h"
|
||||||
|
|
||||||
|
namespace vision = fastdeploy::vision;
|
||||||
|
namespace benchmark = fastdeploy::benchmark;
|
||||||
|
|
||||||
|
DEFINE_bool(no_nms, false, "Whether the model contains nms.");
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
#if defined(ENABLE_BENCHMARK) && defined(ENABLE_VISION)
|
||||||
|
// Initialization
|
||||||
|
auto option = fastdeploy::RuntimeOption();
|
||||||
|
if (!CreateRuntimeOption(&option, argc, argv, true)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto im = cv::imread(FLAGS_image);
|
||||||
|
std::unordered_map<std::string, std::string> config_info;
|
||||||
|
benchmark::ResultManager::LoadBenchmarkConfig(FLAGS_config_path,
|
||||||
|
&config_info);
|
||||||
|
std::string model_name, params_name, config_name;
|
||||||
|
auto model_format = fastdeploy::ModelFormat::PADDLE;
|
||||||
|
if (!UpdateModelResourceName(&model_name, ¶ms_name, &config_name,
|
||||||
|
&model_format, config_info)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
auto model_file = FLAGS_model + sep + model_name;
|
||||||
|
auto params_file = FLAGS_model + sep + params_name;
|
||||||
|
auto config_file = FLAGS_model + sep + config_name;
|
||||||
|
auto model_yolov3 = vision::detection::YOLOv3(
|
||||||
|
model_file, params_file, config_file, option, model_format);
|
||||||
|
vision::DetectionResult res;
|
||||||
|
if (config_info["precision_compare"] == "true") {
|
||||||
|
// Run once at least
|
||||||
|
model_yolov3.Predict(im, &res);
|
||||||
|
// 1. Test result diff
|
||||||
|
std::cout << "=============== Test result diff =================\n";
|
||||||
|
// Save result to -> disk.
|
||||||
|
std::string det_result_path = "yolov3_result.txt";
|
||||||
|
benchmark::ResultManager::SaveDetectionResult(res, det_result_path);
|
||||||
|
// Load result from <- disk.
|
||||||
|
vision::DetectionResult res_loaded;
|
||||||
|
benchmark::ResultManager::LoadDetectionResult(&res_loaded, det_result_path);
|
||||||
|
// Calculate diff between two results.
|
||||||
|
auto det_diff =
|
||||||
|
benchmark::ResultManager::CalculateDiffStatis(res, res_loaded);
|
||||||
|
std::cout << "Boxes diff: mean=" << det_diff.boxes.mean
|
||||||
|
<< ", max=" << det_diff.boxes.max
|
||||||
|
<< ", min=" << det_diff.boxes.min << std::endl;
|
||||||
|
std::cout << "Label_ids diff: mean=" << det_diff.labels.mean
|
||||||
|
<< ", max=" << det_diff.labels.max
|
||||||
|
<< ", min=" << det_diff.labels.min << std::endl;
|
||||||
|
}
|
||||||
|
// Run profiling
|
||||||
|
if (FLAGS_no_nms) {
|
||||||
|
model_yolov3.GetPostprocessor().ApplyNMS();
|
||||||
|
}
|
||||||
|
BENCHMARK_MODEL(model_yolov3, model_yolov3.Predict(im, &res))
|
||||||
|
auto vis_im = vision::VisDetection(im, res);
|
||||||
|
cv::imwrite("vis_result.jpg", vis_im);
|
||||||
|
std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -102,22 +102,48 @@ download_common_file() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# PaddleDetection
|
# PaddleDetection
|
||||||
download_fd_model_zxvf ppyoloe_crn_l_300e_coco.tgz
|
|
||||||
download_fd_model_zxvf picodet_l_640_coco_lcnet.tgz
|
download_fd_model_zxvf ppyoloe_crn_l_300e_coco_no_nms.tgz
|
||||||
download_fd_model_zxvf ppyoloe_plus_crn_m_80e_coco.tgz
|
download_fd_model_zxvf picodet_l_640_coco_lcnet_no_nms.tgz
|
||||||
|
download_fd_model_zxvf ppyoloe_plus_crn_m_80e_coco_no_nms.tgz
|
||||||
|
download_fd_model_zxvf yolox_s_300e_coco_no_nms.tgz
|
||||||
|
download_fd_model_zxvf yolov5_s_300e_coco_no_nms.tgz
|
||||||
|
download_fd_model_zxvf yolov6_s_300e_coco_no_nms.tgz
|
||||||
|
download_fd_model_zxvf yolov7_l_300e_coco_no_nms.tgz
|
||||||
|
download_fd_model_zxvf yolov8_s_500e_coco_no_nms.tgz
|
||||||
|
download_fd_model_zxvf ppyolo_r50vd_dcn_1x_coco.tgz
|
||||||
|
download_fd_model_zxvf ppyolov2_r101vd_dcn_365e_coco.tgz
|
||||||
|
download_fd_model_zxvf yolov3_darknet53_270e_coco.tgz
|
||||||
download_fd_model_zxvf yolox_s_300e_coco.tgz
|
download_fd_model_zxvf yolox_s_300e_coco.tgz
|
||||||
|
download_fd_model_zxvf faster_rcnn_r50_vd_fpn_2x_coco.tgz
|
||||||
|
download_fd_model_zxvf mask_rcnn_r50_1x_coco.tgz
|
||||||
|
download_fd_model_zxvf ssd_mobilenet_v1_300_120e_voc.tgz
|
||||||
|
download_fd_model_zxvf ssd_vgg16_300_240e_voc.tgz
|
||||||
|
download_fd_model_zxvf ssdlite_mobilenet_v1_300_coco.tgz
|
||||||
|
download_fd_model_zxvf rtmdet_l_300e_coco.tgz
|
||||||
|
download_fd_model_zxvf rtmdet_s_300e_coco.tgz
|
||||||
|
download_fd_model_zxvf yolov5_l_300e_coco.tgz
|
||||||
download_fd_model_zxvf yolov5_s_300e_coco.tgz
|
download_fd_model_zxvf yolov5_s_300e_coco.tgz
|
||||||
download_fd_model_zxvf yolov6_s_300e_coco.tgz
|
download_fd_model_zxvf yolov6_l_300e_coco.tgz
|
||||||
|
download_fd_model_zxvf yolov6_s_400e_coco.tgz
|
||||||
download_fd_model_zxvf yolov7_l_300e_coco.tgz
|
download_fd_model_zxvf yolov7_l_300e_coco.tgz
|
||||||
|
download_fd_model_zxvf cascade_rcnn_r50_fpn_1x_coco.tgz
|
||||||
|
download_fd_model_zxvf cascade_rcnn_r50_vd_fpn_ssld_2x_coco.tgz
|
||||||
|
download_fd_model_zxvf faster_rcnn_enhance_3x_coco.tgz
|
||||||
|
download_fd_model_zxvf fcos_r50_fpn_1x_coco.tgz
|
||||||
|
download_fd_model_zxvf gfl_r50_fpn_1x_coco.tgz
|
||||||
|
download_fd_model_zxvf ppyoloe_crn_l_80e_sliced_visdrone_640_025.tgz
|
||||||
|
download_fd_model_zxvf retinanet_r101_fpn_2x_coco.tgz
|
||||||
|
download_fd_model_zxvf retinanet_r50_fpn_1x_coco.tgz
|
||||||
|
download_fd_model_zxvf tood_r50_fpn_1x_coco.tgz
|
||||||
|
download_fd_model_zxvf ttfnet_darknet53_1x_coco.tgz
|
||||||
|
download_fd_model_zxvf yolov8_x_500e_coco.tgz
|
||||||
|
download_fd_model_zxvf yolov8_l_500e_coco.tgz
|
||||||
|
download_fd_model_zxvf yolov8_m_500e_coco.tgz
|
||||||
download_fd_model_zxvf yolov8_s_500e_coco.tgz
|
download_fd_model_zxvf yolov8_s_500e_coco.tgz
|
||||||
download_fd_model_zxvf ppyoloe_crn_l_300e_coco_trt_nms.tgz
|
download_fd_model_zxvf yolov8_n_500e_coco.tgz
|
||||||
download_fd_model_zxvf picodet_l_640_coco_lcnet_trt_nms.tgz
|
download_fd_model_zxvf picodet_l_320_coco_lcnet.tgz
|
||||||
download_fd_model_zxvf ppyoloe_plus_crn_m_80e_coco_trt_nms.tgz
|
download_fd_model_zxvf yolov7_x_300e_coco.tgz
|
||||||
download_fd_model_zxvf yolox_s_300e_coco_trt_nms.tgz
|
|
||||||
download_fd_model_zxvf yolov5_s_300e_coco_trt_nms.tgz
|
|
||||||
download_fd_model_zxvf yolov6_s_300e_coco_trt_nms.tgz
|
|
||||||
download_fd_model_zxvf yolov7_l_300e_coco_trt_nms.tgz
|
|
||||||
download_fd_model_zxvf yolov8_s_500e_coco_trt_nms.tgz
|
|
||||||
|
|
||||||
# PaddleClas
|
# PaddleClas
|
||||||
download_fd_model_zxvf PPLCNet_x1_0_infer.tgz
|
download_fd_model_zxvf PPLCNet_x1_0_infer.tgz
|
||||||
|
|||||||
Reference in New Issue
Block a user