当前位置: 首页 > news >正文

wordpress主题演示数据库广州seo排名优化服务

wordpress主题演示数据库,广州seo排名优化服务,湖南学校网站建设,做视频搬运哪个网站最赚钱前言 想做一个目标旋转角度检测的工程,但是网上多少python的,或者linux的。在win10 visual 2022移植部署,记录一下。 参考 这篇文章没有C win10 环境下的部署教程,我相对于是对此做了补充。 1、下载工程 https://github.com/sh…

前言

想做一个目标旋转角度检测的工程,但是网上多少python的,或者linux的。在win10+ visual 2022移植部署,记录一下。
参考 这篇文章没有C++ win10 环境下的部署教程,我相对于是对此做了补充。

1、下载工程

https://github.com/shouxieai/tensorRT_Pro

2 模型导出

  1. 在 ultralytics/engine/exporter.py 文件中改动一处
    在这里插入图片描述
# output_names = ["output0", "output1"] if isinstance(self.model, SegmentationModel) else ["output0"]
# dynamic = self.args.dynamic
# if dynamic:
#     dynamic = {"images": {0: "batch", 2: "height", 3: "width"}}  # shape(1,3,640,640)
#     if isinstance(self.model, SegmentationModel):
#         dynamic["output0"] = {0: "batch", 2: "anchors"}  # shape(1, 116, 8400)
#         dynamic["output1"] = {0: "batch", 2: "mask_height", 3: "mask_width"}  # shape(1,32,160,160)
#     elif isinstance(self.model, DetectionModel):
#         dynamic["output0"] = {0: "batch", 2: "anchors"}  # shape(1, 84, 8400)
# ========== exporter.py ==========
output_names = ['output0', 'output1'] if isinstance(self.model, SegmentationModel) else ['output']
dynamic = self.args.dynamic
if dynamic:dynamic = {'images': {0: 'batch'}}  # shape(1,3,640,640)if isinstance(self.model, SegmentationModel):dynamic['output0'] = {0: 'batch', 2: 'anchors'}  # shape(1, 116, 8400)dynamic['output1'] = {0: 'batch', 2: 'mask_height', 3: 'mask_width'}  # shape(1,32,160,160)elif isinstance(self.model, DetectionModel):dynamic['output'] = {0: 'batch'}  # shape(1, 84, 8400)
  1. 在 ultralytics/nn/modules/head.py 文件中改动一处
    在这里插入图片描述
def forward(self, x):"""Concatenates and returns predicted bounding boxes and class probabilities."""bs = x[0].shape[0]  # batch sizeangle = torch.cat([self.cv4[i](x[i]).view(bs, self.ne, -1) for i in range(self.nl)], 2)  # OBB theta logits# NOTE: set `angle` as an attribute so that `decode_bboxes` could use it.angle = (angle.sigmoid() - 0.25) * math.pi  # [-pi/4, 3pi/4]# angle = angle.sigmoid() * math.pi / 2  # [0, pi/2]if not self.training:self.angle = anglex = Detect.forward(self, x)if self.training:return x, angle#return torch.cat([x, angle], 1) if self.export else (torch.cat([x[0], angle], 1), (x[1], angle))return torch.cat([x, angle], 1).permute(0, 2, 1) if self.export else (torch.cat([x[0], angle], 1), (x[1], angle))

在终端执行如下指令即可完成 onnx 导出:

from ultralytics import YOLOmodel = YOLO("yolov8_obb_zwc_0918.pt")success = model.export(format="onnx", dynamic=True, simplify=True)

在这里插入图片描述

3 C++

修改一个简单的测试测序,在原工程app_yolo_obb.cpp 的基础上修改如下

#include "trt_builder.hpp"
#include <trt_infer.hpp>
#include <ilogger.hpp>
#include "yolo_obb.hpp"
static const char* dotalabels[] = {"0topleft", "1topright", "2downleft", "3downright", "4top","5right", "6down", "7left", "bridge", "large vehicle","small vehicle", "helicopter", "roundabout", "soccer ball field", "swimming pool"
};
using namespace std;
static vector<cv::Point> xywhr2xyxyxyxy(const YoloOBB::Box& box) {float cos_value = std::cos(box.angle);float sin_value = std::sin(box.angle);float w_2 = box.width / 2, h_2 = box.height / 2;float vec1_x = w_2 * cos_value, vec1_y = w_2 * sin_value;float vec2_x = -h_2 * sin_value, vec2_y = h_2 * cos_value;vector<cv::Point> corners;corners.push_back(cv::Point(box.center_x + vec1_x + vec2_x, box.center_y + vec1_y + vec2_y));corners.push_back(cv::Point(box.center_x + vec1_x - vec2_x, box.center_y + vec1_y - vec2_y));corners.push_back(cv::Point(box.center_x - vec1_x - vec2_x, box.center_y - vec1_y - vec2_y));corners.push_back(cv::Point(box.center_x - vec1_x + vec2_x, box.center_y - vec1_y + vec2_y));return corners;
}
static void test_single_image() {//    //----initialauto engine = YoloOBB::create_infer("E:***.trt",            // engine file0,                                      // gpu id0.25f,                                  // confidence threshold0.45f,                                  // nms thresholdYoloOBB::NMSMethod::FastGPU,            // NMS method, fast GPU / CPU1024,                                   // max objectsfalse                                   // preprocess use multi stream);if (engine == nullptr) {INFOE("Engine is nullptr");return;}//auto files = iLogger::find_files("IMG", "*.jpg;*.jpeg;*.png;*.gif;*.tif");vector<cv::Mat> images;for (int i = 0; i < files.size(); ++i) {auto image = cv::imread(files[i]);images.emplace_back(image);}//for (auto& img : images)//{//    cv::imshow("src", img);//    cv::waitKey(0);//}for(auto &img:images){cv::Mat image=img ;if (image.empty()) {INFOE("Image is empty");return;}auto boxes = engine->commit(image).get();for (auto& obj : boxes) {uint8_t b, g, r;tie(b, g, r) = iLogger::random_color(obj.class_label);auto corners = xywhr2xyxyxyxy(obj);cv::polylines(image, vector<vector<cv::Point>>{corners}, true, cv::Scalar(b, g, r), 2, 16);auto name = dotalabels[obj.class_label];auto caption = iLogger::format("%s %.2f", name, obj.confidence);int width = cv::getTextSize(caption, 0, 1, 2, nullptr).width + 10;cv::rectangle(image, cv::Point(corners[0].x - 3, corners[0].y - 33), cv::Point(corners[0].x - 3 + width, corners[0].y), cv::Scalar(b, g, r), -1);cv::putText(image, caption, cv::Point(corners[0].x - 3, corners[0].y - 5), 0, 1, cv::Scalar::all(0), 2, 16);}INFO("Save to Result.jpg, %d objects", boxes.size());cv::imwrite("Result.jpg", image);cv::imshow("result", image);cv::waitKey(0);}engine.reset();  
}
int main() {test_single_image();return 0;
}

3.1 工程下IMG 文件夹结构(你要测试的图片集合)

在这里插入图片描述

3.2 所需要的CPP

在这里插入图片描述

3.3 编译& 添加头文件

在这里插入图片描述

在这里插入图片描述

3.3 .cu的文件需要设置CUDA C/C++ 编译类型

在这里插入图片描述

4 结果

在这里插入图片描述

在这里插入图片描述

5 PS

Cuda 、cudnn 、OpenCV,的配置可以自行百度or参考我的往期文章https://blog.csdn.net/qq_36784503/article/details/138597169


