TUN模式下无法连接互联网/无互联网访问权限

1.环境:

  • Windows11
  • clash系
  • TUN模式

2.表现:

3.解决方案

  1. 网上的 【属性】【共享】勾选【允许其他网络用户通过此计算机。。。。。来连接】,然后再取消勾选。 此方案我测试确实可行,但每次都过于麻烦了。
  2. 个人实测 开启【移动热点】再关闭【移动热点】也可以解决此问题。 因此,我写了一个可执行文件(.exe)来自动化的执行此过程,只需双击此可执行文件即可。 如果你非常懒,也可以把此可执行文件设置成 在代理软件启动之后执行。
  3. 具体过程:
    1. 开启代理软件(可设置成开机自启)
    2. 双击此可执行文件(可设置成关联启动)
    3. 开启TUN模式

总结:你只需手动开启TUN模式即可(在全部设置成自启动的情况下)。具体为什么会导致这种情况,俺还是不得而知,若有大佬,还请赐教哇!!!!

若有想用俺写的简陋无比的自动工具的朋友,可以直接找我要...................

### 使用 ONNX Runtime 进行语义分割推理及加载模型 #### 安装依赖库 为了在 C++ 环境下使用 ONNX Runtime 推理自定义模型,需先安装必要的开发环境和第三方库。确保已配置好 Visual Studio 开发环境并安装了 ONNX Runtime 和 OpenCV 库。 对于 ONNX Runtime 的安装,在 VS 中可以通过 NuGet Package Manager 来完成 nupkg 文件的安装[^1]。而对于 OpenCV,则建议下载预编译版本或自行编译以匹配项目的架构需求。 #### 加载 ONNX 模型 要实现基于 ONNX Runtime 的语义分割任务,核心在于正确初始化 Session 并设置输入张量形状与数据类型: ```cpp #include "onnxruntime_cxx_api.h" // ...其他必要头文件... Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "SemanticSegmentation"); Ort::SessionOptions session_options; session_options.SetIntraOpNumThreads(1); session_options.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_EXTENDED); std::vector<const char*> model_paths{"model.onnx"}; Ort::Session session(env, model_paths.data(), session_options); ``` 上述代码片段展示了创建 `Ort::Env` 对象来管理全局资源,并通过指定路径加载训练好的 `.onnx` 模型文件到内存中的过程[^2]。 #### 准备输入图像 由于大多数深度学习框架接受的数据格式为 NCHW (batch size × channels × height × width),因此需要对原始图片进行适当处理使其符合预期输入尺寸: ```cpp cv::Mat img = cv::imread(image_path); // 读取待预测的RGB图 if(img.empty()){ throw std::invalid_argument("Unable to read image file."); } // 将BGR转成RGB通道顺序 cv::cvtColor(img, img, CV_BGR2RGB); float scale_factor = 1./255.; img.convertTo(img, CV_32F, scale_factor); // Resize input tensor according to the required shape of your network. cv::resize(img, img, cv::Size(input_width, input_height)); // HWC -> CHW cv::dnn::blobFromImage(img, blob_img); ``` 这段程序负责将标准 RGB 图像转换为目标网络所需的浮点数矩阵形式,并调整大小至固定宽高比例以便后续计算。 #### 执行推理操作 准备好输入 Tensor 后就可以调用 Run 方法执行前向传播运算获取输出特征映射: ```cpp auto allocator_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault); // Prepare inputs and outputs vectors... std::vector<Ort::Value> ort_inputs; ort_inputs.push_back(Ort::Value::CreateTensor<float>(allocator_info, reinterpret_cast<float*>(blob_img.ptr()), num_elements, &input_dims[0], dims_size)); std::vector<std::string> output_names{output_name}; auto result = session.Run(Ort::RunOptions{nullptr}, &input_names_[0], ort_inputs.data(), static_cast<size_t>(ort_inputs.size()), output_names.data(), output_names.size()); const float* prediction_data = result.front().GetTensorMutableData<float>(); ``` 此部分实现了从准备输入张量到最后接收分类概率得分的过程,其中涉及到了 ORT API 提供的各种辅助函数用于简化编程工作流。 #### 处理解析结果 最后一步是对得到的结果数组按照特定规则解析回可视化表示,通常情况下会应用 argmax 或 softmax 函数找出最可能类别标签对应的位置索引作为最终决策依据;之后再利用这些信息绘制边界框或者着色区域突出显示目标物体所在位置。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值