YOLOv5入门

这篇具有很好参考价值的文章主要介绍了YOLOv5入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

模型检测

关键参数

weights:训练好的模型文件

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

source: 检测的目标,可以是单张图片、文件夹、屏幕或者摄像头等

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

conf-thres: 置信度闯值,越低框越多,越高框越少

iou-thres: IOU闻值,越低框越少,越少框越多

torch.hub检测方法

安装Jupyter

命令行输入以下代码

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jupyterlab
conda install ipykernel

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

激活环境

python -m ipykernel install --name yolov5

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

新建Jupyter文件

hub_detect.ipynb

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

import torch

#Model
model = torch.hub.load("./","yolov5s",source= "local")

#Images
img = "./data/images/zidane.jpg"

# Inference
results = model(img)

# Results
results.show()

注意运行环境,在下yolov5

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

数据集构建

视频放在data02文件夹下

抽取视频帧

import cv2
import matplotlib.pyplot as plt
#%%
# 打开视频文件
video = cv2.VideoCapture("./BVN.mp4")
# 读取一帧
ret, frame = video.read()

plt.imshow(frame)

plt.imshow(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))

video = cv2.VideoCapture("./BVN.mp4")
num = 0         # 计数器
save_step = 30  # 间隔帧
while True:
    ret, frame = video.read()
    if not ret:
        break
    num += 1
    if num % save_step == 0:
        cv2.imwrite("./images/" + str(num) + ".jpg", frame)

安装标准工具labelimg

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple labelimg

使用labelimg

  • 终端输入labelimg

  • 打开需要标注的文件夹images

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

  • 设置保存路径

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

  • 点击下图的标志,将保存格式改为YOLO

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

  • 开启自动保存

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

  • 开始标注,鼠标右键点击Create RectBox

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

  • 框出两个人物,并命名

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

  • 切换下一张图片,继续标准(快捷键A下一张,D下一张,W创建RectBox)

  • 标准完成后,文件夹内容如图所示

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

模型训练

调整文件命名

命名严格一致,不能改

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

文件调整

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

设置yaml文件

  1. 复制coco128.yaml文件,并命名为bvn.yaml

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

  1. 修改bvn.yaml

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

  1. 修改train.py

文件名改为bvn

workers设置为1

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

  1. 运行train.py,训练模型

中间肯能需要下载一写东西,比较慢,慢慢等(可以挂个梯子)

报错,查看下面的报错解决

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

报错解决

页面文件太小,无法完成操作

训练过程中,发生下图所示的报错,同时pycharm崩溃

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

1. 更改虚拟内存
  1. 进入高级系统设置,应该都会进,就不说过程了

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

  1. 设置虚拟内存大小

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

2. 减小占用内容大小
  1. 新建一个fixNvPe.py程序
# Simple script to disable ASLR and make .nv_fatb sections read-only
# Requires: pefile  ( python -m pip install pefile )
# Usage:  fixNvPe.py --input path/to/*.dll
 
import argparse
import pefile
import glob
import os
import shutil
 
def main(args):
    failures = []
    for file in glob.glob( args.input, recursive=args.recursive ):
        print(f"\n---\nChecking {file}...")
        pe = pefile.PE(file, fast_load=True)
        nvbSect = [ section for section in pe.sections if section.Name.decode().startswith(".nv_fatb")]
        if len(nvbSect) == 1:
            sect = nvbSect[0]
            size = sect.Misc_VirtualSize
            aslr = pe.OPTIONAL_HEADER.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
            writable = 0 != ( sect.Characteristics & pefile.SECTION_CHARACTERISTICS['IMAGE_SCN_MEM_WRITE'] )
            print(f"Found NV FatBin! Size: {size/1024/1024:0.2f}MB  ASLR: {aslr}  Writable: {writable}")
            if (writable or aslr) and size > 0:
                print("- Modifying DLL")
                if args.backup:
                    bakFile = f"{file}_bak"
                    print(f"- Backing up [{file}] -> [{bakFile}]")
                    if os.path.exists( bakFile ):
                        print( f"- Warning: Backup file already exists ({bakFile}), not modifying file! Delete the 'bak' to allow modification")
                        failures.append( file )
                        continue
                    try:
                        shutil.copy2( file, bakFile)
                    except Exception as e:
                        print( f"- Failed to create backup! [{str(e)}], not modifying file!")
                        failures.append( file )
                        continue
                # Disable ASLR for DLL, and disable writing for section
                pe.OPTIONAL_HEADER.DllCharacteristics &= ~pefile.DLL_CHARACTERISTICS['IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE']
                sect.Characteristics = sect.Characteristics & ~pefile.SECTION_CHARACTERISTICS['IMAGE_SCN_MEM_WRITE']
                try:
                    newFile = f"{file}_mod"
                    print( f"- Writing modified DLL to [{newFile}]")
                    pe.write( newFile )
                    pe.close()
                    print( f"- Moving modified DLL to [{file}]")
                    os.remove( file )
                    shutil.move( newFile, file )
                except Exception as e:
                    print( f"- Failed to write modified DLL! [{str(e)}]")
                    failures.append( file )
                    continue
 
    print("\n\nDone!")
    if len(failures) > 0:
        print("***WARNING**** These files needed modification but failed: ")
        for failure in failures:
            print( f" - {failure}")
 
 
 
 
 
 
 
def parseArgs():
    parser = argparse.ArgumentParser( description="Disable ASLR and make .nv_fatb sections read-only", formatter_class=argparse.ArgumentDefaultsHelpFormatter )
    parser.add_argument('--input', help="Glob to parse", default="*.dll")
    parser.add_argument('--backup', help="Backup modified files", default=True, required=False)
    parser.add_argument('--recursive', '-r', default=False, action='store_true', help="Recurse into subdirectories")
 
    return parser.parse_args()
 
 
