-
Notifications
You must be signed in to change notification settings - Fork 460
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Model] Support PP-OCRv4 pipeline (#1913)
* 添加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 * modified paddledetection documents * upadte getmodels.sh * add PaddleDetectonModel * reset examples/paddledetection * resolve conflict * update pybind * resolve conflict * fix bug * delete debug mode * update checkarch log * update trt inputs example * Update README.md * add ppocr_v4 * update ppocr_v4 * update ocr_v4 * update ocr_v4 * update ocr_v4 * update ocr_v4 --------- Co-authored-by: DefTruth <[email protected]>
- Loading branch information
1 parent
e75e766
commit 643f41e
Showing
10 changed files
with
231 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
// Copyright (c) 2022 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 | ||
// | ||
// https://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. | ||
|
||
#pragma once | ||
|
||
#include "fastdeploy/vision/ocr/ppocr/ppocr_v3.h" | ||
|
||
namespace fastdeploy { | ||
/** \brief This pipeline can launch detection model, classification model and recognition model sequentially. All OCR pipeline APIs are defined inside this namespace. | ||
* | ||
*/ | ||
namespace pipeline { | ||
/*! @brief PPOCRv4 is used to load PP-OCRv4 series models provided by PaddleOCR. | ||
*/ | ||
class FASTDEPLOY_DECL PPOCRv4 : public PPOCRv3 { | ||
public: | ||
/** \brief Set up the detection model path, classification model path and recognition model path respectively. | ||
* | ||
* \param[in] det_model Path of detection model, e.g ./ch_PP-OCRv4_det_infer | ||
* \param[in] cls_model Path of classification model, e.g ./ch_ppocr_mobile_v2.0_cls_infer | ||
* \param[in] rec_model Path of recognition model, e.g ./ch_PP-OCRv4_rec_infer | ||
*/ | ||
PPOCRv4(fastdeploy::vision::ocr::DBDetector* det_model, | ||
fastdeploy::vision::ocr::Classifier* cls_model, | ||
fastdeploy::vision::ocr::Recognizer* rec_model) | ||
: PPOCRv3(det_model, cls_model, rec_model) { | ||
// The only difference between v2 and v3 | ||
auto preprocess_shape = recognizer_->GetPreprocessor().GetRecImageShape(); | ||
preprocess_shape[1] = 48; | ||
recognizer_->GetPreprocessor().SetRecImageShape(preprocess_shape); | ||
} | ||
/** \brief Classification model is optional, so this function is set up the detection model path and recognition model path respectively. | ||
* | ||
* \param[in] det_model Path of detection model, e.g ./ch_PP-OCRv4_det_infer | ||
* \param[in] rec_model Path of recognition model, e.g ./ch_PP-OCRv4_rec_infer | ||
*/ | ||
PPOCRv4(fastdeploy::vision::ocr::DBDetector* det_model, | ||
fastdeploy::vision::ocr::Recognizer* rec_model) | ||
: PPOCRv3(det_model, rec_model) { | ||
// The only difference between v2 and v4 | ||
auto preprocess_shape = recognizer_->GetPreprocessor().GetRecImageShape(); | ||
preprocess_shape[1] = 48; | ||
recognizer_->GetPreprocessor().SetRecImageShape(preprocess_shape); | ||
} | ||
|
||
/** \brief Clone a new PPOCRv4 with less memory usage when multiple instances of the same model are created | ||
* | ||
* \return new PPOCRv4* type unique pointer | ||
*/ | ||
std::unique_ptr<PPOCRv4> Clone() const { | ||
std::unique_ptr<PPOCRv4> clone_model = utils::make_unique<PPOCRv4>(PPOCRv4(*this)); | ||
clone_model->detector_ = detector_->Clone().release(); | ||
if (classifier_ != nullptr) { | ||
clone_model->classifier_ = classifier_->Clone().release(); | ||
} | ||
clone_model->recognizer_ = recognizer_->Clone().release(); | ||
return clone_model; | ||
} | ||
}; | ||
|
||
} // namespace pipeline | ||
|
||
namespace application { | ||
namespace ocrsystem { | ||
typedef pipeline::PPOCRv4 PPOCRSystemv4; | ||
} // namespace ocrsystem | ||
} // namespace application | ||
|
||
} // namespace fastdeploy |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters