实战 | 使用YoloV8实例分割识别猪的姿态(含数据集)

导  读

    本文主要介绍如何使用YoloV8实例分割识别猪的姿态(含数据集)。

背景介绍

    在本文中,我将介绍如何使用YoloV8在猪的自定义数据集上进行实例分割,以识别和跟踪它们的不同姿态。

图片

      

数据集

    使用的数据集来源于Kokkenborg Aps,下载地址:

https://365ucl.sharepoint.com/:f:/s/dataset-oft/Eicf36oizq1DvISOjGEHuwABFA6z1Z22zewM2rPWJzFBWg?e=y88D5Y

图片

    样本图片:

图片

    标注好的json文件:

图片

    注意:数据集是使用LabelMe标注的,是json格式

https://github.com/wkentaro/labelme

    YoloV8使用的是txt格式,这里可以借助labelme2yolo来转换:

https://pypi.org/project/labelme2yolo/

图片

图片

图片

      

项目搭建

    数据集准备好后,打开终端并创建一个项目目录,您要在其中放置数据和我们要编写的脚本。请注意,本教程假定您正在 Linux 平台上工作。

mkdir Pigs_Yolov8

    进入你创建的目录:

cd Pigs_Yolov8

    从现在开始我们将其作为项目根目录,所有终端调用都将从这里进行。

    将包含图像和json文件的文件夹添加到项目根目录文件夹中,并将该文件夹命名为:PigsCam1ImagesAndJson。

    就我而言,我在两个单独的文件夹中有图像和 json 文件,我只是将它们合并到一个名为PigsCam1ImagesAndJson的新文件夹中。这是您需要的三个文件夹中唯一的一个。

图片

    接下来创建一个虚拟环境,我们可以在其中安装项目所需的所有依赖项。

    这是创建虚拟环境的命令。最后一个词是环境的名称。

python3 -m venv PigYolov8Venv

    虚拟环境将在您当前所在的目录中创建。

    接下来激活环境:

source PigYolov8Venv/bin/activate

图片

图片

    现在您应该在项目的根目录中看到您的虚拟环境。如果您不熟悉虚拟环境,虚拟环境的目的是将当前项目中安装的包与计算机上的其他项目分开,这样您就可以避免项目之间的版本不匹配。

    接下来,将以下软件包安装到您的虚拟环境中。确保位于项目文件夹的根目录中,并激活虚拟环境。

pip install numpy==1.21.2 scipy==1.7.0 scikit-learn==1.0 matplotlib==3.4.3 pandas==1.3.2pip install labelme2yolopip install ultralytics

    现在我们要将数据集格式转换为 Yolov8 的格式。

    运行以下命令创建yolov8dataset(将目录更改为指向您自己的目录)

labelme2yolo - json_dir /home/simonadmin/Documents/Pigs_Yolov8/PigsCam1ImagesAndJson - val_size 0.15 - test_size 0.15

    参数 –val_size 和 –test_size 指定用于验证和测试的数据集的大小。

图片

图片

    您现在应该有一个名为 YoloDataset 的文件夹,其中包含一个图像文件夹、一个标签文件夹和一个 dataset.yaml 文件。

    图像和标签都分为 train、test 和 val 文件夹(见下文并检查它是否与您自己的文件夹结构匹配)。

图片

图片

图片

训练

    为了训练模型,您需要确保安装了 torch,并且最好在 GPU 上运行。

    您可以通过以下命令检查 torch 是否已安装并正在运行:

图片

    如果未安装 torch,请转到https://pytorch.org/并按照安装程序进行操作。

    现在我们将微调现有模型,以便能够学习我们的自定义类别。

    用于训练的模型可以在以下链接中找到:

https://github.com/ultralytics/ultralytics#models

(进入分割部分),其中显示了下表。从这个表中,我们只需要名称和大小作为训练算法的参数。

图片

    实际的文件名是蓝色的名称,后跟扩展名.pt。例如。如果我们想使用        YOLOv8m-seg模型,我们需要名称YOLOv8m-seg.pt

    我们需要的其他参数是:

    • size参数,为 640。

    • 我们还需要定义 epoch 的数量(即训练时间),在我们的例子中,我们将其设置为 100 个 epoch。epoch 的数量主要取决于您愿意等待多长时间,epoch 越多,结果越好,但是,总有一个点是无法实现任何改进的,因此从 100 个 epoch 开始似乎是个好主意。

    • batch size大小。这取决于你的 GPU,我使用 8 作为批次大小。

    • 什么类型的任务task,在本例中是分割segmentation 。

    • 哪种模式mode,也就是训练training。

