diff --git a/mindspore/lite/nnacl/detection_post_process_parameter.h b/mindspore/lite/nnacl/detection_post_process_parameter.h index 77616da13fc3b3ecc7264a11974e75add83ed472..e49a8aaee6a243c9c0299b4338c050c86ea32bf0 100644 --- a/mindspore/lite/nnacl/detection_post_process_parameter.h +++ b/mindspore/lite/nnacl/detection_post_process_parameter.h @@ -33,6 +33,8 @@ typedef struct DetectionPostProcessParameter { bool use_regular_nms_; bool out_quantized_; + float *anchors_; + void *decoded_boxes_; void *nms_candidate_; void *selected_; diff --git a/mindspore/lite/nnacl/fp32/detection_post_process.c b/mindspore/lite/nnacl/fp32/detection_post_process.c index 9138dad24488647c525d5c686ea75b8ee7f8c005..34361075ad64188a3a25787db311e40a8c2c2337 100644 --- a/mindspore/lite/nnacl/fp32/detection_post_process.c +++ b/mindspore/lite/nnacl/fp32/detection_post_process.c @@ -44,15 +44,15 @@ float IntersectionOverUnion(const BboxCorner *a, const BboxCorner *b) { const float h = ymax - ymin > 0.0f ? ymax - ymin : 0.0f; const float w = xmax - xmin > 0.0f ? xmax - xmin : 0.0f; const float inter = h * w; - return inter / (area_a + area_b - inter + 1e-8); + return inter / (area_a + area_b - inter); } void DecodeBoxes(const int num_boxes, const float *input_boxes, const float *anchors, const BboxCenter scaler, float *decoded_boxes) { for (int i = 0; i < num_boxes; ++i) { - BboxCenter *box = (BboxCenter *)(input_boxes + i * 4); - BboxCenter *anchor = (BboxCenter *)(anchors + i * 4); - BboxCorner *decoded_box = (BboxCorner *)(decoded_boxes + i * 4); + BboxCenter *box = (BboxCenter *)(input_boxes) + i; + BboxCenter *anchor = (BboxCenter *)(anchors) + i; + BboxCorner *decoded_box = (BboxCorner *)(decoded_boxes) + i; float y_center = box->y / scaler.y * anchor->h + anchor->y; float x_center = box->x / scaler.x * anchor->w + anchor->x; float h_half = 0.5f * expf(box->h / scaler.h) * anchor->h; @@ -137,7 +137,7 @@ int NmsMultiClassesRegular(const int num_boxes, const int num_classes_with_bg, c const int class_index = score_with_index_all[i].index - box_index * num_classes_with_bg - first_class_index; *((BboxCorner *)(output_boxes) + i) = *((BboxCorner *)(decoded_boxes) + box_index); output_classes[i] = (float)class_index; - output_scores[i] = score_with_index_all[i].score;; + output_scores[i] = score_with_index_all[i].score; } else { ((BboxCorner *)(output_boxes) + i)->ymin = 0; ((BboxCorner *)(output_boxes) + i)->xmin = 0; diff --git a/mindspore/lite/src/runtime/kernel/arm/fp32/detection_post_process.cc b/mindspore/lite/src/runtime/kernel/arm/fp32/detection_post_process.cc index 87d3f6e4ef657f0d1e97c99626ce4311d2e9e45b..ce00fd3b7e91a04cd278c859777c8e5fbb8ff177 100644 --- a/mindspore/lite/src/runtime/kernel/arm/fp32/detection_post_process.cc +++ b/mindspore/lite/src/runtime/kernel/arm/fp32/detection_post_process.cc @@ -26,7 +26,32 @@ using mindspore::lite::RET_OK; using mindspore::schema::PrimitiveType_DetectionPostProcess; namespace mindspore::kernel { -int DetectionPostProcessCPUKernel::Init() { return RET_OK; } +int DetectionPostProcessCPUKernel::Init() { + MS_ASSERT(context_->allocator != nullptr); + auto anchor_tensor = in_tensors_.at(2); + DetectionPostProcessParameter *parameter = reinterpret_cast(op_parameter_); + if (anchor_tensor->data_type() == kNumberTypeUInt8) { + const auto quant_params = anchor_tensor->GetQuantParams(); + const double scale = quant_params.at(0).scale; + const int32_t zp = quant_params.at(0).zeroPoint; + auto anchor_uint8 = reinterpret_cast(anchor_tensor->Data()); + auto anchor_fp32 = + reinterpret_cast(context_->allocator->Malloc(anchor_tensor->ElementsNum() * sizeof(float))); + for (int i = 0; i < anchor_tensor->ElementsNum(); ++i) { + *(anchor_fp32 + i) = static_cast((static_cast(anchor_uint8[i]) - zp) * scale); + } + parameter->anchors_ = anchor_fp32; + } else if (anchor_tensor->data_type() == kNumberTypeFloat32) { + auto anchor_fp32 = reinterpret_cast(anchor_tensor->Data()); + for (int i = 0; i < anchor_tensor->ElementsNum(); ++i) { + parameter->anchors_[i] = anchor_fp32[i]; + } + } else { + MS_LOG(ERROR) << "unsupported anchor data type " << anchor_tensor->data_type(); + return RET_ERROR; + } + return RET_OK; +} int DetectionPostProcessCPUKernel::ReSize() { return RET_OK; } @@ -38,7 +63,6 @@ int DetectionPostProcessCPUKernel::Run() { } auto input_boxes = reinterpret_cast(in_tensors_.at(0)->Data()); auto input_scores = reinterpret_cast(in_tensors_.at(1)->Data()); - auto input_anchors = reinterpret_cast(in_tensors_.at(2)->Data()); // output_classes and output_num use float type now auto output_boxes = reinterpret_cast(out_tensors_.at(0)->Data()); @@ -61,7 +85,7 @@ int DetectionPostProcessCPUKernel::Run() { parameter->score_with_class_all_ = context_->allocator->Malloc((num_boxes * parameter->num_classes_) * sizeof(ScoreWithIndex)); } - DetectionPostProcess(num_boxes, num_classes_with_bg, input_boxes, input_scores, input_anchors, output_boxes, + DetectionPostProcess(num_boxes, num_classes_with_bg, input_boxes, input_scores, parameter->anchors_, output_boxes, output_classes, output_scores, output_num, parameter); context_->allocator->Free(parameter->decoded_boxes_); context_->allocator->Free(parameter->nms_candidate_); diff --git a/mindspore/lite/test/ut/src/runtime/kernel/arm/fp32/detection_post_process_test.cc b/mindspore/lite/test/ut/src/runtime/kernel/arm/fp32/detection_post_process_test.cc index 811744a1b7414de9beb1fcaba0ce71b8e53d20ce..782e01439c997e8e9eeb464aa038298dde3a6141 100644 --- a/mindspore/lite/test/ut/src/runtime/kernel/arm/fp32/detection_post_process_test.cc +++ b/mindspore/lite/test/ut/src/runtime/kernel/arm/fp32/detection_post_process_test.cc @@ -56,9 +56,13 @@ void DetectionPostProcessTestInit(std::vector *inputs_, std::string input_anchors_path = "./test_data/detectionPostProcess/input_anchors.bin"; size_t input_anchors_size; auto input_anchors_data = - reinterpret_cast(mindspore::lite::ReadFile(input_anchors_path.c_str(), &input_anchors_size)); + reinterpret_cast(mindspore::lite::ReadFile(input_anchors_path.c_str(), &input_anchors_size)); auto *input_anchors = new lite::tensor::Tensor; - input_anchors->set_data_type(kNumberTypeFloat32); + lite::tensor::QuantArg quant_arg; + quant_arg.zeroPoint = 0; + quant_arg.scale = 0.00645306; + input_anchors->AddQuantParam(quant_arg); + input_anchors->set_data_type(kNumberTypeUInt8); input_anchors->SetFormat(schema::Format_NHWC); input_anchors->set_shape({1917, 4}); input_anchors->MallocData(); diff --git a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_anchors.bin b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_anchors.bin index 5e381012a3f18c6a3746cae87f6c765adceaadaf..cc7f08325f0b96370f8032126d012fd10382bed8 100644 --- a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_anchors.bin +++ b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_anchors.bin @@ -1,381 +1 @@ -2t<2t<<=<=2t<2t<_>_>2t<2t<_>_>2t<&=<=<=2t<&=_>_>2t<&=_>_>2t<(><=<=2t<(>_>_>2t<(>_>_>2t<=<=2t_>_>2t_>_>2t<=<=2t_>_>2t_>_>2t<><=<=2t<>_>_>2t<>_>_>2t<9><=<=2t<9>_>_>2t<9>_>_>2t<><=<=2t<>_>_>2t<>_>_>2t<=<=2t_>_>2t_>_>2t<=<=2t_>_>2t_>_>2t<?<=<=2t<?_>_>2t<?_>_>2t_>2t_>2t<(?<=<=2t<(?_>_>2t<(?_>_>2t<۷5?<=<=2t<۷5?_>_>2t<۷5?_>_>2t<B?<=<=2t<B?_>_>2t<B?_>_>2t_>2t_>2t<_?<=<=2t<_?_>_>2t<_?_>_>2t<;l?<=<=2t<;l?_>_>2t<;l?_>_>2t<sy?<=<=2t<sy?_>_>2t<sy?_>_>&=2t<<=<=&=2t<_>_>&=2t<_>_>&=&=<=<=&=&=_>_>&=&=_>_>&=(><=<=&=(>_>_>&=(>_>_>&=M?><=<=&=M?>_>_>&=M?>_>_>&=Z~t><=<=&=Z~t>_>_>&=Z~t>_>_>&=><=<=&=>_>_>&=>_>_>&=9><=<=&=9>_>_>&=9>_>_>&=><=<=&=>_>_>&=>_>_>&=F><=<=&=F>_>_>&=F>_>_>&=g><=<=&=g>_>_>&=g>_>_>&=?<=<=&=?_>_>&=?_>_>&=UI?<=<=&=UI?_>_>&=UI?_>_>&=(?<=<=&=(?_>_>&=(?_>_>&=۷5?<=<=&=۷5?_>_>&=۷5?_>_>&=B?<=<=&=B?_>_>&=B?_>_>&=a&P?<=<=&=a&P?_>_>&=a&P?_>_>&=_?<=<=&=_?_>_>&=_?_>_>&=;l?<=<=&=;l?_>_>&=;l?_>_>&=sy?<=<=&=sy?_>_>&=sy?_>_>(>2t<<=<=(>2t<_>_>(>2t<_>_>(>&=<=<=(>&=_>_>(>&=_>_>(>(><=<=(>(>_>_>(>(>_>_>(>M?><=<=(>M?>_>_>(>M?>_>_>(>Z~t><=<=(>Z~t>_>_>(>Z~t>_>_>(>><=<=(>>_>_>(>>_>_>(>9><=<=(>9>_>_>(>9>_>_>(>><=<=(>>_>_>(>>_>_>(>F><=<=(>F>_>_>(>F>_>_>(>g><=<=(>g>_>_>(>g>_>_>(>?<=<=(>?_>_>(>?_>_>(>UI?<=<=(>UI?_>_>(>UI?_>_>(>(?<=<=(>(?_>_>(>(?_>_>(>۷5?<=<=(>۷5?_>_>(>۷5?_>_>(>B?<=<=(>B?_>_>(>B?_>_>(>a&P?<=<=(>a&P?_>_>(>a&P?_>_>(>_?<=<=(>_?_>_>(>_?_>_>(>;l?<=<=(>;l?_>_>(>;l?_>_>(>sy?<=<=(>sy?_>_>(>sy?_>_>M?>2t<<=<=M?>2t<_>_>M?>2t<_>_>M?>&=<=<=M?>&=_>_>M?>&=_>_>M?>(><=<=M?>(>_>_>M?>(>_>_>M?>M?><=<=M?>M?>_>_>M?>M?>_>_>M?>Z~t><=<=M?>Z~t>_>_>M?>Z~t>_>_>M?>><=<=M?>>_>_>M?>>_>_>M?>9><=<=M?>9>_>_>M?>9>_>_>M?>><=<=M?>>_>_>M?>>_>_>M?>F><=<=M?>F>_>_>M?>F>_>_>M?>g><=<=M?>g>_>_>M?>g>_>_>M?>?<=<=M?>?_>_>M?>?_>_>M?>UI?<=<=M?>UI?_>_>M?>UI?_>_>M?>(?<=<=M?>(?_>_>M?>(?_>_>M?>۷5?<=<=M?>۷5?_>_>M?>۷5?_>_>M?>B?<=<=M?>B?_>_>M?>B?_>_>M?>a&P?<=<=M?>a&P?_>_>M?>a&P?_>_>M?>_?<=<=M?>_?_>_>M?>_?_>_>M?>;l?<=<=M?>;l?_>_>M?>;l?_>_>M?>sy?<=<=M?>sy?_>_>M?>sy?_>_>Z~t>2t<<=<=Z~t>2t<_>_>Z~t>2t<_>_>Z~t>&=<=<=Z~t>&=_>_>Z~t>&=_>_>Z~t>(><=<=Z~t>(>_>_>Z~t>(>_>_>Z~t>M?><=<=Z~t>M?>_>_>Z~t>M?>_>_>Z~t>Z~t><=<=Z~t>Z~t>_>_>Z~t>Z~t>_>_>Z~t>><=<=Z~t>>_>_>Z~t>>_>_>Z~t>9><=<=Z~t>9>_>_>Z~t>9>_>_>Z~t>><=<=Z~t>>_>_>Z~t>>_>_>Z~t>F><=<=Z~t>F>_>_>Z~t>F>_>_>Z~t>g><=<=Z~t>g>_>_>Z~t>g>_>_>Z~t>?<=<=Z~t>?_>_>Z~t>?_>_>Z~t>UI?<=<=Z~t>UI?_>_>Z~t>UI?_>_>Z~t>(?<=<=Z~t>(?_>_>Z~t>(?_>_>Z~t>۷5?<=<=Z~t>۷5?_>_>Z~t>۷5?_>_>Z~t>B?<=<=Z~t>B?_>_>Z~t>B?_>_>Z~t>a&P?<=<=Z~t>a&P?_>_>Z~t>a&P?_>_>Z~t>_?<=<=Z~t>_?_>_>Z~t>_?_>_>Z~t>;l?<=<=Z~t>;l?_>_>Z~t>;l?_>_>Z~t>sy?<=<=Z~t>sy?_>_>Z~t>sy?_>_>>2t<<=<=>2t<_>_>>2t<_>_>>&=<=<=>&=_>_>>&=_>_>>(><=<=>(>_>_>>(>_>_>>M?><=<=>M?>_>_>>M?>_>_>>Z~t><=<=>Z~t>_>_>>Z~t>_>_>>><=<=>>_>_>>>_>_>>9><=<=>9>_>_>>9>_>_>>><=<=>>_>_>>>_>_>>F><=<=>F>_>_>>F>_>_>>g><=<=>g>_>_>>g>_>_>>?<=<=>?_>_>>?_>_>>UI?<=<=>UI?_>_>>UI?_>_>>(?<=<=>(?_>_>>(?_>_>>۷5?<=<=>۷5?_>_>>۷5?_>_>>B?<=<=>B?_>_>>B?_>_>>a&P?<=<=>a&P?_>_>>a&P?_>_>>_?<=<=>_?_>_>>_?_>_>>;l?<=<=>;l?_>_>>;l?_>_>>sy?<=<=>sy?_>_>>sy?_>_>9>2t<<=<=9>2t<_>_>9>2t<_>_>9>&=<=<=9>&=_>_>9>&=_>_>9>(><=<=9>(>_>_>9>(>_>_>9>M?><=<=9>M?>_>_>9>M?>_>_>9>Z~t><=<=9>Z~t>_>_>9>Z~t>_>_>9>><=<=9>>_>_>9>>_>_>9>9><=<=9>9>_>_>9>9>_>_>9>><=<=9>>_>_>9>>_>_>9>F><=<=9>F>_>_>9>F>_>_>9>g><=<=9>g>_>_>9>g>_>_>9>?<=<=9>?_>_>9>?_>_>9>UI?<=<=9>UI?_>_>9>UI?_>_>9>(?<=<=9>(?_>_>9>(?_>_>9>۷5?<=<=9>۷5?_>_>9>۷5?_>_>9>B?<=<=9>B?_>_>9>B?_>_>9>a&P?<=<=9>a&P?_>_>9>a&P?_>_>9>_?<=<=9>_?_>_>9>_?_>_>9>;l?<=<=9>;l?_>_>9>;l?_>_>9>sy?<=<=9>sy?_>_>9>sy?_>_>>2t<<=<=>2t<_>_>>2t<_>_>>&=<=<=>&=_>_>>&=_>_>>(><=<=>(>_>_>>(>_>_>>M?><=<=>M?>_>_>>M?>_>_>>Z~t><=<=>Z~t>_>_>>Z~t>_>_>>><=<=>>_>_>>>_>_>>9><=<=>9>_>_>>9>_>_>>><=<=>>_>_>>>_>_>>F><=<=>F>_>_>>F>_>_>>g><=<=>g>_>_>>g>_>_>>?<=<=>?_>_>>?_>_>>UI?<=<=>UI?_>_>>UI?_>_>>(?<=<=>(?_>_>>(?_>_>>۷5?<=<=>۷5?_>_>>۷5?_>_>>B?<=<=>B?_>_>>B?_>_>>a&P?<=<=>a&P?_>_>>a&P?_>_>>_?<=<=>_?_>_>>_?_>_>>;l?<=<=>;l?_>_>>;l?_>_>>sy?<=<=>sy?_>_>>sy?_>_>F>2t<<=<=F>2t<_>_>F>2t<_>_>F>&=<=<=F>&=_>_>F>&=_>_>F>(><=<=F>(>_>_>F>(>_>_>F>M?><=<=F>M?>_>_>F>M?>_>_>F>Z~t><=<=F>Z~t>_>_>F>Z~t>_>_>F>><=<=F>>_>_>F>>_>_>F>9><=<=F>9>_>_>F>9>_>_>F>><=<=F>>_>_>F>>_>_>F>F><=<=F>F>_>_>F>F>_>_>F>g><=<=F>g>_>_>F>g>_>_>F>?<=<=F>?_>_>F>?_>_>F>UI?<=<=F>UI?_>_>F>UI?_>_>F>(?<=<=F>(?_>_>F>(?_>_>F>۷5?<=<=F>۷5?_>_>F>۷5?_>_>F>B?<=<=F>B?_>_>F>B?_>_>F>a&P?<=<=F>a&P?_>_>F>a&P?_>_>F>_?<=<=F>_?_>_>F>_?_>_>F>;l?<=<=F>;l?_>_>F>;l?_>_>F>sy?<=<=F>sy?_>_>F>sy?_>_>g>2t<<=<=g>2t<_>_>g>2t<_>_>g>&=<=<=g>&=_>_>g>&=_>_>g>(><=<=g>(>_>_>g>(>_>_>g>M?><=<=g>M?>_>_>g>M?>_>_>g>Z~t><=<=g>Z~t>_>_>g>Z~t>_>_>g>><=<=g>>_>_>g>>_>_>g>9><=<=g>9>_>_>g>9>_>_>g>><=<=g>>_>_>g>>_>_>g>F><=<=g>F>_>_>g>F>_>_>g>g><=<=g>g>_>_>g>g>_>_>g>?<=<=g>?_>_>g>?_>_>g>UI?<=<=g>UI?_>_>g>UI?_>_>g>(?<=<=g>(?_>_>g>(?_>_>g>۷5?<=<=g>۷5?_>_>g>۷5?_>_>g>B?<=<=g>B?_>_>g>B?_>_>g>a&P?<=<=g>a&P?_>_>g>a&P?_>_>g>_?<=<=g>_?_>_>g>_?_>_>g>;l?<=<=g>;l?_>_>g>;l?_>_>g>sy?<=<=g>sy?_>_>g>sy?_>_>?2t<<=<=?2t<_>_>?2t<_>_>?&=<=<=?&=_>_>?&=_>_>?(><=<=?(>_>_>?(>_>_>?M?><=<=?M?>_>_>?M?>_>_>?Z~t><=<=?Z~t>_>_>?Z~t>_>_>?><=<=?>_>_>?>_>_>?9><=<=?9>_>_>?9>_>_>?><=<=?>_>_>?>_>_>?F><=<=?F>_>_>?F>_>_>?g><=<=?g>_>_>?g>_>_>??<=<=??_>_>??_>_>?UI?<=<=?UI?_>_>?UI?_>_>?(?<=<=?(?_>_>?(?_>_>?۷5?<=<=?۷5?_>_>?۷5?_>_>?B?<=<=?B?_>_>?B?_>_>?a&P?<=<=?a&P?_>_>?a&P?_>_>?_?<=<=?_?_>_>?_?_>_>?;l?<=<=?;l?_>_>?;l?_>_>?sy?<=<=?sy?_>_>?sy?_>_>UI?2t<<=<=UI?2t<_>_>UI?2t<_>_>UI?&=<=<=UI?&=_>_>UI?&=_>_>UI?(><=<=UI?(>_>_>UI?(>_>_>UI?M?><=<=UI?M?>_>_>UI?M?>_>_>UI?Z~t><=<=UI?Z~t>_>_>UI?Z~t>_>_>UI?><=<=UI?>_>_>UI?>_>_>UI?9><=<=UI?9>_>_>UI?9>_>_>UI?><=<=UI?>_>_>UI?>_>_>UI?F><=<=UI?F>_>_>UI?F>_>_>UI?g><=<=UI?g>_>_>UI?g>_>_>UI??<=<=UI??_>_>UI??_>_>UI?UI?<=<=UI?UI?_>_>UI?UI?_>_>UI?(?<=<=UI?(?_>_>UI?(?_>_>UI?۷5?<=<=UI?۷5?_>_>UI?۷5?_>_>UI?B?<=<=UI?B?_>_>UI?B?_>_>UI?a&P?<=<=UI?a&P?_>_>UI?a&P?_>_>UI?_?<=<=UI?_?_>_>UI?_?_>_>UI?;l?<=<=UI?;l?_>_>UI?;l?_>_>UI?sy?<=<=UI?sy?_>_>UI?sy?_>_>(?2t<<=<=(?2t<_>_>(?2t<_>_>(?&=<=<=(?&=_>_>(?&=_>_>(?(><=<=(?(>_>_>(?(>_>_>(?M?><=<=(?M?>_>_>(?M?>_>_>(?Z~t><=<=(?Z~t>_>_>(?Z~t>_>_>(?><=<=(?>_>_>(?>_>_>(?9><=<=(?9>_>_>(?9>_>_>(?><=<=(?>_>_>(?>_>_>(?F><=<=(?F>_>_>(?F>_>_>(?g><=<=(?g>_>_>(?g>_>_>(??<=<=(??_>_>(??_>_>(?UI?<=<=(?UI?_>_>(?UI?_>_>(?(?<=<=(?(?_>_>(?(?_>_>(?۷5?<=<=(?۷5?_>_>(?۷5?_>_>(?B?<=<=(?B?_>_>(?B?_>_>(?a&P?<=<=(?a&P?_>_>(?a&P?_>_>(?_?<=<=(?_?_>_>(?_?_>_>(?;l?<=<=(?;l?_>_>(?;l?_>_>(?sy?<=<=(?sy?_>_>(?sy?_>_>۷5?2t<<=<=۷5?2t<_>_>۷5?2t<_>_>۷5?&=<=<=۷5?&=_>_>۷5?&=_>_>۷5?(><=<=۷5?(>_>_>۷5?(>_>_>۷5?M?><=<=۷5?M?>_>_>۷5?M?>_>_>۷5?Z~t><=<=۷5?Z~t>_>_>۷5?Z~t>_>_>۷5?><=<=۷5?>_>_>۷5?>_>_>۷5?9><=<=۷5?9>_>_>۷5?9>_>_>۷5?><=<=۷5?>_>_>۷5?>_>_>۷5?F><=<=۷5?F>_>_>۷5?F>_>_>۷5?g><=<=۷5?g>_>_>۷5?g>_>_>۷5??<=<=۷5??_>_>۷5??_>_>۷5?UI?<=<=۷5?UI?_>_>۷5?UI?_>_>۷5?(?<=<=۷5?(?_>_>۷5?(?_>_>۷5?۷5?<=<=۷5?۷5?_>_>۷5?۷5?_>_>۷5?B?<=<=۷5?B?_>_>۷5?B?_>_>۷5?a&P?<=<=۷5?a&P?_>_>۷5?a&P?_>_>۷5?_?<=<=۷5?_?_>_>۷5?_?_>_>۷5?;l?<=<=۷5?;l?_>_>۷5?;l?_>_>۷5?sy?<=<=۷5?sy?_>_>۷5?sy?_>_>B?2t<<=<=B?2t<_>_>B?2t<_>_>B?&=<=<=B?&=_>_>B?&=_>_>B?(><=<=B?(>_>_>B?(>_>_>B?M?><=<=B?M?>_>_>B?M?>_>_>B?Z~t><=<=B?Z~t>_>_>B?Z~t>_>_>B?><=<=B?>_>_>B?>_>_>B?9><=<=B?9>_>_>B?9>_>_>B?><=<=B?>_>_>B?>_>_>B?F><=<=B?F>_>_>B?F>_>_>B?g><=<=B?g>_>_>B?g>_>_>B??<=<=B??_>_>B??_>_>B?UI?<=<=B?UI?_>_>B?UI?_>_>B?(?<=<=B?(?_>_>B?(?_>_>B?۷5?<=<=B?۷5?_>_>B?۷5?_>_>B?B?<=<=B?B?_>_>B?B?_>_>B?a&P?<=<=B?a&P?_>_>B?a&P?_>_>B?_?<=<=B?_?_>_>B?_?_>_>B?;l?<=<=B?;l?_>_>B?;l?_>_>B?sy?<=<=B?sy?_>_>B?sy?_>_>a&P?2t<<=<=a&P?2t<_>_>a&P?2t<_>_>a&P?&=<=<=a&P?&=_>_>a&P?&=_>_>a&P?(><=<=a&P?(>_>_>a&P?(>_>_>a&P?M?><=<=a&P?M?>_>_>a&P?M?>_>_>a&P?Z~t><=<=a&P?Z~t>_>_>a&P?Z~t>_>_>a&P?><=<=a&P?>_>_>a&P?>_>_>a&P?9><=<=a&P?9>_>_>a&P?9>_>_>a&P?><=<=a&P?>_>_>a&P?>_>_>a&P?F><=<=a&P?F>_>_>a&P?F>_>_>a&P?g><=<=a&P?g>_>_>a&P?g>_>_>a&P??<=<=a&P??_>_>a&P??_>_>a&P?UI?<=<=a&P?UI?_>_>a&P?UI?_>_>a&P?(?<=<=a&P?(?_>_>a&P?(?_>_>a&P?۷5?<=<=a&P?۷5?_>_>a&P?۷5?_>_>a&P?B?<=<=a&P?B?_>_>a&P?B?_>_>a&P?a&P?<=<=a&P?a&P?_>_>a&P?a&P?_>_>a&P?_?<=<=a&P?_?_>_>a&P?_?_>_>a&P?;l?<=<=a&P?;l?_>_>a&P?;l?_>_>a&P?sy?<=<=a&P?sy?_>_>a&P?sy?_>_>_?2t<<=<=_?2t<_>_>_?2t<_>_>_?&=<=<=_?&=_>_>_?&=_>_>_?(><=<=_?(>_>_>_?(>_>_>_?M?><=<=_?M?>_>_>_?M?>_>_>_?Z~t><=<=_?Z~t>_>_>_?Z~t>_>_>_?><=<=_?>_>_>_?>_>_>_?9><=<=_?9>_>_>_?9>_>_>_?><=<=_?>_>_>_?>_>_>_?F><=<=_?F>_>_>_?F>_>_>_?g><=<=_?g>_>_>_?g>_>_>_??<=<=_??_>_>_??_>_>_?UI?<=<=_?UI?_>_>_?UI?_>_>_?(?<=<=_?(?_>_>_?(?_>_>_?۷5?<=<=_?۷5?_>_>_?۷5?_>_>_?B?<=<=_?B?_>_>_?B?_>_>_?a&P?<=<=_?a&P?_>_>_?a&P?_>_>_?_?<=<=_?_?_>_>_?_?_>_>_?;l?<=<=_?;l?_>_>_?;l?_>_>_?sy?<=<=_?sy?_>_>_?sy?_>_>;l?2t<<=<=;l?2t<_>_>;l?2t<_>_>;l?&=<=<=;l?&=_>_>;l?&=_>_>;l?(><=<=;l?(>_>_>;l?(>_>_>;l?M?><=<=;l?M?>_>_>;l?M?>_>_>;l?Z~t><=<=;l?Z~t>_>_>;l?Z~t>_>_>;l?><=<=;l?>_>_>;l?>_>_>;l?9><=<=;l?9>_>_>;l?9>_>_>;l?><=<=;l?>_>_>;l?>_>_>;l?F><=<=;l?F>_>_>;l?F>_>_>;l?g><=<=;l?g>_>_>;l?g>_>_>;l??<=<=;l??_>_>;l??_>_>;l?UI?<=<=;l?UI?_>_>;l?UI?_>_>;l?(?<=<=;l?(?_>_>;l?(?_>_>;l?۷5?<=<=;l?۷5?_>_>;l?۷5?_>_>;l?B?<=<=;l?B?_>_>;l?B?_>_>;l?a&P?<=<=;l?a&P?_>_>;l?a&P?_>_>;l?_?<=<=;l?_?_>_>;l?_?_>_>;l?;l?<=<=;l?;l?_>_>;l?;l?_>_>;l?sy?<=<=;l?sy?_>_>;l?sy?_>_>sy?2t<<=<=sy?2t<_>_>sy?2t<_>_>sy?&=<=<=sy?&=_>_>sy?&=_>_>sy?(><=<=sy?(>_>_>sy?(>_>_>sy?M?><=<=sy?M?>_>_>sy?M?>_>_>sy?Z~t><=<=sy?Z~t>_>_>sy?Z~t>_>_>sy?><=<=sy?>_>_>sy?>_>_>sy?9><=<=sy?9>_>_>sy?9>_>_>sy?><=<=sy?>_>_>sy?>_>_>sy?F><=<=sy?F>_>_>sy?F>_>_>sy?g><=<=sy?g>_>_>sy?g>_>_>sy??<=<=sy??_>_>sy??_>_>sy?UI?<=<=sy?UI?_>_>sy?UI?_>_>sy?(?<=<=sy?(?_>_>sy?(?_>_>sy?۷5?<=<=sy?۷5?_>_>sy?۷5?_>_>sy?B?<=<=sy?B?_>_>sy?B?_>_>sy?a&P?<=<=sy?a&P?_>_>sy?a&P?_>_>sy?_?<=<=sy?_?_>_>sy?_?_>_>sy?;l?<=<=sy?;l?_>_>sy?;l?_>_>sy?sy?<=<=sy?sy?_>_>sy?sy?_>_>2tS=2tS= -j> -j>2tS=2tS={>g>2tS=2tS=g>{>2tS=2tS=L>UI?2tS=2tS=UI?L>2tS=2tS=>>2tS=> -j> -j>2tS=>{>g>2tS=>g>{>2tS=>L>UI?2tS=>UI?L>2tS=>>>2tS=ڀ> -j> -j>2tS=ڀ>{>g>2tS=ڀ>g>{>2tS=ڀ>L>UI?2tS=ڀ>UI?L>2tS=ڀ>>>2tS= -j> -j> -j>2tS= -j>{>g>2tS= -j>g>{>2tS= -j>L>UI?2tS= -j>UI?L>2tS= -j>>>2tS=G> -j> -j>2tS=G>{>g>2tS=G>g>{>2tS=G>L>UI?2tS=G>UI?L>2tS=G>>>2tS=)k ? -j> -j>2tS=)k ?{>g>2tS=)k ?g>{>2tS=)k ?L>UI?2tS=)k ?UI?L>2tS=)k ?>>2tS=&? -j> -j>2tS=&?{>g>2tS=&?g>{>2tS=&?L>UI?2tS=&?UI?L>2tS=&?>>2tS=M?? -j> -j>2tS=M??{>g>2tS=M??g>{>2tS=M??L>UI?2tS=M??UI?L>2tS=M??>>2tS=Z? -j> -j>2tS=Z?{>g>2tS=Z?g>{>2tS=Z?L>UI?2tS=Z?UI?L>2tS=Z?>>2tS=qr? -j> -j>2tS=qr?{>g>2tS=qr?g>{>2tS=qr?L>UI?2tS=qr?UI?L>2tS=qr?>>>2tS= -j> -j>>2tS={>g>>2tS=g>{>>2tS=L>UI?>2tS=UI?L>>2tS=>>>> -j> -j>>>{>g>>>g>{>>>L>UI?>>UI?L>>>>>>ڀ> -j> -j>>ڀ>{>g>>ڀ>g>{>>ڀ>L>UI?>ڀ>UI?L>>ڀ>>>> -j> -j> -j>> -j>{>g>> -j>g>{>> -j>L>UI?> -j>UI?L>> -j>>>>G> -j> -j>>G>{>g>>G>g>{>>G>L>UI?>G>UI?L>>G>>>>)k ? -j> -j>>)k ?{>g>>)k ?g>{>>)k ?L>UI?>)k ?UI?L>>)k ?>>>&? -j> -j>>&?{>g>>&?g>{>>&?L>UI?>&?UI?L>>&?>>>M?? -j> -j>>M??{>g>>M??g>{>>M??L>UI?>M??UI?L>>M??>>>Z? -j> -j>>Z?{>g>>Z?g>{>>Z?L>UI?>Z?UI?L>>Z?>>>qr? -j> -j>>qr?{>g>>qr?g>{>>qr?L>UI?>qr?UI?L>>qr?>>ڀ>2tS= -j> -j>ڀ>2tS={>g>ڀ>2tS=g>{>ڀ>2tS=L>UI?ڀ>2tS=UI?L>ڀ>2tS=>>ڀ>> -j> -j>ڀ>>{>g>ڀ>>g>{>ڀ>>L>UI?ڀ>>UI?L>ڀ>>>>ڀ>ڀ> -j> -j>ڀ>ڀ>{>g>ڀ>ڀ>g>{>ڀ>ڀ>L>UI?ڀ>ڀ>UI?L>ڀ>ڀ>>>ڀ> -j> -j> -j>ڀ> -j>{>g>ڀ> -j>g>{>ڀ> -j>L>UI?ڀ> -j>UI?L>ڀ> -j>>>ڀ>G> -j> -j>ڀ>G>{>g>ڀ>G>g>{>ڀ>G>L>UI?ڀ>G>UI?L>ڀ>G>>>ڀ>)k ? -j> -j>ڀ>)k ?{>g>ڀ>)k ?g>{>ڀ>)k ?L>UI?ڀ>)k ?UI?L>ڀ>)k ?>>ڀ>&? -j> -j>ڀ>&?{>g>ڀ>&?g>{>ڀ>&?L>UI?ڀ>&?UI?L>ڀ>&?>>ڀ>M?? -j> -j>ڀ>M??{>g>ڀ>M??g>{>ڀ>M??L>UI?ڀ>M??UI?L>ڀ>M??>>ڀ>Z? -j> -j>ڀ>Z?{>g>ڀ>Z?g>{>ڀ>Z?L>UI?ڀ>Z?UI?L>ڀ>Z?>>ڀ>qr? -j> -j>ڀ>qr?{>g>ڀ>qr?g>{>ڀ>qr?L>UI?ڀ>qr?UI?L>ڀ>qr?>> -j>2tS= -j> -j> -j>2tS={>g> -j>2tS=g>{> -j>2tS=L>UI? -j>2tS=UI?L> -j>2tS=>> -j>> -j> -j> -j>>{>g> -j>>g>{> -j>>L>UI? -j>>UI?L> -j>>>> -j>ڀ> -j> -j> -j>ڀ>{>g> -j>ڀ>g>{> -j>ڀ>L>UI? -j>ڀ>UI?L> -j>ڀ>>> -j> -j> -j> -j> -j> -j>{>g> -j> -j>g>{> -j> -j>L>UI? -j> -j>UI?L> -j> -j>>> -j>G> -j> -j> -j>G>{>g> -j>G>g>{> -j>G>L>UI? -j>G>UI?L> -j>G>>> -j>)k ? -j> -j> -j>)k ?{>g> -j>)k ?g>{> -j>)k ?L>UI? -j>)k ?UI?L> -j>)k ?>> -j>&? -j> -j> -j>&?{>g> -j>&?g>{> -j>&?L>UI? -j>&?UI?L> -j>&?>> -j>M?? -j> -j> -j>M??{>g> -j>M??g>{> -j>M??L>UI? -j>M??UI?L> -j>M??>> -j>Z? -j> -j> -j>Z?{>g> -j>Z?g>{> -j>Z?L>UI? -j>Z?UI?L> -j>Z?>> -j>qr? -j> -j> -j>qr?{>g> -j>qr?g>{> -j>qr?L>UI? -j>qr?UI?L> -j>qr?>>G>2tS= -j> -j>G>2tS={>g>G>2tS=g>{>G>2tS=L>UI?G>2tS=UI?L>G>2tS=>>G>> -j> -j>G>>{>g>G>>g>{>G>>L>UI?G>>UI?L>G>>>>G>ڀ> -j> -j>G>ڀ>{>g>G>ڀ>g>{>G>ڀ>L>UI?G>ڀ>UI?L>G>ڀ>>>G> -j> -j> -j>G> -j>{>g>G> -j>g>{>G> -j>L>UI?G> -j>UI?L>G> -j>>>G>G> -j> -j>G>G>{>g>G>G>g>{>G>G>L>UI?G>G>UI?L>G>G>>>G>)k ? -j> -j>G>)k ?{>g>G>)k ?g>{>G>)k ?L>UI?G>)k ?UI?L>G>)k ?>>G>&? -j> -j>G>&?{>g>G>&?g>{>G>&?L>UI?G>&?UI?L>G>&?>>G>M?? -j> -j>G>M??{>g>G>M??g>{>G>M??L>UI?G>M??UI?L>G>M??>>G>Z? -j> -j>G>Z?{>g>G>Z?g>{>G>Z?L>UI?G>Z?UI?L>G>Z?>>G>qr? -j> -j>G>qr?{>g>G>qr?g>{>G>qr?L>UI?G>qr?UI?L>G>qr?>>)k ?2tS= -j> -j>)k ?2tS={>g>)k ?2tS=g>{>)k ?2tS=L>UI?)k ?2tS=UI?L>)k ?2tS=>>)k ?> -j> -j>)k ?>{>g>)k ?>g>{>)k ?>L>UI?)k ?>UI?L>)k ?>>>)k ?ڀ> -j> -j>)k ?ڀ>{>g>)k ?ڀ>g>{>)k ?ڀ>L>UI?)k ?ڀ>UI?L>)k ?ڀ>>>)k ? -j> -j> -j>)k ? -j>{>g>)k ? -j>g>{>)k ? -j>L>UI?)k ? -j>UI?L>)k ? -j>>>)k ?G> -j> -j>)k ?G>{>g>)k ?G>g>{>)k ?G>L>UI?)k ?G>UI?L>)k ?G>>>)k ?)k ? -j> -j>)k ?)k ?{>g>)k ?)k ?g>{>)k ?)k ?L>UI?)k ?)k ?UI?L>)k ?)k ?>>)k ?&? -j> -j>)k ?&?{>g>)k ?&?g>{>)k ?&?L>UI?)k ?&?UI?L>)k ?&?>>)k ?M?? -j> -j>)k ?M??{>g>)k ?M??g>{>)k ?M??L>UI?)k ?M??UI?L>)k ?M??>>)k ?Z? -j> -j>)k ?Z?{>g>)k ?Z?g>{>)k ?Z?L>UI?)k ?Z?UI?L>)k ?Z?>>)k ?qr? -j> -j>)k ?qr?{>g>)k ?qr?g>{>)k ?qr?L>UI?)k ?qr?UI?L>)k ?qr?>>&?2tS= -j> -j>&?2tS={>g>&?2tS=g>{>&?2tS=L>UI?&?2tS=UI?L>&?2tS=>>&?> -j> -j>&?>{>g>&?>g>{>&?>L>UI?&?>UI?L>&?>>>&?ڀ> -j> -j>&?ڀ>{>g>&?ڀ>g>{>&?ڀ>L>UI?&?ڀ>UI?L>&?ڀ>>>&? -j> -j> -j>&? -j>{>g>&? -j>g>{>&? -j>L>UI?&? -j>UI?L>&? -j>>>&?G> -j> -j>&?G>{>g>&?G>g>{>&?G>L>UI?&?G>UI?L>&?G>>>&?)k ? -j> -j>&?)k ?{>g>&?)k ?g>{>&?)k ?L>UI?&?)k ?UI?L>&?)k ?>>&?&? -j> -j>&?&?{>g>&?&?g>{>&?&?L>UI?&?&?UI?L>&?&?>>&?M?? -j> -j>&?M??{>g>&?M??g>{>&?M??L>UI?&?M??UI?L>&?M??>>&?Z? -j> -j>&?Z?{>g>&?Z?g>{>&?Z?L>UI?&?Z?UI?L>&?Z?>>&?qr? -j> -j>&?qr?{>g>&?qr?g>{>&?qr?L>UI?&?qr?UI?L>&?qr?>>M??2tS= -j> -j>M??2tS={>g>M??2tS=g>{>M??2tS=L>UI?M??2tS=UI?L>M??2tS=>>M??> -j> -j>M??>{>g>M??>g>{>M??>L>UI?M??>UI?L>M??>>>M??ڀ> -j> -j>M??ڀ>{>g>M??ڀ>g>{>M??ڀ>L>UI?M??ڀ>UI?L>M??ڀ>>>M?? -j> -j> -j>M?? -j>{>g>M?? -j>g>{>M?? -j>L>UI?M?? -j>UI?L>M?? -j>>>M??G> -j> -j>M??G>{>g>M??G>g>{>M??G>L>UI?M??G>UI?L>M??G>>>M??)k ? -j> -j>M??)k ?{>g>M??)k ?g>{>M??)k ?L>UI?M??)k ?UI?L>M??)k ?>>M??&? -j> -j>M??&?{>g>M??&?g>{>M??&?L>UI?M??&?UI?L>M??&?>>M??M?? -j> -j>M??M??{>g>M??M??g>{>M??M??L>UI?M??M??UI?L>M??M??>>M??Z? -j> -j>M??Z?{>g>M??Z?g>{>M??Z?L>UI?M??Z?UI?L>M??Z?>>M??qr? -j> -j>M??qr?{>g>M??qr?g>{>M??qr?L>UI?M??qr?UI?L>M??qr?>>Z?2tS= -j> -j>Z?2tS={>g>Z?2tS=g>{>Z?2tS=L>UI?Z?2tS=UI?L>Z?2tS=>>Z?> -j> -j>Z?>{>g>Z?>g>{>Z?>L>UI?Z?>UI?L>Z?>>>Z?ڀ> -j> -j>Z?ڀ>{>g>Z?ڀ>g>{>Z?ڀ>L>UI?Z?ڀ>UI?L>Z?ڀ>>>Z? -j> -j> -j>Z? -j>{>g>Z? -j>g>{>Z? -j>L>UI?Z? -j>UI?L>Z? -j>>>Z?G> -j> -j>Z?G>{>g>Z?G>g>{>Z?G>L>UI?Z?G>UI?L>Z?G>>>Z?)k ? -j> -j>Z?)k ?{>g>Z?)k ?g>{>Z?)k ?L>UI?Z?)k ?UI?L>Z?)k ?>>Z?&? -j> -j>Z?&?{>g>Z?&?g>{>Z?&?L>UI?Z?&?UI?L>Z?&?>>Z?M?? -j> -j>Z?M??{>g>Z?M??g>{>Z?M??L>UI?Z?M??UI?L>Z?M??>>Z?Z? -j> -j>Z?Z?{>g>Z?Z?g>{>Z?Z?L>UI?Z?Z?UI?L>Z?Z?>>Z?qr? -j> -j>Z?qr?{>g>Z?qr?g>{>Z?qr?L>UI?Z?qr?UI?L>Z?qr?>>qr?2tS= -j> -j>qr?2tS={>g>qr?2tS=g>{>qr?2tS=L>UI?qr?2tS=UI?L>qr?2tS=>>qr?> -j> -j>qr?>{>g>qr?>g>{>qr?>L>UI?qr?>UI?L>qr?>>>qr?ڀ> -j> -j>qr?ڀ>{>g>qr?ڀ>g>{>qr?ڀ>L>UI?qr?ڀ>UI?L>qr?ڀ>>>qr? -j> -j> -j>qr? -j>{>g>qr? -j>g>{>qr? -j>L>UI?qr? -j>UI?L>qr? -j>>>qr?G> -j> -j>qr?G>{>g>qr?G>g>{>qr?G>L>UI?qr?G>UI?L>qr?G>>>qr?)k ? -j> -j>qr?)k ?{>g>qr?)k ?g>{>qr?)k ?L>UI?qr?)k ?UI?L>qr?)k ?>>qr?&? -j> -j>qr?&?{>g>qr?&?g>{>qr?&?L>UI?qr?&?UI?L>qr?&?>>qr?M?? -j> -j>qr?M??{>g>qr?M??g>{>qr?M??L>UI?qr?M??UI?L>qr?M??>>qr?Z? -j> -j>qr?Z?{>g>qr?Z?g>{>qr?Z?L>UI?qr?Z?UI?L>qr?Z?>>qr?qr? -j> -j>qr?qr?{>g>qr?qr?g>{>qr?qr?L>UI?qr?qr?UI?L>qr?qr?>><=<=g>g><=<=۷>۷5?<=<=۷5?۷><=<=>]]?<=<=]]?><=<=_?_?<=>g>g><=>۷>۷5?<=>۷5?۷><=>>]]?<=>]]?><=>_?_?<=g>g>g><=g>۷>۷5?<=g>۷5?۷><=g>>]]?<=g>]]?><=g>_?_?<= -j2?g>g><= -j2?۷>۷5?<= -j2?۷5?۷><= -j2?>]]?<= -j2?]]?><= -j2?_?_?<=.e?g>g><=.e?۷>۷5?<=.e?۷5?۷><=.e?>]]?<=.e?]]?><=.e?_?_?><=g>g>><=۷>۷5?><=۷5?۷>><=>]]?><=]]?>><=_?_?>>g>g>>>۷>۷5?>>۷5?۷>>>>]]?>>]]?>>>_?_?>g>g>g>>g>۷>۷5?>g>۷5?۷>>g>>]]?>g>]]?>>g>_?_?> -j2?g>g>> -j2?۷>۷5?> -j2?۷5?۷>> -j2?>]]?> -j2?]]?>> -j2?_?_?>.e?g>g>>.e?۷>۷5?>.e?۷5?۷>>.e?>]]?>.e?]]?>>.e?_?_?g><=g>g>g><=۷>۷5?g><=۷5?۷>g><=>]]?g><=]]?>g><=_?_?g>>g>g>g>>۷>۷5?g>>۷5?۷>g>>>]]?g>>]]?>g>>_?_?g>g>g>g>g>g>۷>۷5?g>g>۷5?۷>g>g>>]]?g>g>]]?>g>g>_?_?g> -j2?g>g>g> -j2?۷>۷5?g> -j2?۷5?۷>g> -j2?>]]?g> -j2?]]?>g> -j2?_?_?g>.e?g>g>g>.e?۷>۷5?g>.e?۷5?۷>g>.e?>]]?g>.e?]]?>g>.e?_?_? -j2?<=g>g> -j2?<=۷>۷5? -j2?<=۷5?۷> -j2?<=>]]? -j2?<=]]?> -j2?<=_?_? -j2?>g>g> -j2?>۷>۷5? -j2?>۷5?۷> -j2?>>]]? -j2?>]]?> -j2?>_?_? -j2?g>g>g> -j2?g>۷>۷5? -j2?g>۷5?۷> -j2?g>>]]? -j2?g>]]?> -j2?g>_?_? -j2? -j2?g>g> -j2? -j2?۷>۷5? -j2? -j2?۷5?۷> -j2? -j2?>]]? -j2? -j2?]]?> -j2? -j2?_?_? -j2?.e?g>g> -j2?.e?۷>۷5? -j2?.e?۷5?۷> -j2?.e?>]]? -j2?.e?]]?> -j2?.e?_?_?.e?<=g>g>.e?<=۷>۷5?.e?<=۷5?۷>.e?<=>]]?.e?<=]]?>.e?<=_?_?.e?>g>g>.e?>۷>۷5?.e?>۷5?۷>.e?>>]]?.e?>]]?>.e?>_?_?.e?g>g>g>.e?g>۷>۷5?.e?g>۷5?۷>.e?g>>]]?.e?g>]]?>.e?g>_?_?.e? -j2?g>g>.e? -j2?۷>۷5?.e? -j2?۷5?۷>.e? -j2?>]]?.e? -j2?]]?>.e? -j2?_?_?.e?.e?g>g>.e?.e?۷>۷5?.e?.e?۷5?۷>.e?.e?>]]?.e?.e?]]?>.e?.e?_?_?i+>i+>&?&?i+>i+>>j?i+>i+>j?>i+>i+>M>?i+>i+>?M>i+>i+>9?9?i+>g>&?&?i+>g>>j?i+>g>j?>i+>g>M>?i+>g>?M>i+>g>9?9?i+>U?&?&?i+>U?>j?i+>U?j?>i+>U?M>?i+>U??M>i+>U?9?9?g>i+>&?&?g>i+>>j?g>i+>j?>g>i+>M>?g>i+>?M>g>i+>9?9?g>g>&?&?g>g>>j?g>g>j?>g>g>M>?g>g>?M>g>g>9?9?g>U?&?&?g>U?>j?g>U?j?>g>U?M>?g>U??M>g>U?9?9?U?i+>&?&?U?i+>>j?U?i+>j?>U?i+>M>?U?i+>?M>U?i+>9?9?U?g>&?&?U?g>>j?U?g>j?>U?g>M>?U?g>?M>U?g>9?9?U?U?&?&?U?U?>j?U?U?j?>U?U?M>?U?U??M>U?U?9?9?ڀ>ڀ>L?L?ڀ>ڀ>_?n?ڀ>ڀ>n?_?ڀ>ڀ>>?ڀ>ڀ>?>ڀ>ڀ>_?_?ڀ>M??L?L?ڀ>M??_?n?ڀ>M??n?_?ڀ>M??>?ڀ>M???>ڀ>M??_?_?M??ڀ>L?L?M??ڀ>_?n?M??ڀ>n?_?M??ڀ>>?M??ڀ>?>M??ڀ>_?_?M??M??L?L?M??M??_?n?M??M??n?_?M??M??>?M??M???>M??M??_?_?g>g>qr?qr?g>g>i+?iΫ?g>g>iΫ?i+?g>g>)k ??g>g>?)k ?g>g>sy?sy? \ No newline at end of file +,,  , ,,,,,%%,%,--,-,55,5,==,=,EE,E,MM,M,VV,V,^^,^,ff,f,nn,n,vv,v,~~,~,,,,,,,  , ,  , ,  , ,  , , % %, %, - -, -, 5 5, 5, = =, =, E E, E, M M, M, V V, V, ^ ^, ^, f f, f, n n, n, v v, v, ~ ~, ~,  , ,  , ,  , ,,,  , ,,,,,%%,%,--,-,55,5,==,=,EE,E,MM,M,VV,V,^^,^,ff,f,nn,n,vv,v,~~,~,,,,,,,,,  , ,,,,,%%,%,--,-,55,5,==,=,EE,E,MM,M,VV,V,^^,^,ff,f,nn,n,vv,v,~~,~,,,,,,,%%,%,% % ,% ,%%,%,%%,%,%%%%,%%,%-%-,%-,%5%5,%5,%=%=,%=,%E%E,%E,%M%M,%M,%V%V,%V,%^%^,%^,%f%f,%f,%n%n,%n,%v%v,%v,%~%~,%~,%%,%,%%,%,%%,%,--,-,- - ,- ,--,-,--,-,-%-%,-%,----,--,-5-5,-5,-=-=,-=,-E-E,-E,-M-M,-M,-V-V,-V,-^-^,-^,-f-f,-f,-n-n,-n,-v-v,-v,-~-~,-~,--,-,--,-,--,-,55,5,5 5 ,5 ,55,5,55,5,5%5%,5%,5-5-,5-,5555,55,5=5=,5=,5E5E,5E,5M5M,5M,5V5V,5V,5^5^,5^,5f5f,5f,5n5n,5n,5v5v,5v,5~5~,5~,55,5,55,5,55,5,==,=,= = ,= ,==,=,==,=,=%=%,=%,=-=-,=-,=5=5,=5,====,==,=E=E,=E,=M=M,=M,=V=V,=V,=^=^,=^,=f=f,=f,=n=n,=n,=v=v,=v,=~=~,=~,==,=,==,=,==,=,EE,E,E E ,E ,EE,E,EE,E,E%E%,E%,E-E-,E-,E5E5,E5,E=E=,E=,EEEE,EE,EMEM,EM,EVEV,EV,E^E^,E^,EfEf,Ef,EnEn,En,EvEv,Ev,E~E~,E~,EE,E,EE,E,EE,E,MM,M,M M ,M ,MM,M,MM,M,M%M%,M%,M-M-,M-,M5M5,M5,M=M=,M=,MEME,ME,MMMM,MM,MVMV,MV,M^M^,M^,MfMf,Mf,MnMn,Mn,MvMv,Mv,M~M~,M~,MM,M,MM,M,MM,M,VV,V,V V ,V ,VV,V,VV,V,V%V%,V%,V-V-,V-,V5V5,V5,V=V=,V=,VEVE,VE,VMVM,VM,VVVV,VV,V^V^,V^,VfVf,Vf,VnVn,Vn,VvVv,Vv,V~V~,V~,VV,V,VV,V,VV,V,^^,^,^ ^ ,^ ,^^,^,^^,^,^%^%,^%,^-^-,^-,^5^5,^5,^=^=,^=,^E^E,^E,^M^M,^M,^V^V,^V,^^^^,^^,^f^f,^f,^n^n,^n,^v^v,^v,^~^~,^~,^^,^,^^,^,^^,^,ff,f,f f ,f ,ff,f,ff,f,f%f%,f%,f-f-,f-,f5f5,f5,f=f=,f=,fEfE,fE,fMfM,fM,fVfV,fV,f^f^,f^,ffff,ff,fnfn,fn,fvfv,fv,f~f~,f~,ff,f,ff,f,ff,f,nn,n,n n ,n ,nn,n,nn,n,n%n%,n%,n-n-,n-,n5n5,n5,n=n=,n=,nEnE,nE,nMnM,nM,nVnV,nV,n^n^,n^,nfnf,nf,nnnn,nn,nvnv,nv,n~n~,n~,nn,n,nn,n,nn,n,vv,v,v v ,v ,vv,v,vv,v,v%v%,v%,v-v-,v-,v5v5,v5,v=v=,v=,vEvE,vE,vMvM,vM,vVvV,vV,v^v^,v^,vfvf,vf,vnvn,vn,vvvv,vv,v~v~,v~,vv,v,vv,v,vv,v,~~,~,~ ~ ,~ ,~~,~,~~,~,~%~%,~%,~-~-,~-,~5~5,~5,~=~=,~=,~E~E,~E,~M~M,~M,~V~V,~V,~^~^,~^,~f~f,~f,~n~n,~n,~v~v,~v,~~~~,~~,~~,~,~~,~,~~,~,,,  , ,,,,,%%,%,--,-,55,5,==,=,EE,E,MM,M,VV,V,^^,^,ff,f,nn,n,vv,v,~~,~,,,,,,,,,  , ,,,,,%%,%,--,-,55,5,==,=,EE,E,MM,M,VV,V,^^,^,ff,f,nn,n,vv,v,~~,~,,,,,,,,,  , ,,,,,%%,%,--,-,55,5,==,=,EE,E,MM,M,VV,V,^^,^,ff,f,nn,n,vv,v,~~,~,,,,,,,66&MM&^^AA66&MM&^^AA'66'&M'M&'^'^'AA6666&M6M&6^6^6AAF66F&MFM&F^F^FAAU66U&MUM&U^U^UAAe66e&MeM&e^e^eAAt66t&MtM&t^t^tAA66&MM&^^AA66&MM&^^AA66&MM&^^AA66&MM&^^AA'66'&M'M&'^'^'AA6666&M6M&6^6^6AAF66F&MFM&F^F^FAAU66U&MUM&U^U^UAAe66e&MeM&e^e^eAAt66t&MtM&t^t^tAA66&MM&^^AA66&MM&^^AA'66'&M'M&'^'^'AA'66'&M'M&'^'^'AA''66''&M''M&''^''^''AA'666'6&M'6M&'6^'6^'6AA'F66'F&M'FM&'F^'F^'FAA'U66'U&M'UM&'U^'U^'UAA'e66'e&M'eM&'e^'e^'eAA't66't&M'tM&'t^'t^'tAA'66'&M'M&'^'^'AA'66'&M'M&'^'^'AA6666&M6M&6^6^6AA6666&M6M&6^6^6AA6'666'&M6'M&6'^6'^6'AA666666&M66M&66^66^66AA6F666F&M6FM&6F^6F^6FAA6U666U&M6UM&6U^6U^6UAA6e666e&M6eM&6e^6e^6eAA6t666t&M6tM&6t^6t^6tAA6666&M6M&6^6^6AA6666&M6M&6^6^6AAF66F&MFM&F^F^FAAF66F&MFM&F^F^FAAF'66F'&MF'M&F'^F'^F'AAF666F6&MF6M&F6^F6^F6AAFF66FF&MFFM&FF^FF^FFAAFU66FU&MFUM&FU^FU^FUAAFe66Fe&MFeM&Fe^Fe^FeAAFt66Ft&MFtM&Ft^Ft^FtAAF66F&MFM&F^F^FAAF66F&MFM&F^F^FAAU66U&MUM&U^U^UAAU66U&MUM&U^U^UAAU'66U'&MU'M&U'^U'^U'AAU666U6&MU6M&U6^U6^U6AAUF66UF&MUFM&UF^UF^UFAAUU66UU&MUUM&UU^UU^UUAAUe66Ue&MUeM&Ue^Ue^UeAAUt66Ut&MUtM&Ut^Ut^UtAAU66U&MUM&U^U^UAAU66U&MUM&U^U^UAAe66e&MeM&e^e^eAAe66e&MeM&e^e^eAAe'66e'&Me'M&e'^e'^e'AAe666e6&Me6M&e6^e6^e6AAeF66eF&MeFM&eF^eF^eFAAeU66eU&MeUM&eU^eU^eUAAee66ee&MeeM&ee^ee^eeAAet66et&MetM&et^et^etAAe66e&MeM&e^e^eAAe66e&MeM&e^e^eAAt66t&MtM&t^t^tAAt66t&MtM&t^t^tAAt'66t'&Mt'M&t'^t'^t'AAt666t6&Mt6M&t6^t6^t6AAtF66tF&MtFM&tF^tF^tFAAtU66tU&MtUM&tU^tU^tUAAte66te&MteM&te^te^teAAtt66tt&MttM&tt^tt^ttAAt66t&MtM&t^t^tAAt66t&MtM&t^t^tAA66&MM&^^AA66&MM&^^AA'66'&M'M&'^'^'AA6666&M6M&6^6^6AAF66F&MFM&F^F^FAAU66U&MUM&U^U^UAAe66e&MeM&e^e^eAAt66t&MtM&t^t^tAA66&MM&^^AA66&MM&^^AA66&MM&^^AA66&MM&^^AA'66'&M'M&'^'^'AA6666&M6M&6^6^6AAF66F&MFM&F^F^FAAU66U&MUM&U^U^UAAe66e&MeM&e^e^eAAt66t&MtM&t^t^tAA66&MM&^^AA66&MM&^^AAMM7nn7--XX.MM.7n.n7.-.-.XXMMMM7nMn7M-M-MXXlMMl7nln7l-l-lXXMM7nn7--XX.MM.7n.n7.-.-.XX..MM..7n..n7..-..-..XX.MMM.M7n.Mn7.M-.M-.MXX.lMM.l7n.ln7.l-.l-.lXX.MM.7n.n7.-.-.XXMMMM7nMn7M-M-MXXM.MMM.7nM.n7M.-M.-M.XXMMMMMM7nMMn7MM-MM-MMXXMlMMMl7nMln7Ml-Ml-MlXXMMMM7nMn7M-M-MXXlMMl7nln7l-l-lXXl.MMl.7nl.n7l.-l.-l.XXlMMMlM7nlMn7lM-lM-lMXXllMMll7nlln7ll-ll-llXXlMMl7nln7l-l-lXXMM7nn7--XX.MM.7n.n7.-.-.XXMMMM7nMn7M-M-MXXlMMl7nln7l-l-lXXMM7nn7--XXeeGG::ppMeeMGMGM:M:MppeeGG::ppMeeMGMGM:M:MppMMeeMMGMMGMM:MM:MMppMeeMGMGM:M:MppeeGG::ppMeeMGMGM:M:MppeeGG::pp''||''X''X''H''H'''t||'tX'tX'tH'tH'tt'||t'Xt'Xt'Ht'Ht'tt||ttXttXttHttHttMMMMhMMhMMUMMUMM \ No newline at end of file diff --git a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_boxes.bin b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_boxes.bin index 1562a7b123ace6d8f3adcb68293c0976e0fde808..307e7d9d59ef6fb724bc3a17207d3fdd4fbc0c89 100644 Binary files a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_boxes.bin and b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_boxes.bin differ diff --git a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_scores.bin b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_scores.bin index ea01f9481e23b6ba0a9a11e0c8beec17ed88326a..7b98de009c8a29ce719c86c4b25278fb1f1fa5ad 100644 Binary files a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_scores.bin and b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/input_scores.bin differ diff --git a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_0.bin b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_0.bin index 52e05299d1fd7356fdd69d704ebee153e5537ead..78f44fc3c2fdd5fe07c8ad928bae18cb187d1d8e 100644 Binary files a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_0.bin and b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_0.bin differ diff --git a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_1.bin b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_1.bin index f052fd7f28d79f0a9e23717a27a87a991c955bef..0e7b7f638e926277b989d31c7de719b72abd1b49 100644 Binary files a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_1.bin and b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_1.bin differ diff --git a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_2.bin b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_2.bin index 42b1161c06d78cd981380949a5a1ca1a3326aef0..2573e53e228d481d66d6a50a7d64e28d832c9228 100644 Binary files a/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_2.bin and b/mindspore/lite/test/ut/src/runtime/kernel/arm/test_data/detectionPostProcess/output_2.bin differ