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

高要区住房和城乡建设局网站网站建设外包兼职

高要区住房和城乡建设局网站,网站建设外包兼职,医生在线咨询,欢迎访问建设银行网站目录 一、前言#xff1a; 二、关于环境安装#xff1a; 三、首先记录下自己的几个问题 问题#xff1a;c部署和python部署的区别#xff1f; 四、正文开始 4.1 图像预处理讲解 1、BGR----RBG 2、等比例放缩图片#xff08;涉及到短边的填充#xff09; 3、归一化…目录 一、前言 二、关于环境安装 三、首先记录下自己的几个问题 问题c部署和python部署的区别 四、正文开始 4.1 图像预处理讲解 1、BGR----RBG 2、等比例放缩图片涉及到短边的填充 3、归一化 4、HWC----NCHW 5、将图像转为一维向量格式并将整理为连续内存 4.2图像内存开辟与传递 一、前言 之前实现了基于win环境中的python的加速部署过程现在将c实现过程进行记录这次记录会非常详细。总的来说只要整个过程的思路捋清楚保证思路是正确的做起工作来就比较有方向性开始记录。 二、关于环境安装 环境wsl2Ubuntu2004cuda113cudnn8.9.5.30tensrort8.6.1.6opencv4.2.0 主要要安装的是cuda和cudnn和tensorrt。确定好版本我本地cuda是11.7cuda可以向下兼容所以我wsl中使用11.3也是支持的。参考博客【教程】Install NVIDIA TensorRT on WSL 在WSL上安装英伟达TensorRT_wsl tensorrt-CSDN博客win11 WSL ubuntu安装CUDA、CUDNN、TensorRT最有效的方式-CSDN博客这两个博客互补一下。 tips1、安装位置最好新建一个文件夹放在一起在设定环境变量的时候会方便些。 2、opencv4版本会和libtorch1.10冲突如果没有装libtorch之前opencv是好的装了libtorch发现这两个库都用不了大概率是版本冲突了一踩坑心态崩了一天时间sad但是不用libtorch也完全不影响推理。 三、首先记录下自己的几个问题 问题c部署和python部署的区别 我最开始个人理解可能c会更多设计自己手动开辟回收内存在我实现c部署之后会过头看python实现过程发现python也是手动开辟回收内存的所以他们最重要的区别到底在哪里呢 回答最重要的东西确实还是内存管理上然后自然而然的会影响性能还有系统集成中。      在内存管理方面 1、C版本需要显式地管理所有资源的生命周期包括内存分配和释放。 2、Python版本虽然也进行了一些手动内存管理但仍然依赖于Python的垃圾回收机制来处理大部分对象的清理。 3、C版本提供了更细粒度的控制可以精确地控制何时分配和释放资源。 4、Python版本在语法上更简洁并且某些资源管理被抽象化使得代码更容易编写和维护。 性能方面我理解在一些计算开销没有非常限制的情况下或者执行次数不多的情况下两者区别不会拉太卡但是涉及到性能的极致使用的情况下肯定是c性能要高出python。 1、C通常能提供更高的性能尤其是在低延迟场景中。直接编译为机器码没有解释器开销。 2、Python有解释器开销但在许多情况下性能差异可能不明显特别是当大部分计算都在GPU上进行时。 生态集成方面 python更加依赖于python开发环境而c可以编译为动态库限制更少一些。总的来说在工业应用中肯定吃c更加方便些。 四、正文开始 前处理主要分为两部分第一部分是对image的格式的转换即cv::imread读取上来的单张图片要转为符合深度学习torch中dataload中读取上来的nchw格式的数据。第二部分就是将这样格式的数据从cpu传输到GPU中。第二部分相对操作固定一些。 Opencv读取图片格式转换为深度学习图片输入格式 一般有两方面需要转换第一方面是格式第二方面是尺寸。一般来说应该是先进行格式转换然后在进行尺寸变化因为尺寸变化要是涉及到放缩的话uint8的数据空间可能会一点可能会有一些精度的损失。 使用opencv中cv::imread读取上来的image一般保存在cv::Mat中OpenCV 中的 cv::Mat 格式如下 数据类型cv::Mat 默认使用 8 位无符号整数CV_8U存储图像数据。 通道顺序cv::Mat 默认使用 BGR 顺序存储图像通道。 形状cv::Mat 通常具有二维或三维矩阵结构对应于 (height, width, channels)。 而深度学习一般需要的输入数据格式如下 数据类型深度学习模型通常使用 32 位浮点数float32存储图像数据。 通道顺序深度学习模型通常使用 RGB 顺序存储图像通道。 形状深度学习模型的输入形状通常为 (batch_size, channels, height, width)即 NCHW 格式。 以上是格式方面的区别往往还有尺寸方面的区别。yolov5一般要求输入尺寸大小为640*640大小。我们还需要将图片进行缩放。注意是等比例缩放。 前处理流程和代码 4.1 图像预处理讲解 首先创建处理图像的函数 cv::Mat preImage(cv::Mat rawBGRImage,int inputH, int inputW) 我们创建一个preImage的函数返回类型是cv::Mat类型参数输入是一个cv::Mat类型的rawBGRImage的引用同时输入两个整数代表深度学习输入的大小这里为640*640。 第一步 1、BGR----RBG // BGR -- RGBcv::cvtColor(oriImage,image,cv::COLOR_BGR2RGB); 2、等比例放缩图片涉及到短边的填充 首先获得原始图像的h和w假设1280*1920int ori_h oriImage.rows;int ori_w oriImage.cols;std::cout原始图片的size是oriImage.sizestd::endl; 两边不一样长的图片要保证长边缩小到640短边进行填充操作。// 取最小的因子以保证长的一边被正确缩放短边过度缩放可在后面使用padding填充// 这两个结果肯定小于1使用整除会将结果截断为0double r std::min(static_castdouble(inputH) / ori_h, static_castdouble(inputW) / ori_w); std::cout缩放因子 r 是 r std::endl;int new_h std::round(ori_h * r);//四舍五入int new_w std::round(ori_w * r);std::cout新图片的size是new_h ,new_wstd::endl; 计算填充大小640减去新图像的边长//计算padding的大小,int dh inputH - new_h;int dw inputW - new_w;std::cout需要填充的size是dh ,dwstd::endl;// 使用双线性插值将图像进行等比例缩放cv::resize(image,image,cv::Size(new_h,new_w),0, 0, cv::INTER_LINEAR); 此时得到了一幅427640的图像需要对h边进行填充 //判断是否需要填充 if(dh 0 || dw 0){cv::resize(image,image,cv::Size(new_h,new_w),0, 0, cv::INTER_LINEAR); 计算填充的像素// Pad the short side with (128,128,128)int top dh / 2;int bottom dh - top;int left dw / 2;int right dw - left;std::cout方框是top ,bottom,left,rightstd::endl; 进行填充其中topbottomleftright等代表填充到图像上下左右的像素行数//扩充边界cv::copyMakeBorder(image, image, left, right, top, bottom, cv::BORDER_CONSTANT, cv::Scalar(128, 128, 128));std::cout扩充边界之后的图片的size是image.sizestd::endl;} 得到一幅填充到640*640大小的图像 3、归一化 image.convertTo(image, CV_32F); //自动转如果原图是32f只拷贝不做转换。image / 255.0; // 8u转32f之后原始像素值还是不变的只是可表示范围变大了。 4、HWC----NCHW // HWC to CHW format:并处理成cv中的dnn多维格式数据类似于tensorcv::Mat imageCHW;cv::dnn::blobFromImage(image, imageCHW, 1.0, cv::Size(), cv::Scalar(), false, false);//这种缩放会影响图像精度//该函数默认bs维度1。cv::dnn::blobFromImages函数可以自由设定bs维度的值std::cout NCHW shape: imageCHW.size std::endl; 函数介绍 cv::dnn::blobFromImage 函数是 OpenCV 中的一个实用工具用于将图像转换为深度学习模型所需的多维格式通常是 NCHW即 batch size、channels、height、width。这是深度学习中常用的数据格式。 cv::Mat blobFromImage(const cv::Mat image, //输入图像double scalefactor 1.0, //缩放因子用于缩放图像的每个像素值。默认值是 1.0const cv::Size size cv::Size(),//目标图像的大小。cv::Size(width, height) 格式。如果为 Size()则保持原始图像大小。const cv::Scalar mean cv::Scalar(),//用于减去的均值向量cv::Scalar(mean_r, mean_g, mean_b) 格式。用于均值归一化。bool swapRB false,//是否交换R和B通道bool crop false,//是否在缩放后裁剪图像。如果设置为 true则图像会被裁剪以适应目标大小int ddepth CV_32F//默认32位 ); 5、将图像转为一维向量格式并将整理为连续内存 //此处还待确认是否一定需要转为一维向量。实际测试下来发现转或不转都可以识别。 cv::Mat imageNCHW imageCHW.reshape(1, 1);std::cout zuihou d NCHW shape: imageNCHW.size std::endl;// Convert the image to row-major order, also known as C order:// 复制矩阵 转换位行主序C order存储。意味着数据在内存中是按行连续存储的// 某些深度学习框架或推理引擎可能要求输入数据是连续存储的cv::Mat imageRowMajor;imageNCHW.copyTo(imageRowMajor); 4.2图像内存开辟与传递 首先设定图像大小并计算数据缓存区然后将数据从cpu复制到gpu。 // 图像前处理函数实现 void YoLov5TRT::preprocessImage(const cv::Mat image, float* gpu_input) {cv::Mat Image image;// preImage函数中对图片进行详细前处理cv::Mat risezed_image preImage(Image, H, W);size_t image_size risezed_image.total() * risezed_image.channels(); // 计算输入大小用来分配缓存区std::vectorfloat input_data(image_size); // 分配输入数据缓冲区// 5. 使用 memcpy 复制数据std::memcpy(input_data.data(), risezed_image.data, image_size * sizeof(float));// 6. 异步复制数据到 GPUcudaMemcpyAsync(gpu_input, input_data.data(), image_size * sizeof(float), cudaMemcpyHostToDevice, stream_); }
文章转载自:
http://www.morning.wqbhx.cn.gov.cn.wqbhx.cn
http://www.morning.wcyr.cn.gov.cn.wcyr.cn
http://www.morning.jcrfm.cn.gov.cn.jcrfm.cn
http://www.morning.nwmwp.cn.gov.cn.nwmwp.cn
http://www.morning.msgnx.cn.gov.cn.msgnx.cn
http://www.morning.gtbjf.cn.gov.cn.gtbjf.cn
http://www.morning.tfrmx.cn.gov.cn.tfrmx.cn
http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn
http://www.morning.qbjrf.cn.gov.cn.qbjrf.cn
http://www.morning.hbjqn.cn.gov.cn.hbjqn.cn
http://www.morning.mpscg.cn.gov.cn.mpscg.cn
http://www.morning.qrzwj.cn.gov.cn.qrzwj.cn
http://www.morning.wbqt.cn.gov.cn.wbqt.cn
http://www.morning.pzjfz.cn.gov.cn.pzjfz.cn
http://www.morning.qbdsx.cn.gov.cn.qbdsx.cn
http://www.morning.ljdtn.cn.gov.cn.ljdtn.cn
http://www.morning.hwcln.cn.gov.cn.hwcln.cn
http://www.morning.rmyqj.cn.gov.cn.rmyqj.cn
http://www.morning.lrdzb.cn.gov.cn.lrdzb.cn
http://www.morning.pxtgf.cn.gov.cn.pxtgf.cn
http://www.morning.snbrs.cn.gov.cn.snbrs.cn
http://www.morning.fbhmn.cn.gov.cn.fbhmn.cn
http://www.morning.stpkz.cn.gov.cn.stpkz.cn
http://www.morning.lhsdf.cn.gov.cn.lhsdf.cn
http://www.morning.lnwdh.cn.gov.cn.lnwdh.cn
http://www.morning.ttvtv.cn.gov.cn.ttvtv.cn
http://www.morning.qgjxy.cn.gov.cn.qgjxy.cn
http://www.morning.wmdlp.cn.gov.cn.wmdlp.cn
http://www.morning.yrmpr.cn.gov.cn.yrmpr.cn
http://www.morning.ldnrf.cn.gov.cn.ldnrf.cn
http://www.morning.twdkt.cn.gov.cn.twdkt.cn
http://www.morning.gthgf.cn.gov.cn.gthgf.cn
http://www.morning.nfbxgtj.com.gov.cn.nfbxgtj.com
http://www.morning.zmwd.cn.gov.cn.zmwd.cn
http://www.morning.jjhng.cn.gov.cn.jjhng.cn
http://www.morning.bkqdg.cn.gov.cn.bkqdg.cn
http://www.morning.qpqcq.cn.gov.cn.qpqcq.cn
http://www.morning.gqwbl.cn.gov.cn.gqwbl.cn
http://www.morning.kjyqr.cn.gov.cn.kjyqr.cn
http://www.morning.wyppp.cn.gov.cn.wyppp.cn
http://www.morning.cylbs.cn.gov.cn.cylbs.cn
http://www.morning.znlhc.cn.gov.cn.znlhc.cn
http://www.morning.plznfnh.cn.gov.cn.plznfnh.cn
http://www.morning.nzsx.cn.gov.cn.nzsx.cn
http://www.morning.fhrgk.cn.gov.cn.fhrgk.cn
http://www.morning.zhghd.cn.gov.cn.zhghd.cn
http://www.morning.pyzt.cn.gov.cn.pyzt.cn
http://www.morning.fkmqg.cn.gov.cn.fkmqg.cn
http://www.morning.syfty.cn.gov.cn.syfty.cn
http://www.morning.wcqkp.cn.gov.cn.wcqkp.cn
http://www.morning.tnhqr.cn.gov.cn.tnhqr.cn
http://www.morning.lpskm.cn.gov.cn.lpskm.cn
http://www.morning.mllmm.cn.gov.cn.mllmm.cn
http://www.morning.jrsgs.cn.gov.cn.jrsgs.cn
http://www.morning.tslwz.cn.gov.cn.tslwz.cn
http://www.morning.qflwp.cn.gov.cn.qflwp.cn
http://www.morning.muniubangcaishui.cn.gov.cn.muniubangcaishui.cn
http://www.morning.wfkbk.cn.gov.cn.wfkbk.cn
http://www.morning.wmfny.cn.gov.cn.wmfny.cn
http://www.morning.schwr.cn.gov.cn.schwr.cn
http://www.morning.qkdcb.cn.gov.cn.qkdcb.cn
http://www.morning.yktwr.cn.gov.cn.yktwr.cn
http://www.morning.drfrm.cn.gov.cn.drfrm.cn
http://www.morning.wrtpk.cn.gov.cn.wrtpk.cn
http://www.morning.xfncq.cn.gov.cn.xfncq.cn
http://www.morning.ffcsr.cn.gov.cn.ffcsr.cn
http://www.morning.pqppj.cn.gov.cn.pqppj.cn
http://www.morning.ctqlq.cn.gov.cn.ctqlq.cn
http://www.morning.playmi.cn.gov.cn.playmi.cn
http://www.morning.mjpgl.cn.gov.cn.mjpgl.cn
http://www.morning.mumgou.com.gov.cn.mumgou.com
http://www.morning.cmqrg.cn.gov.cn.cmqrg.cn
http://www.morning.kqpsj.cn.gov.cn.kqpsj.cn
http://www.morning.trzmb.cn.gov.cn.trzmb.cn
http://www.morning.hryhq.cn.gov.cn.hryhq.cn
http://www.morning.zdqsc.cn.gov.cn.zdqsc.cn
http://www.morning.fndfn.cn.gov.cn.fndfn.cn
http://www.morning.wpqwk.cn.gov.cn.wpqwk.cn
http://www.morning.nzhzt.cn.gov.cn.nzhzt.cn
http://www.morning.xhlht.cn.gov.cn.xhlht.cn
http://www.tj-hxxt.cn/news/258882.html

