tools/converter/source/caffe/Python.cpp (45 lines of code) (raw):
//
// Python.cpp
// MNNConverter
//
// Created by MNN on 2019/01/31.
// Copyright © 2018, Alibaba Group Holding Limited
//
#include <string.h>
#include "OpConverter.hpp"
using namespace std;
class Python : public OpConverter {
public:
virtual void run(MNN::OpT* dstOp, const caffe::LayerParameter& parameters, const caffe::LayerParameter& weight);
virtual MNN::OpType opType() {
return MNN::OpType_Proposal;
}
virtual MNN::OpParameter type() {
return MNN::OpParameter_Proposal;
}
};
void Python::run(MNN::OpT* dstOp, const caffe::LayerParameter& parameters, const caffe::LayerParameter& weight) {
auto proposal = new MNN::ProposalT;
auto Par = parameters.python_param();
if (!Par.has_param_str()) {
proposal->featStride = 16;
} else {
const string& StrideStr = Par.param_str();
const string numb = StrideStr.substr(StrideStr.find(':') + 1);
proposal->featStride = (int)atof(numb.c_str());
}
proposal->baseSize = 8;
proposal->preNmsTopN = 300;
proposal->afterNmsTopN = 32;
proposal->nmsThreshold = 0.7f;
proposal->minSize = 3;
proposal->ratios = std::unique_ptr<MNN::BlobT>(new MNN::BlobT);
proposal->ratios->dataType = MNN::DataType_DT_FLOAT;
proposal->ratios->float32s.resize(3);
proposal->ratios->float32s[0] = 0.5f;
proposal->ratios->float32s[1] = 1.0f;
proposal->ratios->float32s[2] = 2.0f;
proposal->ratios->dims.push_back(3);
proposal->scales = std::unique_ptr<MNN::BlobT>(new MNN::BlobT);
proposal->scales->dataType = MNN::DataType_DT_FLOAT;
proposal->scales->float32s.resize(3);
proposal->scales->float32s[0] = 8.0f;
proposal->scales->float32s[1] = 16.0f;
proposal->scales->float32s[2] = 32.0f;
proposal->scales->dims.push_back(3);
dstOp->main.value = proposal;
}
static OpConverterRegister<Python> a("Python");