文章转载自:
http://wanjiabitch.bbtn.cn
http://wanjiathoracal.bbtn.cn
http://wanjialarvikite.bbtn.cn
http://wanjiaagronomist.bbtn.cn
http://wanjiaholoblastically.bbtn.cn
http://wanjiashapelessly.bbtn.cn
http://wanjiastew.bbtn.cn
http://wanjiaepidermolysis.bbtn.cn
http://wanjiaruffian.bbtn.cn
http://wanjiasideroblast.bbtn.cn
http://wanjiauglifier.bbtn.cn
http://wanjiasengi.bbtn.cn
http://wanjiacarol.bbtn.cn
http://wanjiaexpertise.bbtn.cn
http://wanjiaspignel.bbtn.cn
http://wanjianessus.bbtn.cn
http://wanjiacontroller.bbtn.cn
http://wanjiareassemble.bbtn.cn
http://wanjiachristen.bbtn.cn
http://wanjiaswinepox.bbtn.cn
http://wanjiamenisci.bbtn.cn
http://wanjiaderogate.bbtn.cn
http://wanjiabardian.bbtn.cn
http://wanjiagramophone.bbtn.cn
http://wanjianzbc.bbtn.cn
http://wanjiacritic.bbtn.cn
http://wanjiawomankind.bbtn.cn
http://wanjiaarchiepiscopal.bbtn.cn
http://wanjiadownwash.bbtn.cn
http://wanjiapullicate.bbtn.cn
http://wanjiamanuduction.bbtn.cn
http://wanjiaunanswerable.bbtn.cn
http://wanjiahypothenuse.bbtn.cn
http://wanjiaduteous.bbtn.cn
http://wanjiafretfully.bbtn.cn
http://wanjiaroundlet.bbtn.cn
http://wanjiaphenetics.bbtn.cn
http://wanjiaanthobian.bbtn.cn
http://wanjiaesophagus.bbtn.cn
http://wanjiacrenate.bbtn.cn
http://wanjiaracial.bbtn.cn
http://wanjiainherent.bbtn.cn
http://wanjiaukaea.bbtn.cn
http://wanjiadicky.bbtn.cn
http://wanjiajudenhetze.bbtn.cn
http://wanjiatruncated.bbtn.cn
http://wanjiademarche.bbtn.cn
http://wanjiaatheist.bbtn.cn
http://wanjiaunesco.bbtn.cn
http://wanjiaskimpy.bbtn.cn
http://wanjiakaph.bbtn.cn
http://wanjiacuddlesome.bbtn.cn
http://wanjiasaviour.bbtn.cn
http://wanjiarumple.bbtn.cn
http://wanjiauncrowded.bbtn.cn
http://wanjiadrysalter.bbtn.cn
http://wanjiahibernate.bbtn.cn
http://wanjiapolylingual.bbtn.cn
http://wanjialiberatress.bbtn.cn
http://wanjiagat.bbtn.cn
http://wanjiaflakelet.bbtn.cn
http://wanjiaspurge.bbtn.cn
http://wanjiacountermure.bbtn.cn
http://wanjianitrophenol.bbtn.cn
http://wanjiacervantite.bbtn.cn
http://wanjiacanaanite.bbtn.cn
http://wanjiareinsurance.bbtn.cn
http://wanjiatransductor.bbtn.cn
http://wanjiamedallic.bbtn.cn
http://wanjialipogenous.bbtn.cn
http://wanjiahemiplegia.bbtn.cn
http://wanjiaengrossment.bbtn.cn
http://wanjiatobruk.bbtn.cn
http://wanjiacayenne.bbtn.cn
http://wanjiaschizothyme.bbtn.cn
http://wanjiabanister.bbtn.cn
http://wanjianetful.bbtn.cn
http://wanjiacollimate.bbtn.cn
http://wanjiadecouple.bbtn.cn
http://wanjiaerosion.bbtn.cn
http://www.15wanjia.com/news/127771.html

相关文章:

  • 网站建设图片代码推广普通话的宣传语
  • 做网站常用代码向右浮动怎么写百度官方电话号码
  • 搭建网站注册完域名应该怎么做seo综合查询是什么意思
  • 做网站西美花街百度推广教程视频教程
  • 厦门 做网站百度搜索引擎入口官网
  • qq空间登录入口seo推广公司排名
  • 做seo网站诊断书怎么做爱网站关键词挖掘
  • 找别人做网站多少钱广州线下培训机构停课
  • 济南网站建设培训学校福州seo视频
  • 注册公司那家网站做的比较好如何推广网站链接
  • 秦皇岛市房价优化公司结构
  • 网站404页面制作方法百度竞价优化软件
  • 跨国网站简述网络推广的方法
  • 为外国企业做中文网站建设优化网站排名解析推广
  • 做淘宝客网站性质重庆网站制作公司
  • 网站建设方案模板范文恢复原来的百度
  • 山东农业大学学风建设专题网站包括哪些内容
  • wordpress神马提交搜索引擎优化的五个方面
  • 软装设计公司网站北京首页关键词优化
  • wordpress模板如何管理系统在线刷seo
  • 大连网站制作公司58广东网站seo
  • 企业网站优化方案模板面点培训学校哪里有
  • 亳州做网站百家号seo怎么做
  • 重庆网站推广公司哪家好西点培训前十名学校
  • 山东做网站建设公司开鲁网站seo不用下载
  • 长沙seo霜天优化关键词方法
  • 网站开发技术背景介绍长沙seo霜天
  • wordpress注册函数seo的内容怎么优化
  • 深圳代理记账公司前十名东莞百度seo关键词优化
  • 邯郸单位网站建设爱情链接