diff --git a/deploy/cpp_infer/include/paddleocr.h b/deploy/cpp_infer/include/paddleocr.h index 16750a15f7..85b9d15a7e 100644 --- a/deploy/cpp_infer/include/paddleocr.h +++ b/deploy/cpp_infer/include/paddleocr.h @@ -23,7 +23,7 @@ namespace PaddleOCR { class PPOCR { public: explicit PPOCR(); - ~PPOCR(); + ~PPOCR() = default; std::vector> ocr(std::vector img_list, bool det = true, @@ -47,9 +47,9 @@ class PPOCR { std::vector &ocr_results); private: - DBDetector *detector_ = nullptr; - Classifier *classifier_ = nullptr; - CRNNRecognizer *recognizer_ = nullptr; + std::unique_ptr detector_; + std::unique_ptr classifier_; + std::unique_ptr recognizer_; }; } // namespace PaddleOCR diff --git a/deploy/cpp_infer/include/paddlestructure.h b/deploy/cpp_infer/include/paddlestructure.h index 8478a85cde..9ae54f48f7 100644 --- a/deploy/cpp_infer/include/paddlestructure.h +++ b/deploy/cpp_infer/include/paddlestructure.h @@ -23,7 +23,7 @@ namespace PaddleOCR { class PaddleStructure : public PPOCR { public: explicit PaddleStructure(); - ~PaddleStructure(); + ~PaddleStructure() = default; std::vector structure(cv::Mat img, bool layout = false, @@ -37,8 +37,8 @@ class PaddleStructure : public PPOCR { std::vector time_info_table = {0, 0, 0}; std::vector time_info_layout = {0, 0, 0}; - StructureTableRecognizer *table_model_ = nullptr; - StructureLayoutRecognizer *layout_model_ = nullptr; + std::unique_ptr table_model_; + std::unique_ptr layout_model_; void layout(cv::Mat img, std::vector &structure_result); diff --git a/deploy/cpp_infer/src/main.cpp b/deploy/cpp_infer/src/main.cpp index 0c155dd0ec..b522a2d151 100644 --- a/deploy/cpp_infer/src/main.cpp +++ b/deploy/cpp_infer/src/main.cpp @@ -82,7 +82,7 @@ void check_params() { } void ocr(std::vector &cv_all_img_names) { - PPOCR ocr = PPOCR(); + PPOCR ocr; if (FLAGS_benchmark) { ocr.reset_timer(); @@ -120,7 +120,7 @@ void ocr(std::vector &cv_all_img_names) { } void structure(std::vector &cv_all_img_names) { - PaddleOCR::PaddleStructure engine = PaddleOCR::PaddleStructure(); + PaddleOCR::PaddleStructure engine; if (FLAGS_benchmark) { engine.reset_timer(); diff --git a/deploy/cpp_infer/src/ocr_cls.cpp b/deploy/cpp_infer/src/ocr_cls.cpp index 13a03d6ad4..6f2b5509e6 100644 --- a/deploy/cpp_infer/src/ocr_cls.cpp +++ b/deploy/cpp_infer/src/ocr_cls.cpp @@ -20,12 +20,9 @@ void Classifier::Run(std::vector img_list, std::vector &cls_labels, std::vector &cls_scores, std::vector ×) { - std::chrono::duration preprocess_diff = - std::chrono::steady_clock::now() - std::chrono::steady_clock::now(); - std::chrono::duration inference_diff = - std::chrono::steady_clock::now() - std::chrono::steady_clock::now(); - std::chrono::duration postprocess_diff = - std::chrono::steady_clock::now() - std::chrono::steady_clock::now(); + std::chrono::duration preprocess_diff = std::chrono::duration::zero(); + std::chrono::duration inference_diff = std::chrono::duration::zero(); + std::chrono::duration postprocess_diff = std::chrono::duration::zero(); int img_num = img_list.size(); std::vector cls_image_shape = {3, 48, 192}; diff --git a/deploy/cpp_infer/src/ocr_rec.cpp b/deploy/cpp_infer/src/ocr_rec.cpp index 9671516368..cf3e58d42a 100644 --- a/deploy/cpp_infer/src/ocr_rec.cpp +++ b/deploy/cpp_infer/src/ocr_rec.cpp @@ -20,12 +20,9 @@ void CRNNRecognizer::Run(std::vector img_list, std::vector &rec_texts, std::vector &rec_text_scores, std::vector ×) { - std::chrono::duration preprocess_diff = - std::chrono::steady_clock::now() - std::chrono::steady_clock::now(); - std::chrono::duration inference_diff = - std::chrono::steady_clock::now() - std::chrono::steady_clock::now(); - std::chrono::duration postprocess_diff = - std::chrono::steady_clock::now() - std::chrono::steady_clock::now(); + std::chrono::duration preprocess_diff = std::chrono::duration::zero(); + std::chrono::duration inference_diff = std::chrono::duration::zero(); + std::chrono::duration postprocess_diff = std::chrono::duration::zero(); int img_num = img_list.size(); std::vector width_list; diff --git a/deploy/cpp_infer/src/paddleocr.cpp b/deploy/cpp_infer/src/paddleocr.cpp index 86747c60d6..e0956474d1 100644 --- a/deploy/cpp_infer/src/paddleocr.cpp +++ b/deploy/cpp_infer/src/paddleocr.cpp @@ -21,28 +21,28 @@ namespace PaddleOCR { PPOCR::PPOCR() { if (FLAGS_det) { - this->detector_ = new DBDetector( + this->detector_.reset(new DBDetector( FLAGS_det_model_dir, FLAGS_use_gpu, FLAGS_gpu_id, FLAGS_gpu_mem, FLAGS_cpu_threads, FLAGS_enable_mkldnn, FLAGS_limit_type, FLAGS_limit_side_len, FLAGS_det_db_thresh, FLAGS_det_db_box_thresh, FLAGS_det_db_unclip_ratio, FLAGS_det_db_score_mode, FLAGS_use_dilation, - FLAGS_use_tensorrt, FLAGS_precision); + FLAGS_use_tensorrt, FLAGS_precision)); } if (FLAGS_cls && FLAGS_use_angle_cls) { - this->classifier_ = new Classifier( + this->classifier_.reset(new Classifier( FLAGS_cls_model_dir, FLAGS_use_gpu, FLAGS_gpu_id, FLAGS_gpu_mem, FLAGS_cpu_threads, FLAGS_enable_mkldnn, FLAGS_cls_thresh, - FLAGS_use_tensorrt, FLAGS_precision, FLAGS_cls_batch_num); + FLAGS_use_tensorrt, FLAGS_precision, FLAGS_cls_batch_num)); } if (FLAGS_rec) { - this->recognizer_ = new CRNNRecognizer( + this->recognizer_.reset(new CRNNRecognizer( FLAGS_rec_model_dir, FLAGS_use_gpu, FLAGS_gpu_id, FLAGS_gpu_mem, FLAGS_cpu_threads, FLAGS_enable_mkldnn, FLAGS_rec_char_dict_path, FLAGS_use_tensorrt, FLAGS_precision, FLAGS_rec_batch_num, - FLAGS_rec_img_h, FLAGS_rec_img_w); + FLAGS_rec_img_h, FLAGS_rec_img_w)); } -}; +} std::vector> PPOCR::ocr(std::vector img_list, bool det, bool rec, bool cls) { @@ -51,7 +51,7 @@ PPOCR::ocr(std::vector img_list, bool det, bool rec, bool cls) { if (!det) { std::vector ocr_result; ocr_result.resize(img_list.size()); - if (cls && this->classifier_ != nullptr) { + if (cls && this->classifier_) { this->cls(img_list, ocr_result); for (int i = 0; i < img_list.size(); i++) { if (ocr_result[i].cls_label % 2 == 1 && @@ -92,7 +92,7 @@ std::vector PPOCR::ocr(cv::Mat img, bool det, bool rec, img_list.push_back(crop_img); } // cls - if (cls && this->classifier_ != nullptr) { + if (cls && this->classifier_) { this->cls(img_list, ocr_result); for (int i = 0; i < img_list.size(); i++) { if (ocr_result[i].cls_label % 2 == 1 && @@ -190,16 +190,4 @@ void PPOCR::benchmark_log(int img_num) { } } -PPOCR::~PPOCR() { - if (this->detector_ != nullptr) { - delete this->detector_; - } - if (this->classifier_ != nullptr) { - delete this->classifier_; - } - if (this->recognizer_ != nullptr) { - delete this->recognizer_; - } -}; - } // namespace PaddleOCR diff --git a/deploy/cpp_infer/src/paddlestructure.cpp b/deploy/cpp_infer/src/paddlestructure.cpp index b2e35f8c77..bde687e2c2 100644 --- a/deploy/cpp_infer/src/paddlestructure.cpp +++ b/deploy/cpp_infer/src/paddlestructure.cpp @@ -21,20 +21,20 @@ namespace PaddleOCR { PaddleStructure::PaddleStructure() { if (FLAGS_layout) { - this->layout_model_ = new StructureLayoutRecognizer( + this->layout_model_.reset(new StructureLayoutRecognizer( FLAGS_layout_model_dir, FLAGS_use_gpu, FLAGS_gpu_id, FLAGS_gpu_mem, FLAGS_cpu_threads, FLAGS_enable_mkldnn, FLAGS_layout_dict_path, FLAGS_use_tensorrt, FLAGS_precision, FLAGS_layout_score_threshold, - FLAGS_layout_nms_threshold); + FLAGS_layout_nms_threshold)); } if (FLAGS_table) { - this->table_model_ = new StructureTableRecognizer( + this->table_model_.reset(new StructureTableRecognizer( FLAGS_table_model_dir, FLAGS_use_gpu, FLAGS_gpu_id, FLAGS_gpu_mem, FLAGS_cpu_threads, FLAGS_enable_mkldnn, FLAGS_table_char_dict_path, FLAGS_use_tensorrt, FLAGS_precision, FLAGS_table_batch_num, - FLAGS_table_max_len, FLAGS_merge_no_span_structure); + FLAGS_table_max_len, FLAGS_merge_no_span_structure)); } -}; +} std::vector PaddleStructure::structure(cv::Mat srcimg, bool layout, bool table, bool ocr) { @@ -65,7 +65,7 @@ PaddleStructure::structure(cv::Mat srcimg, bool layout, bool table, bool ocr) { } return structure_results; -}; +} void PaddleStructure::layout( cv::Mat img, std::vector &structure_result) { @@ -123,7 +123,7 @@ void PaddleStructure::table(cv::Mat img, structure_result.cell_box = structure_boxes[i]; structure_result.html_score = structure_scores[i]; } -}; +} std::string PaddleStructure::rebuild_table(std::vector structure_html_tags, @@ -286,10 +286,4 @@ void PaddleStructure::benchmark_log(int img_num) { } } -PaddleStructure::~PaddleStructure() { - if (this->table_model_ != nullptr) { - delete this->table_model_; - } -}; - -} // namespace PaddleOCR \ No newline at end of file +} // namespace PaddleOCR