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

网站做联盟还赚钱吗网站框架代码

网站做联盟还赚钱吗,网站框架代码,凤台县美丽乡村建设网站,wordpress 文章缩放【YOLOv8】安卓端部署-1-项目介绍 1 什么是YOLOv81.1 YOLOv8 的主要特性1.2 YOLOv8分割模型1.2.1 YOLACT实例分割算法之计算掩码1.2.1.1 YOLACT 的掩码原型与最终的掩码的关系1.2.1.2 插值时的目标检测中提取的物体特征1.2.1.3 coefficients#xff08;系数#xff09;作用1.… 【YOLOv8】安卓端部署-1-项目介绍 1 什么是YOLOv81.1 YOLOv8 的主要特性1.2 YOLOv8分割模型1.2.1 YOLACT实例分割算法之计算掩码1.2.1.1 YOLACT 的掩码原型与最终的掩码的关系1.2.1.2 插值时的目标检测中提取的物体特征1.2.1.3 coefficients系数作用1.2.1.4 YOLACT论文中的示意图 2 环境搭建2.1 软件安装2.1.1 Visual Studio2.1.2 下载和安装nvidia显卡驱动2.1.3 下载CUDA2.1.4 安装CUDA2.1.5 下载cuDNN2.1.6 安装cuDNN2.1.7 CUDA安装测试2.1.8 安装Anaconda2.1.9 安装pytorch 2.2 YOLOv8安装2.2.1 克隆YOLOv8并安装2.2.2 下载预训练权重文件2.2.3 安装测试 2.3 导出ONNX模型2.3.1 修改模型2.3.2 执行命令 2.4 onnx转换成NCNN文件2.4.1 自动转换2.4.2 手动转换 2.5 安装Android Studio 1 什么是YOLOv8 YOLOv8 是由 Ultralytics 团队于 2023 年 1 月发布的目标检测模型是 YOLO 系列的最新重要版本之一。YOLOv8 继承了 YOLO 的核心设计理念即 “You Only Look Once”强调单次前向传播即可完成图像中的目标检测任务。相比于之前的版本如 YOLOv5 和 YOLOv7YOLOv8 在模型架构、训练策略、特征提取和推理效率等方面做了全面改进。 1.1 YOLOv8 的主要特性 模型架构改进 自适应的网络架构YOLOv8 在 Backbone 和 Neck 部分采用了新的设计例如利用了 CSPNet 和 ConvNeXt 的特性进一步优化了特征提取效率和推理速度。新型的 Head 设计YOLOv8 引入了新的预测 Head支持不同任务检测、分割、关键点检测等的统一设计简化了模型结构并提高了预测性能。 支持多任务 目标检测YOLOv8 支持经典的目标检测任务即在图像中检测物体并返回边界框和类别标签。实例分割YOLOv8 集成了实例分割功能能够精确地检测物体的轮廓这在需要对复杂场景进行精确分割时非常有用。关键点检测YOLOv8 还支持关键点检测任务适用于人体姿态估计和动作识别等应用场景。 优化的训练策略 自动数据增强AutoAugmentYOLOv8 引入了自动化的数据增强策略结合 Mosaic、MixUp 等技术进一步提高了模型的泛化能力。标签平滑Label Smoothing通过引入标签平滑技术减少了过拟合现象并改善了模型的训练效果。先进的优化器支持YOLOv8 默认支持 AdamW 优化器并通过结合 Cosine Annealing 调整学习率提升了训练效率。 高效的推理速度 YOLOv8 采用了更高效的卷积操作并结合 TensorRT、ONNX 等推理框架进行优化可以在 GPU 上实现极快的推理速度适合于实时检测任务。对于边缘设备如 Jetson Nano 和 Raspberry PiYOLOv8 也能提供良好的性能表现满足低延迟、高精度的需求。 1.2 YOLOv8分割模型 YOLOv8的实例分割采用了YOLACT实例分割算法当然和YOLACT的骨干网和颈部是不同的。 YOLOv8中的分割模型输出包括两个部分一个形状为 [1, 116, 8400] 的 output0另一个形状为 [1, 32, 160, 160] 的 output1。 output0 的第一个维度表示批次大小始终为 1。 第二个维度由 116 个值组成116 4 80 32。其中前 4 个值表示检测到的物体的边界框坐标xy宽度和高度其余 80 个值表示物体属于每个类别的概率。最后 32 值是 32 个掩码原型的系数coefficients可以通过处理它们来生成任意数量物体的掩码。 第三个维度有 8400 个值 — 可能检测到的物体数量8400 80 × 80 40 × 40 20 × 20。 output1 包含一个由 32 个掩码组成的数组每个掩码的尺寸为 160 × 160 像素。 要获得检测到的物体的最终掩码首先需要从第一个输出 output0 中选择最佳概率对应于感兴趣的物体并记住该物体掩码的索引。 然后可以使用掩码的索引从第二个输出中获取该物体的掩码。为了获得物体的最终掩码需要将第二个输出 output1 中的物体掩码的大小和点插值到输入图像的尺寸上乘以 4。因为掩码最初是在 160x160 像素的图像上生成的如果输入尺寸为 640x640 像素则需要将掩码缩放 4 倍以适应输入图像。 1.2.1 YOLACT实例分割算法之计算掩码 首先YOLACT 通过目标检测部分检测出图像中的物体并获得每个物体的边界框坐标 (x, y, width, height) 以及每个类别的概率。 然后YOLACT 从另一个输出中获取与每个物体相对应的掩码。这个输出是一个包含多个掩码原型的数组每个掩码原型都是一个固定大小的二进制掩码表示一个通用的物体形状。 接下来根据目标检测的结果选择与感兴趣物体相关的概率最高的掩码系数。最终掩码是通过从目标检测输出中找到对应物体的类别概率最高的索引来完成。 选定的掩码原型被进一步处理将其插值到输入图像的尺寸上以生成与物体实际形状更匹配的掩码。这是通过掩码原型的二进制掩码和物体边框的大小、比例等结合进一步调整掩码形状来完成的。 最后经过插值处理后的掩码将与物体的边界框一起输出作为最终的实例分割结果。这个掩码将准确地标注物体在图像中的像素级别的位置和形状。 总结起来YOLACT 通过将掩码原型插值到输入图像的尺寸上结合目标检测结果计算出与物体实际形状更匹配的掩码并输出作为最终的实例分割掩码。这个过程在 YOLACT 在像素级别准确地分割和表示图像中的不同物体。 1.2.1.1 YOLACT 的掩码原型与最终的掩码的关系 在 YOLACT 中掩码原型和最终的掩码之间的关系说明 掩码原型 (Mask Prototype)掩码原型是预定义的、通用的二进制掩码掩形它们具有固定的尺寸和形状。在 YOLACT 中掩码原型是一个由固定数量的二进制掩码组成的数组每个掩码原型表示一种常见的物体形状。这些掩码原型可以用来构建用于生成最终的掩码。 最终掩码Final Mask最终的掩码是通过选定的掩码原型进行插值和调整后得到的。根据检测的结果AI 将选定的与感兴趣物体相匹配的掩码原型进行插值和调整。最终的掩码是通过将选定的掩码原型插值到输入图像的尺寸上以生成与物体实际形状更匹配的掩码。这种插值过程是通过双线性插值算法来完成的。 因此掩码原型是事先定义的、通用的物体形状模板而最终的掩码是根据选定的掩码原型经过插值处理后生成的与物体实际形状更匹配的掩码。最终的掩码表示了对象在图像中的像素级别的位置和形状。这个过程在实例分割中将图像中的物体与它们的掩码系数进行关联。 1.2.1.2 插值时的目标检测中提取的物体特征 在 YOLACT 中插值过程并不直接考虑目标检测中提取的物体特征。插值过程仅关注将选定的掩码原型插值到输入图像的尺寸上以生成与物体实际形状更匹配的掩码。 目标检测只负责提供物体的边界框坐标和类别概率而插值阶段则是依据感兴趣的概率系数上对掩码进行形状的调整。插值过程不考虑目标检测中提取的物体特征因为掩码原型在设计时已经包含了通用的物体形状信息。 **目标检测和插值是两个独立的步骤它们分别处理物体的位置和形状。目标检测确定物体的边界框和类别概率而插值阶段将掩码原型通过插值调整为物体实际的形状。**这个过程让 YOLACT 能够在图像中精确分割物体的边缘位置而不需要直接考虑目标检测中提取的物体特征。 1.2.1.3 coefficients系数作用 在 YOLACT 算法中coefficients系数是用于控制插值过程的参数。这些系数用于调整选定的掩码原型在插值过程中的权重和形状。 具体而言YOLACT 使用一组系数来对选定的掩码原型组合并调整。这些系数提供了在插值和调整过程中对掩码原型进行加权的参数使它们用于生成与目标形状相符的最终掩码。系数的权重决定了每个掩码原型的贡献最终掩码会是这些加权后的掩码原型的线性组合平滑和优化。 1.2.1.4 YOLACT论文中的示意图 2 环境搭建 介绍完YOLOv8后我们来安装一下环境 2.1 软件安装 2.1.1 Visual Studio 安装Visual Studio 2022 下载Visual Studio 社区版 下载链接https://visualstudio.microsoft.com/zh-hans/downloads/ 注意安装时可勾选“Python开发”和“C开发” 2.1.2 下载和安装nvidia显卡驱动 首先要在设备管理器中查看你的显卡型号比如在这里可以看到我的显卡型号为RTX 1060。 NVIDIA 驱动下载https://www.nvidia.cn/Download/index.aspx?langcn 下载对应你的英伟达显卡驱动。 下载之后就是简单的下一步执行直到完成。 完成之后在cmd中输入执行 nvidia-smi注图中的 CUDA Version是当前Driver版本能支持的最高的CUDA版本 2.1.3 下载CUDA 下载CUDA CUDA用的是11.8版本 cuda下载链接https://developer.nvidia.com/cuda-downloads?target_osWindowstarget_archx86_64target_version10target_typeexelocal 下载后得到文件cuda_11.8.0_522.06_windows.exe 执行该文件进行安装。 2.1.4 安装CUDA (1) 将cuda运行安装建议默认路径 安装时可以勾选Visual Studio Integration (2) 安装完成后设置环境变量 看到系统中多了CUDA_PATH和CUDA_PATH_V11_8两个环境变量。 2.1.5 下载cuDNN cudnn下载地址Index of /compute/cudnn/redist/cudnn/windows-x86_64 (nvidia.com) 需要有NVIDIA账号 注意cudnn版本要和cuda版本匹配 如果NVIDIA 驱动版本低于为 520.61.05可以安装cudnn的8.9.*版本 下载得到文件cudnn-windows-x86_64-9.5.1.17_cuda11-archive.zip 2.1.6 安装cuDNN 复制cudnn文件 对于cudnn直接将其解开压缩包然后需要将bin,include,lib中的文件复制粘贴到cuda的文件夹下 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 注意对整个文件夹bin,include,lib选中后进行复制粘贴 2.1.7 CUDA安装测试 最后测试cuda是否配置成功 打开CMD执行 nvcc -V2.1.8 安装Anaconda Anaconda 是一个用于科学计算的 Python 发行版支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。 1) 下载安装包 Anaconda 下载Windows版https://www.anaconda.com/ 2) 然后安装anaconda 2.1.9 安装pytorch 1创建虚拟环境 环境名字可自己确定这里本人使用yolo8作为环境名 conda create -n yolo8 python3.9安装成功后激活yolo8环境 conda activate yolo8在所创建的yolo8环境下安装pytorch, 执行命令 conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia注意11.8处应为自己电脑上的cuda版本号 离线安装 下载网址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/ 安装pytorch2.0版本: pytorch-2.0.0-py3.9_cuda11.8_cudnn8_0.tar.bz conda install --offline pytorch-2.0.0-py3.9_cuda11.8_cudnn8_0.tar.bz2.2 YOLOv8安装 2.2.1 克隆YOLOv8并安装 安装Git软件https://git-scm.com/downloads克隆项目到本地如 d: 项目repo网址: https://github.com/ultralytics/ultralytics 在 Git CMD窗口中执行: git clone https://github.com/ultralytics/ultralyticsgit clone克隆需要科学上网请自行解决 在yolo8虚拟环境下执行 cd F:\Code\Java\JavaCode\Yolov8\ultralyticspip install -e .2.2.2 下载预训练权重文件 下载yolov8预训练权重文件并放置在新建立的weights文件夹下 下载链接https://docs.ultralytics.com/tasks/segment/ 我电脑不行参数量太大的推理太慢我选择yolov8s-seg权重 例如F:\Code\Java\JavaCode\Yolov8\ultralytics\ultralytics\weights 2.2.3 安装测试 预测图片 yolo segment predict modelF:/Code/Java/JavaCode/Yolov8/ultralytics/ultralytics/weights/yolov8s-seg.pt sourceF:/Code/Java/JavaCode/Yolov8/ultralytics/ultralytics/assets/bus.jpg预测结果在F:\Code\Java\JavaCode\Yolov8\ultralytics\runs\segment\predict 预测点复杂图形 实时预测摄像头 yolo segment predict predict modelF:/Code/Java/JavaCode/Yolov8/ultralytics/ultralytics/weights/yolov8s-seg.pt source0 show2.3 导出ONNX模型 2.3.1 修改模型 因为有些函数onnx并不支持所以我们需要手动修改一下 1修改文件1 F:\Code\Java\JavaCode\Yolov8\ultralytics\nn\modules\block.py中 class C2f(nn.Module)改动如下 class C2f(nn.Module):Faster Implementation of CSP Bottleneck with 2 convolutions.def __init__(self, c1, c2, n1, shortcutFalse, g1, e0.5):Initializes a CSP bottleneck with 2 convolutions and n Bottleneck blocks for faster processing.super().__init__()self.c int(c2 * e) # hidden channelsself.cv1 Conv(c1, 2 * self.c, 1, 1)self.cv2 Conv((2 n) * self.c, c2, 1) # optional actFReLU(c2)self.m nn.ModuleList(Bottleneck(self.c, self.c, shortcut, g, k((3, 3), (3, 3)), e1.0) for _ in range(n))def forward(self, x):Forward pass through C2f layer.# y list(self.cv1(x).chunk(2, 1))# y.extend(m(y[-1]) for m in self.m)# return self.cv2(torch.cat(y, 1))x self.cv1(x)x [x,x[:,self.c:, ...]]x.extend(m(x[-1]) for m in self.m)x.pop(1)return self.cv2(torch.cat(x,1))2修改文件2 F:\Code\Java\JavaCode\Yolov8\ultralytics\nn\modules\head.py中 class Detect(nn.Module)改动如下 def forward(self, x):Concatenates and returns predicted bounding boxes and class probabilities.shape x[0].shape # BCHWfor i in range(self.nl):x[i] torch.cat((self.cv2[i](x[i]), self.cv3[i](x[i])), 1)if self.training:return xelif self.dynamic or self.shape ! shape:self.anchors, self.strides (x.transpose(0, 1) for x in make_anchors(x, self.stride, 0.5))self.shape shapereturn torch.cat([xi.view(shape[0],self.no, -1)for xi in x], 2)注意1旧版本的YOLOv8两个改动处都在 \ultralytics\nn\modules.py中 注意2训练YOLOv8时不需要这两个改动 2.3.2 执行命令 yolo export modelF:/Code/Java/JavaCode/Yolov8/ultralytics/ultralytics/weights/yolov8n-seg.pt formatonnx simplifyTrue opset12yolo export modelF:/Code/Java/JavaCode/Yolov8/ultralytics/ultralytics/weights/yolov8s-seg.pt formatonnx simplifyTrue opset12自己训练出的权重文件导出 yolo export modelpath/to/best-seg.pt formatonnx simplifyTrue opset122.4 onnx转换成NCNN文件 2.4.1 自动转换 一键生成https://convertmodel-1256200149.cos-website.ap-nanjing.myqcloud.com/ 打开我们刚刚生成的两个文件 2.4.2 手动转换 如果不想一键生成可以自己安装 1安装protobuf 下载protobuf-3.19.4安装包并解压 在VS2022的X64命令行下执行以下命令 注 为解压的protobuf-3.19.4文件夹的根目录。 cd protobuf-root-dir mkdir build-vs2022 cd build-vs2022cmake -G NMake Makefiles ^-DCMAKE_BUILD_TYPERelease ^-DCMAKE_INSTALL_PREFIX%cd%/install ^-Dprotobuf_BUILD_TESTSOFF ^-Dprotobuf_MSVC_STATIC_RUNTIMEOFF ^-Dprotobuf_WITH_ZLIBOFF ^../cmakenmake nmake install编译后可执行检查安装是否成功 protoc.exe --version2克隆和安装ncnn 首先克隆ncnn git clone https://github.com/Tencent/ncnn.git打开VS2022的X64命令行进入到ncnn根目录下执行以下语句 注意cmake -G…这条命令有三个需要换成protobuf的根目录 cd ncnn-root-dir mkdir -p build-vs2022 cd build-vs2022cmake -G NMake Makefiles ^-DCMAKE_BUILD_TYPERelease ^-DCMAKE_INSTALL_PREFIX%cd%/install ^-DProtobuf_INCLUDE_DIRprotobuf-root-dir/build-vs2022/install/include ^-DProtobuf_LIBRARIESprotobuf-root-dir/build-vs2022/install/lib/libprotobuf.lib ^-DProtobuf_PROTOC_EXECUTABLEprotobuf-root-dir/build-vs2022/install/bin/protoc.exe ^-DNCNN_VULKANOFF ^-DNCNN_BUILD_WITH_STATIC_CRTON ..nmake nmake install其中 cmake -G NMake Makefiles ^-DCMAKE_BUILD_TYPERelease ^-DCMAKE_INSTALL_PREFIX%cd%/install ^-DProtobuf_INCLUDE_DIRD:/software_code/protobuf/protobuf-3.19.4/build-vs2022/install/include ^-DProtobuf_LIBRARIESD:/software_code/protobuf/protobuf-3.19.4/build-vs2022/install/lib/libprotobuf.lib ^-DProtobuf_PROTOC_EXECUTABLED:/software_code/protobuf/protobuf-3.19.4/build-vs2022/install/bin/protoc.exe ^-DNCNN_VULKANOFF ^-DNCNN_BUILD_WITH_STATIC_CRTON ..编译后 D:\ncnn\build-vs2022\tools\onnx下有onnx2ncnn.exe 3 生成ncnn文件 拷贝yolov8n-seg.onnx和yolov8s-seg.onnx文件到D:\ncnn\buildvs2022\tools\onnx\ 执行命令生成ncnn相应的param和bin文件 onnx2ncnn.exe yolov8n-seg.onnx yolov8n-seg.param yolov8n-seg.bin onnx2ncnn.exe yolov8s-seg.onnx yolov8s-seg.param yolov8s-seg.bin4使用ncnn_optimize优化ncnn文件 产生新的param和bin文件: ncnn\build-vs2022\tools路径下执行 先拷贝yolov8n-seg.bin和yolov8n-seg.param文件以及yolov8s-seg.bin 和yolov8s-seg.param文件到此路径下 执行命令 ncnnoptimize.exe yolov8n-seg.param yolov8n-seg.bin yolov8n-seg-opt.param yolov8n-seg-opt.bin 0 ncnnoptimize.exe yolov8s-seg.param yolov8s-seg.bin yolov8s-seg-opt.param yolov8s-seg-opt.bin 02.5 安装Android Studio 官网https://developer.android.google.cn/studio/ 安装时会提示安装SDK 同意licenses 注意Android SDK安装路径中不要有空格 注意配置 File-Settings-Appearance Behavior -System Settings-Android SDK SDK Platforms 选中面向手机的Android版本 SDK Tools选中NDK, CMake 注意cmake的版本选择不要太高 ndk版本为24.0.8215888 cmake版本为3.10.2.4988404 检查build.gradle(app)文件 在android下添加我们指定的ndk版本 ndkVersion 24.0.8215888添加 CMake 到文件 local.properties sdk.dirD\:\\software_code\\android\\sdk ndk.dirD\:\\software_code\\android\\sdk\\ndk\\24.0.8215888 cmake.dirD\:\\software_code\\android\\sdk\\cmake\\3.10.2.4988404然后Press the button Sync project with Gradle Files in the upper right. 同步Gradle成功
http://www.w-s-a.com/news/129425/

