chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 13:33:03 +08:00
commit 5b57521aa1
8226 changed files with 3425766 additions and 0 deletions
@@ -0,0 +1,76 @@
//
// Detection_PostProcessTf.cpp
// MNNConverter
//
// Created by MNN on b'2019/11/21'.
// Copyright © 2018, Alibaba Group Holding Limited
//
#include <stdio.h>
//
// Detection_PostProcessTf.cpp
// MNNConverter
//
// Created by MNN on 2019/11/21.
// Copyright © 2018, Alibaba Group Holding Limited
//
#include "TfUtils.hpp"
#include "tfOpConverter.hpp"
#include "graph.pb.h"
DECLARE_OP_CONVERTER(Detection_PostProcessTf);
MNN::OpType Detection_PostProcessTf::opType(){
return MNN::OpType_DetectionPostProcess;
}
MNN::OpParameter Detection_PostProcessTf::type(){
return MNN::OpParameter_DetectionPostProcessParam;
}
void Detection_PostProcessTf::run(MNN::OpT *dstOp, TmpNode *srcNode){
auto postProcessParam = new MNN::DetectionPostProcessParamT;
tensorflow::AttrValue value;
if(find_attr_value(srcNode->tfNode, "max_detections", value)){
postProcessParam->maxDetections = value.i();
}
if(find_attr_value(srcNode->tfNode, "max_classes_per_detection", value)){
postProcessParam->maxClassesPerDetection = value.i();
}
if(find_attr_value(srcNode->tfNode, "detections_per_class", value)){
postProcessParam->detectionsPerClass = value.i();
}
if(find_attr_value(srcNode->tfNode, "use_regular_nms", value)){
postProcessParam->useRegularNMS = value.b();
}
if(find_attr_value(srcNode->tfNode, "nms_score_threshold", value)){
postProcessParam->nmsScoreThreshold = value.f();
}
if(find_attr_value(srcNode->tfNode, "nms_iou_threshold", value)){
postProcessParam->iouThreshold = value.f();
}
if(find_attr_value(srcNode->tfNode, "num_classes", value)){
postProcessParam->numClasses = value.i();
}
if(find_attr_value(srcNode->tfNode, "y_scale", value)){
postProcessParam->centerSizeEncoding.push_back(value.f());
}
if(find_attr_value(srcNode->tfNode, "x_scale", value)){
postProcessParam->centerSizeEncoding.push_back(value.f());
}
if(find_attr_value(srcNode->tfNode, "h_scale", value)){
postProcessParam->centerSizeEncoding.push_back(value.f());
}
if(find_attr_value(srcNode->tfNode, "w_scale", value)){
postProcessParam->centerSizeEncoding.push_back(value.f());
}
dstOp->main.value = postProcessParam;
// Detection_PostProcessTf output 4 tensors
dstOp->outputIndexes = {-1, -1, -1, -1};
}
REGISTER_CONVERTER(Detection_PostProcessTf, TFLite_Detection_PostProcess);