yolo8 目标检测、鉴黄

省流 看前必读 别浪费时间 :本文只是一个记录,防止自己下次被改需求时浪费时间,在这里就随意的写了一下文章记录整个步骤,但是文章想必肯定没有对应的教程讲的详细,该文章只适合想要快速按照步骤完成一个简单的 demo 的同学,并不适合想完全掌握 yolo 的同学。

一、安装环境

前言预览:

  • 环境的安装分为 anacondapytorchultralytics
  • pytorch安装需要注意自己的显卡版本选择对应的,30、40 系显卡要装 cuda 11版本,16 系显卡安装cuda 102版本(本文没有进行说明,可以搜搜找到适合自己显卡的版本,若是40系显卡跟着我步骤就ok)
  • 注意python版本不在3.8-3.11之间则会报错(以下会有一个解决办法)

1.1 anaconda

在此建议使用Anaconda,不然本地环境配了还要换,贼麻烦,Anaconda真香,我以前是懒得用的,结果现在真香。

首先安装 Anaconda,安装完毕后直接打开,简单吧,咱们 winer 就是喜欢可视化,low 也认了,我懒。

打开后如下,然后找到 create 创建当前项目的环境:
在这里插入图片描述
给予python对应版本号,记得有些版本不支持,我忘记了,就按照这个来吧,你可以自己搜一下会比较清楚:
在这里插入图片描述

1.2 pytorch

接着开始装 pytorch,地址:https://pytorch.org/get-started/locally/

截图如下:

在这里插入图片描述

安装一些老版本会比较兼容稳定,不然太新会寄,这个我就不过多解释了,做开发的都懂:

在这里插入图片描述

对了,这里对你的显卡啥的有版本要求,找到适合你的,我是 4060 ti ,选择了适合的版本(你可以搜,我忘记了,这篇文章就是临时做了一个小项目,顺手做个笔记,防止下次叫我改需求啥啥啥的):
这里我选择的是 cuda 11.8:
https://pytorch.org/get-started/previous-versions/

在这里插入图片描述

接着通过 conda 打开你的命令提示窗,就是 open Terminal:

在这里插入图片描述

输入以下命令:

conda install pytorch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 pytorch-cuda=11.8 -c pytorch -c nvidia

复制命令,enter执行:

在这里插入图片描述
在这里插入图片描述

1.2 ultralytics

yyyyy… 后,然后安装 ultralytics:

pip install ultralytics

注意,在这几步注意你的网络,你是否设置了全局镜像源,不清楚的就切换网络试试,说不定就成了。

随后到 github 的 ultralytics 中下载那个文件,我这里直接下载了压缩包:

进入 ultralytics 解压后的文件夹 -e. 安装,注意,使用 cd 进入目录,不会的搜搜 cd 命令是干啥的用的,就是 cd 后面一个目录就进去了,进不去注意切换盘符,例如默认C盘,你进入了D盘你cd后还需要 d: 才可以(建议学学不然说不明白,从基础说起来又太多了,这里就给小白玩家一个提示。):

pip install -e .

随后就开始安装:
在这里插入图片描述

1.4 有报错的注意

若python版本不在3.8-3.11之间则会报错,找不到指定的模块:\site-packages\torch\lib\fbgemm.dll
在这里插入图片描述
解决办法:将python版本换回

在运行此命令之前尝试执行conda clean --all此操作,否则可能有缓存的原因会导致你安装不了:
在这里插入图片描述
安装完毕后,可以使用 yolo 命令,看看能不能用:

yolo predict model=yolov8n.pt source=ultralytics/assets/bus.jpg

以上命令是 yolo 就是表示使用 yolo ,你可以这样理解,随后 predict 表示预测,连起来就是使用 yolo 预测,model 表示选择模型是 yolov8n.pt 就是后缀就不用理了,source 表示预测的那个图片位置,在这里选择的目录是 ultralytics/assets/ 下的 bus.jpg 文件,随后会直接进行人像的预测。

简而言之:

yolo predict model=模型选择 source=你要预测的图片

1.5 代码预测方式如下:

代码:

from ultralytics import YOLOyolo=YOLO("./yolov8n.pt",task="detect")
res=yolo(source="./ultralytics/assets/bus.jpg")

代码执行:
在这里插入图片描述

二、在线标注网站

2.1 导入文件

咱们在这里使用在线的标注网站,轻松方便直接标注直接使用。
打开标注网站 :
https://www.makesense.ai/

