onnx 模型加密与解密部署运行

1.这里主要介绍onnx在c++环境下的加密和解密部署。一般的onnx文件加载方式在onnxruntime下是:

 

    env = Ort::Env(OrtLoggingLevel::ORT_LOGGING_LEVEL_WARNING, "YOLOV8");
    sessionOptions = Ort::SessionOptions();
    std::wstring w_modelPath = charToWstring(mnnModelPath.c_str());
    session = Ort::Session(env, w_modelPath.c_str(), sessionOptions);

        这里的文件路径是宽字节的,通过onnx文件直接加载模型。加密模型的部署的主要思路是读取加密模型文件---->解密加密模型---->将明文onnx内容传给onnx API函数加载,使用的函数如下:

session = Ort::Session(env, decrypted, length,sessionOptions);

        Ort::Session这个函数是一个参数重载函数,可以传递文件路径,或者传递模型文件内存空间地址和空间长度。

         所以文件的加密方式可以自己定,能够解密出onnx明文就可以,将这个文件内存传给Ort::Session即可。

2.opencv  dnn加载加密的onnx文件方式和onnxruntime是类似的,但是要注意的是dnn的cv::dnn::readNetFromONNX函数读取的是多字节格式,一定要注意。

net = cv::dnn::readNetFromONNX(decrypted,length);

其中:

decrypted  是解密后的多字节格式的onnx文件内存地址

length 是onnx文件内容长度

你可能感兴趣的:(AI,人工智能)