###############################
# program entry point
#
if __name__ == "__main__":
    args = parseArgs()
    main( args )
  1. 安装pefile
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pefile

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

  1. 终端运行fixNvPe.py文件
python fixNvPe.py --input E:\kaifa\Anaconda3\envs\yolov5\lib\site-packages\torch\lib\cudnn_adv_infer64_8.dll

intput后面的路径,就是报错那里,后面给的路径

出现下图所示表示执行完毕

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

RuntimeError: CUDA out of memory.

解决方式:

换小模型

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

AttributeError: ‘FreeTypeFont’ object has no attribute ‘getsize’

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

这是因为安装了新版本的 Pillow (10),pip install tf-models-official删除了该getsize 功能,降级到 Pillow 9.5 解决了该问题

解决方式:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Pillow==9.5

查看日志

终端输入tensorboard --logdir runs

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

训练效果检测

命令行输入以下命令

python detect.py  --weights runs/train/exp/weights/best.pt --source data02/BVN.mp4 --view-img

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习

YOLOv5入门,笔记,YOLO,yolov5,python,深度学习文章来源地址https://www.toymoban.com/news/detail-626201.html

到了这里,关于YOLOv5入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • YOLO系列梳理(三)YOLOv5

    前言   YOLOv5 是在 YOLOv4 出来之后没多久就横空出世了。今天笔者介绍一下 YOLOv5 的相关知识。目前 YOLOv5 发布了新的版本,6.0版本。在这里,YOLOv5 也在5.0基础上集成了更多特性,同时也对模型做了微调,并且优化了模型大小,减少了模型的参数量。那么这样,就更加适合移动

    2024年02月05日
    浏览(44)
  • 改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)

    2022.10.30 复现TPH-YOLOv5 2022.10.31 完成替换backbone为Ghostnet 2022.11.02 完成替换backbone为Shufflenetv2 2022.11.05 完成替换backbone为Mobilenetv3Small 2022.11.10 完成EagleEye对YOLOv5系列剪枝支持 2022.11.14 完成MQBench对YOLOv5系列量化支持 2022.11.16 完成替换backbone为EfficientNetLite-0 2022.11.26 完成替换backbone为

    2024年01月17日
    浏览(71)
  • [yolov5] yolo的数据标签格式

    yolov5 的标签格式 https://github.com/ultralytics/yolov5/issues/9816 你好!。感谢您询问YOLOv5🚀数据集格式。用于分割的XY坐标与用于长方体中心的标准坐标相同。 为了正确训练,您的数据必须为YOLOv5格式。有关数据集设置的完整文档以及开始培训您的第一个模型所需的所有步骤,请参阅

    2024年02月04日
    浏览(53)
  • 【YOLO】yolov5训练自己的数据集

    【Python】朴实无华的yolov5环境配置(一)   上面前期教程中,大致介绍了yolov5开发环境的配置方法和yolov5项目的基本结构,下一步就是基于yolov5预训练模型来训练自己的数据集,这对于只是想要使用yolov5这个工具的人,还是想要深入研究yolov5类似的目标识别算法的人,都是

    2024年02月11日
    浏览(51)
  • 吸烟行为检测系统(Python+YOLOv5深度学习模型+清新界面)

    摘要:吸烟行为检测软件用于日常场景下吸烟行为监测,快速准确识别和定位吸烟位置、记录并显示检测结果,辅助公共场所吸烟安全报警等。本文详细介绍吸烟行为检测系统,在介绍算法原理的同时,给出 P y t h o n 的实现代码、训练数据集以及 P y Q t 的UI界面。在界面中可

    2023年04月12日
    浏览(52)
  • 竞赛选题 深度学习YOLOv5车辆颜色识别检测 - python opencv

    🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习YOLOv5车辆颜色识别检测 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com

    2024年02月07日
    浏览(60)
  • 交通信号标志识别软件(Python+YOLOv5深度学习模型+清新界面)

    摘要:交通信号标志识别软件用于交通信号标志的检测和识别,利用机器视觉和深度学习智能识别交通标志并可视化记录,以辅助无人驾驶等。本文详细介绍交通信号标志识别软件,在介绍算法原理的同时,给出 P y t h o n 的实现代码以及 P y Q t 的UI界面。在界面中可以选择各

    2024年02月02日
    浏览(47)
  • 【YOLO系列】YOLOv5超详细解读(网络详解)

    吼吼!终于来到了YOLOv5啦! 首先,一个热知识:YOLOv5没有发表正式论文哦~ 为什么呢?可能YOLOv5项目的作者Glenn Jocher还在吃帽子吧,hh 前言 一、YOLOv5的网络结构  二、输入端 (1)Mosaic数据增强 (2)自适应锚框计算 (3)自适应图片缩放 三、Backbone (1)Focus结构 (2)CSP结构

    2023年04月09日
    浏览(80)
  • 【毕业设计】深度学习YOLOv5车辆颜色识别检测 - python opencv

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月16日
    浏览(50)
  • 行人车辆检测与计数系统(Python+YOLOv5深度学习模型+清新界面)

    摘要:行人车辆检测与计数系统用于交通路口行人及车辆检测计数,道路人流量、车流量智能监测,方便记录、显示、查看和保存检测结果。本文详细介绍行人车辆检测,在介绍算法原理的同时,给出 P y t h o n 的实现代码、 P y Q t 的UI界面以及训练数据集。在界面中可以选择

    2024年02月01日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包