直接选择 start 开始:

在这里插入图片描述
把你的图片拖进来,我这里拖了51张图片:

在这里插入图片描述
选择目标检测 object detection:
在这里插入图片描述

2.2 label 标注

随后的界面会说你的当前 label 标签是空的:
在这里插入图片描述
点击中间创建 标签:

在这里插入图片描述
点击 + 号可以添加标签,我这里直接添加 A 和 B 标签:
在这里插入图片描述
之后点击接受即可:
在这里插入图片描述
唔然后我发现改版了这个网站,以前直接是个十字架你直接画框就好,现在要自己选,选择画框,有可能你不需要选也得:在这里插入图片描述
然后鼠标放到你图片上画个框,就是你需要检测的对象长啥样,你就把他框出来(由于我图片敏感就不做演示,如果你要检测人你就框人,检测某一个特定logo你就框那个 logo):
在这里插入图片描述
框了后在这里选择你框出来的目标的分类:
在这里插入图片描述
有可能我这里标签是男人、女人,那么我这里框出来男人就选择标签为男人的选项,我这里就用A、B表示了。

随后在左上角 Action 操作中选择导出:
在这里插入图片描述
随后弹出来后选择 yolo 格式的 zip 文件,这个看你自己,我是需要 zip 的,txt 格式的文件:
在这里插入图片描述
随后导出后,会下载一个压缩包,解压后里面有 txt 的文件:

在这里插入图片描述

三、模型训练代

进行模型训练和预测我们需要准备好对应的目录以及标注文件,例如 dataset目录,在 dataset目录下创建对应的图片 train 训练文件夹以及验证文件夹 val。当然 dataset 目录下是分不同项目的,不同项目不同文件夹,在这里我用 gjf 表示我的项目名,在 gif 下创建对应的训练目录以及验证目录(继续往下看吧)。

3.1 目录和文件准备

训练前准备,在 yolo 根目录创建一个 dataset:
在这里插入图片描述

打开文件目录,在 datasets 下创建一个 gif,你可以认为 gif 为当前项目的数据集名称,毕竟需要创建不同的名称为数据集分类。

接着 在 gif下创建一个 images 文件夹,用于存放对应的图片数据集,但我们的图片数据集分为训练和验证,再次两个种类分别创建两个目录,一个为 train 用于训练,另一个叫做 val 用于验证。

接着我们需要再创建一个 label 文件夹用于存放对应的标注文件:

在这里插入图片描述
同样,对应的label 有用于训练的以及用于验证的,那么此时在labels 文件夹下创建两个对应的 train 和 val 文件夹:
在这里插入图片描述

此时我们回到存放image 文件夹下,在 train 文件下把我们拿来标注的图片复制过来:
在这里插入图片描述
接着我们选取几张图片进行剪切存放到 val 文件夹下:
在这里插入图片描述
在此我选择6张图片剪贴到 val下:

在这里插入图片描述
随后打开标注文件下的 train 中;
在这里插入图片描述
复制之前下载的标注内容到此文件夹:
在这里插入图片描述

此时你还记得,之前剪切到 val 中的 image 图片吗?我是 6、7、8、66、67、68 这 6 个文件,此时将他们的数据在 labels 下的 train 文件夹中进行剪切,复制到 labels 下的 val 文件夹中,因为我们要做到 labels 于 images 文件夹下的文件一一对应,这是原因:

在这里插入图片描述
此时还差最后一步,我们回到 labels 文件夹下创建一个 classes.txt 文件:

在这里插入图片描述

此文件是说明咱们训练的内容分为几个类别,在此我是两个类别,其中内容为(这里要跟你标注的标签一致,我之前使用 A、B做标签的,所以在这里应该是A、B,这是以前的项目所以就没发改了,就这样了,你理解就ok):
在这里插入图片描述
这个类型请按照你自己的进行自定义。

3.2 配置项

接下来开始做训练前的最后一步,创建我们 gjf 项目的配置文件,在根目录下创建一个 .yaml 文件,当然你可以自命名,我是命名为了 gif,这个文件是配置作用:

在这里插入图片描述
其中编写如下配置信息:
在这里插入图片描述

XML 如下:

path: gjf # datasets 下的哪个项目
train: images/train # 训练图片在哪
val: images/val # 验证目录在哪
test: # test images (optional)# Classes
names:0: GJF1: SQ