相关文章:

  • 电子商务网站开发设计报告为什么wordpress主题中字体不统一
  • 百度站长快速收录网站建设完工确认书
  • 企业网站备案代理商建设工程施工合同2013
  • 要学做网站wordpress xss漏洞
  • 白云品牌型网站建设在网上做国际快递淘宝网站
  • 无锡网站建设方式推广软件赚钱的app
  • 如何控制一个网站软件开发wordpress教育插件
  • 网站开发属于软件开发类吗wordpress邮件失败
  • 凡科网站怎么设计win8网站模板
  • 深圳整站seo个人网站建设一般流程
  • 济南网站中企动力wordpress主题ripro
  • 淮北网站建设求职简历怎么做点击图片进网站
  • 自适应网站推广注册公司流程和费用公司注册
  • 电子商务网站建设预算表网站建设卩金手指科杰
  • 广西响应式网站哪家好产品网络推广怎样做
  • 移动网可以上的网站是什么样子的淘宝优惠券网站开发
  • wordpress php设置伊宁seo网站建设
  • 兰陵住房建设局网站wordpress中文标题
  • 福州搜索优化网站个人网页网站制作模板
  • 网站开发分哪几个步骤使用wordpress开发一个页面跳转
  • 网站制作后还能更改么wordpress 近期文章 代码
  • 做一个小网站需要多少钱wordpress集成paypal
  • 加强网站建设管理 及时更新自己设计装修的app
  • 集团网站设计案例网页制作网站开发
  • 怎么优化网站的单个关键词排名惠州品牌网站建设
  • 上海跨境电商网站制作wordpress弃用react
  • phpcms网站模版下载电商网站建设属于研发费用吗
  • 动画毕业设计代做网站高校门户网站建设需要多少钱
  • 网站内链设置wordpress前台特别慢
  • 杭州模板网站建设系统江苏省建设考试网站准考证打印