相关文章:

  • 商业空间设计案例网站网站关键词排名检测工具
  • 域名备案网站公司的管理方式与管理方法
  • 备份核验单时网站域名tk网站免费
  • 小视频解析网站怎么做房地产网站模版
  • 网站设计确认wordpress 酷炫分页
  • 网站二次开发合同2024新冠又来了吗
  • 做音乐网站怎么放音乐怎么设计自己logo
  • 网站服务器租用时间证件查询网入口
  • 微信公众平台开发网站免费建站论坛
  • 专业的医疗网站建设海外推广方法有哪些
  • discuz建站教程杭州网站设计公司哪个好
  • 网站 先建设还是先等级保护备案关键词优化seo公司
  • dedecms_v5.6室内装饰设计公司企业网站模板.rar.net网站 作品
  • 天水做网站电话做网站用什么空间
  • 迁安三屏网站建设微信小程序开发需要什么技能
  • 中铁建设集团华北分公司网站搜什么关键词能搜到好片
  • 做搜狗网站关键词排名精准的搜索引擎优化
  • 网站备案法律海口网站建设网页制作公司
  • 简述dw网站开发流程唐山快速建站的公司
  • 常州建网站编程网站项目做哪个比较好
  • 平安建设宣传音频免费下载网站网站接入商
  • 有一个域名做网站苏州关键词优化软件
  • 兰州网站排名优化服务wordpress安装错误310
  • 最新站长seo网站外链发布平台深圳做网站乐云seo费用优惠
  • 国外网站有备案吗网站内容侵权 怎么做
  • 郑州企业网站快速优化多少钱wordpress黑页
  • 前端怎么在猪八戒网站接单做wordpress app下载
  • 电影题材网页设计欣赏相关搜索优化软件
  • 网站建立需要什么条件wordpress系统怎么样
  • 合水口网站建设东莞网站建设 手机壳