[Model] Add is_mini_pad and stride for YOLOv5 python (#949)

* add onnx_ort_runtime demo

* rm in requirements

* support batch eval

* fixed MattingResults bug

* move assignment for DetectionResult

* integrated x2paddle

* add model convert readme

* update readme

* re-lint

* add processor api

* Add MattingResult Free

* change valid_cpu_backends order

* add ppocr benchmark

* mv bs from 64 to 32

* fixed quantize.md

* fixed quantize bugs

* Add Monitor for benchmark

* update mem monitor

* Set trt_max_batch_size default 1

* fixed ocr benchmark bug

* support yolov5 in serving

* Fixed yolov5 serving

* Fixed postprocess

* update yolov5 to 7.0

* add poros runtime demos

* update readme

* Support poros abi=1

* rm useless note

* deal with comments

* support pp_trt for ppseg

* fixed symlink problem

* Add is_mini_pad and stride for yolov5

Co-authored-by: Jason <jiangjiajun@baidu.com>
This commit is contained in:
WJJ1995
2022-12-22 19:15:32 +08:00
committed by GitHub
parent 1323595b10
commit 0f28f9432f
3 changed files with 47 additions and 1 deletions

View File

@@ -61,6 +61,23 @@ class FASTDEPLOY_DECL YOLOv5Preprocessor {
/// Get is_scale_up, default true
bool GetScaleUp() const { return is_scale_up_; }
/// Set is_mini_pad, pad to the minimum rectange
/// which height and width is times of stride
void SetMiniPad(bool is_mini_pad) {
is_mini_pad_ = is_mini_pad;
}
/// Get is_mini_pad, default false
bool GetMiniPad() const { return is_mini_pad_; }
/// Set padding stride, only for mini_pad mode
void SetStride(int stride) {
stride_ = stride;
}
/// Get padding stride, default 32
bool GetStride() const { return stride_; }
protected:
bool Preprocess(FDMat* mat, FDTensor* output,
std::map<std::string, std::array<float, 2>>* im_info);

View File

@@ -36,7 +36,9 @@ void BindYOLOv5(pybind11::module& m) {
})
.def_property("size", &vision::detection::YOLOv5Preprocessor::GetSize, &vision::detection::YOLOv5Preprocessor::SetSize)
.def_property("padding_value", &vision::detection::YOLOv5Preprocessor::GetPaddingValue, &vision::detection::YOLOv5Preprocessor::SetPaddingValue)
.def_property("is_scale_up", &vision::detection::YOLOv5Preprocessor::GetScaleUp, &vision::detection::YOLOv5Preprocessor::SetScaleUp);
.def_property("is_scale_up", &vision::detection::YOLOv5Preprocessor::GetScaleUp, &vision::detection::YOLOv5Preprocessor::SetScaleUp)
.def_property("is_mini_pad", &vision::detection::YOLOv5Preprocessor::GetMiniPad, &vision::detection::YOLOv5Preprocessor::SetMiniPad)
.def_property("stride", &vision::detection::YOLOv5Preprocessor::GetStride, &vision::detection::YOLOv5Preprocessor::SetStride);
pybind11::class_<vision::detection::YOLOv5Postprocessor>(
m, "YOLOv5Postprocessor")

27
python/fastdeploy/vision/detection/contrib/yolov5.py Normal file → Executable file
View File

@@ -54,6 +54,20 @@ class YOLOv5Preprocessor:
"""
return self._preprocessor.is_scale_up
@property
def is_mini_pad(self):
"""
is_mini_pad for preprocessing, pad to the minimum rectange which height and width is times of stride, default false
"""
return self._preprocessor.is_mini_pad
@property
def stride(self):
"""
stride for preprocessing, only for mini_pad mode, default 32
"""
return self._preprocessor.stride
@size.setter
def size(self, wh):
assert isinstance(wh, (list, tuple)),\
@@ -77,6 +91,19 @@ class YOLOv5Preprocessor:
bool), "The value to set `is_scale_up` must be type of bool."
self._preprocessor.is_scale_up = value
@is_mini_pad.setter
def is_mini_pad(self, value):
assert isinstance(
value,
bool), "The value to set `is_mini_pad` must be type of bool."
self._preprocessor.is_mini_pad = value
@stride.setter
def stride(self, value):
assert isinstance(
stride, int), "The value to set `stride` must be type of int."
self._preprocessor.stride = value
class YOLOv5Postprocessor:
def __init__(self):