[C++]yolov8的onnx模型加密方法保护自己模型和版权

本文介绍了如何对Yolov8的ONNX模型进行加密,以增强其机密性和完整性,包括密码加密、哈希函数和数字签名等方法。同时,讨论了加密对性能的影响及在实际应用中的权衡。提供了一个C++示例代码和相关资源链接。
摘要由CSDN通过智能技术生成

【官方框架地址】

https://github.com/ultralytics/ultralytics
【算法介绍】

Yolov8 是一种先进的对象检测模型,基于深度学习技术,广泛应用于计算机视觉任务。它使用 ONNX(Open Neural Network Exchange)格式,使得模型在不同的深度学习框架之间具有更好的互操作性。然而,直接使用 ONNX 格式的模型存在一定的安全隐患,因此对模型进行加密就显得尤为重要。

对 Yolov8 的 ONNX 模型进行加密,主要是为了保护模型的机密性和完整性,防止未经授权的访问和使用。常见的加密方法包括使用密码加密、哈希函数、数字签名等技术。这些方法可以在模型传输、存储和使用过程中提供一定的安全保障。

具体来说,当模型需要从一个环境传输到另一个环境时,可以使用密码加密的方式对模型进行加密,确保模型在传输过程中的安全。在模型存储时,可以使用哈希函数和数字签名等技术,验证模型的完整性和来源,防止模型被篡改或替换。在使用模型时,可以通过身份验证和访问控制等机制,确保只有经过授权的人员才能访问和使用模型。

需要注意的是,对 Yolov8 的 ONNX 模型进行加密可能会对模型的性能产生一定的影响。因此,在选择加密方法时,需要根据实际需求和场景进行权衡,尽可能地平衡安全性和性能的需求。

总之,对 Yolov8 的 ONNX 模型进行加密是一个重要的安全措施,可以有效地保护模型的机密性和完整性,防止未经授权的访问和使用。在选择加密方法时,需要根据实际需求和场景进行权衡,尽可能地平衡安全性和性能的需求。

对于onnx加密我们采用对称加密方式,采用二进制加密除非有密钥否则很难被破解,这样可以使我们的花费大量人力和物力以及成本得到安全保障。
【效果展示】

加密后缀为yolov8.firc您可以改成任何后缀不影响模型


【实现部分代码】

#include <iostream>
#include <opencv2/opencv.hpp>

#include <math.h>
#include "yolov8_onnx.h"
#include "OnnxEncry.h"
#include <time.h>

using namespace std;
using namespace cv;
using namespace dnn;



int main()
{

    string img_path = "C:\\Users\\Administrator\\Desktop\\yolov8-onnxruntime-encry\\x64\\Debug\\zidane.jpg";
    string model_path = "C:\\Users\\Administrator\\Desktop\\yolov8-onnxruntime-encry\\x64\\Debug\\\\yolov8s.onnx";
    string encode_path = "C:\\Users\\Administrator\\Desktop\\yolov8-onnxruntime-encry\\x64\\Debug\\yolov8s.firc";
 /*   OnnxEncry oe;
    oe.EncryOnnx(model_path,encode_path);
    return 0;*/
    Mat img = imread(img_path);
    Yolov8Onnx det;
    det.ReadModelEncode(encode_path, false);
    vector<Scalar> color;
    srand(time(0));
    for (int i = 0; i < 80; i++)
    {
        int b = rand() % 256;
        int g = rand() % 256;
        int r = rand() % 256;
        color.push_back(Scalar(b, g, r));
    }
    vector<OutputSeg> result;
    if (det.OnnxDetect(img, result))
    {
        DrawPred(img, result, det._className, color);
    }
    else
    {
        cout << "Detect nothing!" << endl;
    }

    return 0;
}


【视频演示】

https://www.bilibili.com/video/BV1jw41177mQ/
【源码下载】

https://download.csdn.net/download/FL1623863129/88784066
【测试环境】

 vs2019,onnxruntime==1.12.0,opencv==4.7.0

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
ONNX Runtime是一个开源的深度学习推理库,可用于在多个平台上运行深度学习模型。要使用ONNX Runtime C读取YoloV8 ONNX模型,需要执行以下步骤: 1. 安装ONNX Runtime C库:首先,您需要在您的项目中安装ONNX Runtime C库。您可以在ONNX Runtime的官方GitHub页面上找到相关文档和指南,以了解如何安装和配置ONNX Runtime C库。 2. 下载YoloV8 ONNX模型:您需要从合适的来源(例如Darknet官方网站)下载YoloV8ONNX模型文件。 3. 加载ONNX模型:使用ONNX Runtime C库中的函数,您可以加载已下载的YoloV8 ONNX模型。此过程将创建一个ONNX模型实例,该实例包含了模型的结构和权重。 4. 配置和运行模型:使用ONNX Runtime C库中提供的功能,您可以配置模型的输入和输出参数。在此步骤中,您将定义输入张量(如图像)的形状和数据类型,并创建输出张量以存储模型的预测结果。 5. 输入数据:将待处理的图像数据加载到输入张量中。确保输入数据与模型所需的形状和数据类型相匹配。 6. 运行模型:使用ONNX Runtime C库中的函数,您可以运行加载的YoloV8 ONNX模型,将输入张量传递给模型,并获得输出张量。 7. 处理输出结果:根据YoloV8模型的输出,您可以解析和处理返回的输出张量,以获得所需的对象检测结果。 通过遵循上述步骤,您可以使用ONNX Runtime C库读取YoloV8 ONNX模型,并进行对象检测。请记住,具体的实现细节可能会因您选择的开发环境和工具而有所不同,建议阅读ONNX Runtime C库的官方文档,以了解更多细节和示例代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值