随后执行命令:yolo task=detect model=./yolov8n.pt data=gjf.yaml epochs=25 workers=1 batch=16

若出现文件找不到之类的问题或者模型找不到,请使用绝对路径,那样可以暂时解决你的错误,但是你还需要自己调整一下当前你的系统环境,这是另外的问题在此就不再多说,查资料就ok。

解决执行完毕后,顺利无误将会出现以下结果:
在这里插入图片描述

此时结果告诉我保留咋爱了某个目录下的 runs\detect… 中,best.pt 是最好的模型结果,那我们使用 best.pt 检测一下我们目标识别效果如何:

yolo detect predict model= runs/... source= ..... show=true

以上命令记得把哪个 … 啥的 路径 改成你自己的目录

3.3 代码检测某一图片是否有目标

接着我们使用代码运行查看结果 :

import cv2
from ultralytics import YOLO# 加载训练好的模型
model = YOLO("path_to_your_trained_model.pt")
# 读取图片
image_path = "path_to_your_image.jpg"
img = cv2.imread(image_path)
# 进行检测
results = model.predict(source=img, save=False)if len(results[0].boxes) > 0:print("有")
else:print("没有")

结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/414912.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Next.js 入门指南】5分钟创建你的第一个 Next.js 应用

你是否曾经梦想过构建一个快速、高效且 SEO 友好的 React 应用?今天,我们将一起探索 Next.js —— 一个革命性的 React 框架,它将帮助你轻松实现这个梦想。在接下来的 5 分钟里,你将创建并运行你的第一个 Next.js 应用&#xff0c…

23:【stm32】ADC模数转换器

ADC模数转换器 1、ADC的简介2、逐次逼近型ADC3、采样时间和转换时间4、STM32中ADC模块5、编程案列5.1、AD单通道5.2、AD多通道 1、ADC的简介 ADC就是一个模数转换器,将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁…

春秋云镜(ZZCMS 2023)·CVE-2023-50104

漏洞参考说明:GitHub - zzq66/cve4 漏洞复现: 1、访问 URL/3/E_bak5.1/upload/index.php 2、使用默认账户密码admin/admin登录 3、上传恶意语句 修改tablename字段为eval($_POST[1]) POST /3/E_bak5.1/upload/phomebak.php HTTP/1.1 Host: eci-2zehp12…

华为云征文 | 华为云Flexus云服务器X实例之Docker环境下部署JmalCloud个人网盘

华为云征文 | 华为云Flexus云服务器X实例之Docker环境下部署JmalCloud个人网盘 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、JmalCloud介绍2.1 JmalCloud简介2.2 JmalCloud优点2.3 JmalCloud使…

阿里云身份证二要素详细使用

初步: 先登录阿里云(找官网链接) 2、云市场搜索身份证二要素 看个人需求选择 3、我选择的是下边这个 4、接下来看文档具体调用(在请求示例中有选择语言的代码 我选择的就是java) 5、在控制台看appcode码 放入代码中…

揭秘难以复现Bug的解决之道:堆栈分析实战

目录 引言 友情提示难以复现的Bug之痛 寄存器(SP、LR)详解 SP寄存器:堆栈的指路明灯LR寄存器:函数调用与异常处理的桥梁 问题分析与解决流程揭秘 保存现场分析堆栈数据 堆栈结构入栈顺序 案例 J-Link工具 常用命令保存RAM数据到本地 分析栈基本信息 分…

全国大学生数据建模比赛——深度学习

全国大学生数学建模比赛中,深度学习可以成为解决复杂问题的有力手段。 一、深度学习的优势在比赛中的体现 强大的模式识别能力:深度学习模型,如卷积神经网络(CNN)和循环神经网络(RNN)&#xff0…

如何在 Raspberry Pi 5 上设置 Raspberry Pi AI Kit

本指南将帮助您在 Raspberry Pi 5 上安装 Raspberry Pi AI Kit。这将使您能够使用 Hailo AI 神经网络加速器运行 rpicam-apps 摄像头演示。 如果您在开始安装人工智能套件之前需要帮助,本指南提供了安装过程的分步图片。 安装人工智能套件:https://www.…

【初出江湖】SOA 与微服务:哪个最适合您的业务?