以及 dataset.yaml 文件的路径,它指向我们的数据、标签和要识别的类的数量。在我们的例子中,这是四个类(见下图)。确保路径与您在计算机上的期望相符。

图片

    下面是完整指令:

yolo task=segment mode=train epochs=100 data=/home/simonadmin/Documents/Pigs_Yolov8/PigsCam1ImagesAndJson/YOLODataset/dataset.yaml model=yolov8m-seg.pt imgsz=640 batch=8

图片

    结果应该是这样的:

图片

    训练完成后,您会注意到项目文件夹的根目录中已创建一些文件和文件夹。

图片

    这两个 .pt 文件是脚本下载以完成其工作的模型。文件夹“runs”包含我们执行的不同训练运行。

    在运行文件夹中,您可以图形化地查看训练的进展情况或是否应该进行更长时间的训练。

图片

    以下是验证进展顺利的一些示例。

图片

推理

    现在到了真正有趣的部分。我们要试驾一下我们的新模型。

    为了测试模型,您需要猪的图像和/或视频,最好是从与训练数据相同的位置拍摄。

    接下来,在运行文件夹内,进入权重文件夹(下面的路径层次结构)

图片

    复制文件 best.pt 并将其放置在项目的根文件夹中(其他 .pt 文件所在的位置)。

    将猪的视频和/或图像也添加到根中。

创建测试脚本

    在您最喜欢的编辑器中创建一个名为 predict.py 的小脚本,并添加以下内容:

from ultralytics import YOLOmodel = YOLO("/home/simonadmin/Documents/Pigs_Yolov8/best.pt")model.predict(source= "/home/simonadmin/Documents/Pigs_Yolov8/PigMovieNew.mov", show=True, save=True, conf=0.5, save_txt=False, save_crop=False, show_labels=True)

图片

    视频格式不一定是.mov,也可以是.mp4或.avi

    如果你想在图像上进行测试,那么只需将源参数更改为指向你机器上的图像即可。

图片

    将脚本放置在项目的根目录中并使用以下命令运行它:

python predict.py

    测试结果:

图片

    非常好!模型似乎已经正确识别了猪。

    这是我们视频的结果(请注意:该视频是由多个图像创建的,这就是为什么它看起来像是滞后的原因)。

图片

    视频效果可能会更好,但这可能需要更大的数据集,尤其是姿势更均匀表示的数据集。

    使用 Yolov8 时,可以记录某一类别的猪的数量(例如正在进食的猪),这样您就可以随时统计猪的数量。还可以跟踪猪,从而可以选择创建图表来显示特定猪活跃或不活跃的时间。

—THE END—

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

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

相关文章

【话题】你眼中的IT行业现状与未来趋势

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 引言一、IT行业的现状1.1 云计算与大数据1.2 人工智能与机器学习1.3 物联网与5G通信1.4 区块链技术 二、IT行业未来发展趋势2.1 边缘计算与智能设备2.2 深度学习与自然语…

告别繁琐!Xinstall助你轻松实现APP地推结算,提升推广效率

随着移动互联网的迅猛发展,APP市场竞争日益激烈。面对线上推广转化率下降、成本上升的挑战,越来越多的APP厂商开始尝试线下地推这一更为直接、有效的推广方式。然而,地推结算过程中的种种问题却让许多企业头痛不已。今天,我们将为…

亲测使用frp获得访问者真实ip

怎么访问都只有127.0.0.1这个内网ip,获取不到访问者的真实ip 1.打开frp的配置文件(一般是frpc.toml,无需设置frps.toml) 在每一个tcp协议中添加 transport.proxyProtocolVersion "v2" 实例: # frpc.toml [[proxies]] name "web" …

CSS学习笔记:flex布局(弹性布局)

设置flex布局 父元素添加display: flex 使用justify-content调节元素在主轴的对齐方式 给父元素添加justify-content属性,取值如下 用于调节子元素在主轴方向(水平方向)的对齐方式 使用align-items调节元素在侧轴的对齐方式 给父元素添加…

华为机考入门python3--(31)牛客31-单词倒排

分类:字符串、正则 知识点: 正则提取所有符合的字符串 words re.findall(r[a-zA-Z], sentence) 列表倒序 words[::-1] 题目来自【牛客】 import re # 导入正则表达式模块def reverse_words(sentence):# 使用正则表达式将句子拆分成单词# 如可以将…

GM Bali,OKLink受邀参与Polygon AggIsland大会

5月16日-17日,OKLink 受到生态合作伙伴 Polygon 的特别邀请,来到巴厘岛参与以 AggIsland 为主题的大会活动并发表演讲,详细介绍 OKLink 为 Polygon 所带来的包括多个浏览器和数据解析等方面的成果,并与 Polygon 一起,对…