目录标题 面向服务的体系结构 (SOA)SOA 角色那么它们是如何通信和协同工作的呢? SOA 的优势 微服务架构微服务的优势 SOA 和微服务之间的区别SOA 与微服务:常见问题采用 SOA 和微服务面临哪些挑战?SOA 和微服务是否可以共存?每种体…

wpf prism 《1》、区域 、模块化

安装prism.DryIoc 修改app.xaml <prism:PrismApplication x:Class"WpfApp3.App"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local"clr-namespace:W…

vue2的使用

准备容器引包&#xff08;官网&#xff09; — 开发版本/生产版本创建Vue实例 new Vue()指定配置项&#xff0c;渲染数据 el:指定挂载点data提供数据 可以把线上的cdn的vue的地址下载到本地进行依赖。 Vue2下载地址 https://v2.vuejs.org/v2/guide/installation.html vue.js没…

Linux虚拟机搭建K8S环境

文章目录 一、环境准备二、系统初始化三、部署master四、添加node节点五、部署网络六、部署dashboard七、登录dashboard面板 一、环境准备 首先在vmware上新建4台相同配置的虚拟机&#xff0c;除了IP和主机名外&#xff0c;其余配置相同。由于是搭建K8S初始环境&#xff0c;没…

开学寄快递,行李轻松寄,出行无压力

“春风得意马蹄疾&#xff0c;一日看尽长安花。”新的学期&#xff0c;新的征程&#xff0c;新生们在准备迎接开学时&#xff0c;不想拖着重重的行李开学的&#xff0c;那么寄快递这件事可得提上日程啦! 一、如何选择快递 如何选择一家价格实惠的快递公司成为了大家关注的焦点…

Linux bash脚本 批量创建文件

目录 一. 需求二. 前置知识一. 无进度条版本1.1 知识点1.2 代码1.3 效果 二. 有进度条版本2.1 代码2.2 效果 一. 需求 在当前目录下生成指定年份的文件&#xff0c;要求从生成1月到12月&#xff0c;每个月份的文件。 若用户不指定年份&#xff0c;则默认生成当前年的文件提示…

【C++】手动实现String类的封装(分文件编译)

实现了String类的大部分封装&#xff0c;采用分文件编译 //mystring.h #ifndef MYSTRING_H #define MYSTRING_H#include <iostream> #include <cstring> using namespace std;class myString { private:char *str; //定义一个字符串int size; //记录字符串…

[知识分享]华为铁三角工作法

在通信技术领域&#xff0c;尤其是无线通信和物联网领域&#xff0c;“华为铁三角”是华为公司内部的一种销售、交付和服务一体化的运作模式。这种模式强调的是以客户为中心&#xff0c;通过市场、销售、交付和服务三个关键环节的紧密协作&#xff0c;快速响应客户需求&#xf…

tensorrt plugin

自定义plugin 流程 首先明确要开发的算子&#xff0c;最好是 CUDA 实现&#xff1b;继承 IPluginV2DynamicExt / IPluginV2IOExt类实现一个Plugin 类&#xff0c;在这里调用前面实现的算子&#xff1b;继承 IPluginCreator 类实现一个 PluginCreator 类&#xff0c;用于创建插…

JeecgBoot积木报表AviatorScript表达式注入漏洞复现

文章目录 漏洞信息漏洞复现环境搭建poc复现DNSLog验证 漏洞信息 影响组件&#xff1a;JimuReport积木报表 影响版本&#xff1a;v1.6.0 &#xff1c; JimuReport ≤ 1.7.8 漏洞名称&#xff1a;AviatorScript表达式注入漏洞 漏洞链接&#xff1a;积木报表软件存在AviatorSc…

redis分布式是如何实现的(面试版)

需要结合项目中的业务进行回答&#xff0c;通常情况下&#xff0c;分布式锁使用的场景&#xff1a;集群情况下的定时任务、抢单、幂等性场景。 下面先来看一个抢卷场景&#xff1a; 以下情况会出现超卖情况&#xff1a; 因为线程会交替执行&#xff0c;所以线程查询优惠价的数…

在大语言模型中,生成文本的退出机制,受max_generate_tokens限制,并不是所有的问答都完整的跑完整个transformer模型

目录 在大语言模型中,生成文本的退出机制,受max_generate_tokens限制,并不是所有的问答都完整的跑完整个transformer模型 1. max_generate_tokens的作用 2. 退出机制与Transformer模型 3. 实际应用中的影响 4. 结论 在大语言模型中,生成文本的退出机制,受max_genera…