Apache Flink CDC 3.1.0版本知识学习

Apache Flink CDC 3.1.0版本知识学习 一、Flink CDC 3.1 快速预览二、Transformation 支持三、分库分表合并支持四、使用 Kafka Pipeline Sink 高效写入 Canal/Debezium 格式数据五、更高效地实时入湖 Paimon六、其他改进七、Flink CDC 3.1 版本兼容性 一、Flink CDC 3.1 快速预…

phpmyadmin漏洞汇总

phpmyadmin是一个非常常用的框架,所以学习它的常见漏洞是非常必要的。 参考大佬的文章进行自学:最全phpmyadmin漏洞汇总_phpmyadmin弱口令-CSDN博客 目录 phpmyadmin简介 查看phpmyadmin版本 漏洞及利用 万能密码登入 影响版本 漏洞POC 远程代码…

【传知代码】无监督动画中关节动画的运动表示(论文复现)

前言:在数字动画的广袤领域中,关节动画以其真实、流畅的运动表现,一直占据着举足轻重的地位。无论是电影中的震撼特效,还是游戏世界的角色互动,关节动画都以其细腻的运动表现,赋予虚拟世界以生动与活力。然…

Excel某列中有不连续的数据,怎么提取数据到新的列?

这里演示使用高级筛选的例子: 1.设置筛选条件 在D2单元格输入公式:COUNTA(A4)>0 这里有两个注意事项: *. 公式是设置在D2单元格,D1单元格保持为空, **. 为什么公式中选A4单元格,A列的第一个数据在A3…

CPU数据传送控制方式

引入 为了实现CPU与I/O设备信息交换的同步 无条件传送 示例1: 示例2: 程序查询方式 引入 工作过程 单个外设 多个外设 特点 中断传送方式 工作过程 特点 DMA 概述 DMAC功能 总线请求信号HOLD 总线请求响应信号HOLDA 工作过程 小结

景源畅信:新手做抖音运营难不难?

在这个信息爆炸的时代,社交媒体平台如抖音已经成为了人们日常生活中不可或缺的一部分。随着抖音的兴起,越来越多的人开始尝试进入这个领域,希望通过抖音运营实现自己的价值。然而,对于新手来说,抖音运营是否真的容易呢…

文心智能体大赛:情深智导

情深智导 概述限制澄清个性化 预览体验 概述 情深向导,致力于为您和您的孩子提供科学、个性化的情感支持与指导。无论您在家庭教育上遇到什么困惑,或是想了解孩子的内心世界,我都会在您身边,与您共同探索,助力亲子关系…

keepalived交叉编译

前言 Keepalived可以实现对服务器的健康检查,当主服务器出现故障时,自动将服务切换到备份服务器上,确保服务的连续性,避免单点故障。它还可以管理一个虚拟 IP 地址,在主备服务器之间进行灵活切换,对外提供…

使用 Python 编程语言进行供应链分析

前言 要分析一家公司的供应链,我们需要供应链不同阶段的数据,如有关采购、制造、运输、库存管理、销售和客户人口统计的数据。我为这项任务找到了一个理想的数据集,其中包括一家时尚和美容初创公司的供应链数据。 1. 相关数据集 让我们导入…

打造坦克游戏:类方法的深入解析

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:坦克游戏与类方法的结合 二、坦克类的属性与方法概述 1. 属性定义与初…

Modbus协议基础

文章目录 Modbus概述Modbus TCP/IP Modbus概述 Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的应用层总线协议。 为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施…

Ubuntu 安装 LibreOffice

1. 删除预安装的LibreOffice Ubuntu 和其他的 Linux 发行版带有预安装的 LibreOffice。这可能不是最新的,这是因为发行版有特定的发行周期。在进行新安装之前,你可以通过以下命令删除 Ubuntu 及其衍生发行版中的的旧版本。 sudo apt remove –purge li…

vs code怎么补全路径,怎么快捷输入文件路径

安装插件: 链接:https://marketplace.visualstudio.com/items?itemNamejakob101.RelativePath 使用 按住 Ctrl Shift H,弹出窗口,输入文件补全,回车就可以了 排除文件 如果你的项目下文件太多,它会…

基础—SQL—图形化界面工具的DataGrip使用(2)

一、回顾与引言 (1) 上次内容,博客讲到了DDL语句的数据库操作、表操作、表字段的操作的相关语法,然而之前都是在MySQL的命令行当中去操作演示的。这种方式可以用,但是使用的话,第一,在我们日常…