【总结】CycleGAN+YOLOv8+DeepSORT

本文章仅对本人前期工作进行总结,文章内容供读者参考,代码不对外公开

文章目录

  • 1、CycleGAN
    • 1.1 数据集配置
    • 1.2 环境配置
    • 1.3 参数配置
    • 1.4 可视化训练过程
    • 1.5 训练结果
    • 1.5 结果测试
  • 2、YOLOv8
    • 2.1 数据集配置
    • 2.2 网络结构配置
    • 2.3 训练细节
    • 2.4 测试
  • 3、DeepSORT

1、CycleGAN

CycleGAN是一种用于无配对图像风格转换的深度学习模型,能够在没有成对训练数据的情况下,实现不同域之间的图像风格转换。

1.1 数据集配置

在dataset文件夹下创建自己的数据文件夹mydata

dataset
├── mydata
|   ├── trainA
|   ├── trainB
|   ├── testA
|   └── testB

其中,trainA和trainB文件夹分别放源域图片和目标域图片,testA和testB文件夹分别放要测试的图片。

1.2 环境配置

在菜单栏Run->Edit Configurations中进行数据集的配置
在这里插入图片描述

配置页面中选择train选项,进行配置

在这里插入图片描述
如果进入配置页面中没有出现train选项,可以先运行一下train.py,报错没有配置数据集路径,然后再次进入配置页面就出现train选项了。

1.3 参数配置

options文件下有train_options.py和test_options.py文件,分别用于训练和测试过程中的参数配置,训练时的参数主要修改opochs,这两个参数之和即为总的训练轮数,如图所示即为训练50轮。
在这里插入图片描述
测试过程中参数无需调整。

环境和数据配置好后直接运行train.py即可开始运行CycleGAN网络

1.4 可视化训练过程

如果想观察训练过程中的细节,则可以开启visdom服务(可视化界面),运行前在终端输入指令:

python -m visdom.server

在这里插入图片描述
点击链接即可打开网页,此时页面内是空白的,运行训练代码后刷新网页即可看到训练过程。

1.5 训练结果

训练结束后,权重文件保存在checkpoints文件夹下的mydata_cyclegan中

checkpoints
├── mydata_cyclegan
|   ├── 5_net_D_A.pth
|   ├── 5_net_D_B.pth
|   ├── 5_net_G_A.pth
|   └── 5_net_G_B.pth
|   ├── 10_net_D_A.pth
|   ├── 10_net_D_B.pth
|   ├── 10_net_G_A.pth
|   └── 10_net_G_B.pth
|   └── 。。。

默认是每隔5轮保存一次结果,也可以修改训练参数save_epoch_freq指定轮数间隔保存
其中,字母D表示判别器结果,G表示生成器结果,A、B代表域之间的转换方向

1.5 结果测试

测试时,首先将训练好的权重文件拷贝到checkpoints文件夹下的mydata_pretrained中,并且改名为latest_net_G.pth

checkpoints
├── mydata_pretrained
|   ├── latest_net_G.pth
|   ├── test_opt.txt
├── mydata_cyclegan
|   ├── 5_net_D_A.pth
|   ├── 5_net_D_B.pth

例如,我要测试A->B的转换效果,将10_net_G_A.pth文件复制到mydata_pretrained中,并改名latest_net_G.pth
配置测试环境,和配置训练环境一样,在Edit Configurations中选择test,进行配置,数据路径写的是testA的路径
在这里插入图片描述
配置好后,运行test.py即可进行测试。
测试结果的保存地址为.\results\mydata_pretrained

在images文件夹中保存有原图和转换后的图,点击index.html可以在网页中查看对比效果
在这里插入图片描述

2、YOLOv8

YOLOv8网络架构可以分为主干网络(Backbone)、颈部(Neck)和头部(Head)三个主要部分,其自身包含了目标分类、目标检测、语义分割、姿态估计、目标跟踪。本人只使用到了目标检测和跟踪。

2.1 数据集配置

数据集配置文件为yaml格式,其内容如下,path指根目录,val为验证图片,test为测试图片,nc指目标类别,names为目标类别的名称。本人的任务为语义分割,故目标类别为1
其中train和val是模型训练过程中会用到的数据集,test数据集可作为模型性能的验证数据集

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: D:\Desktop\gasdata\12remove_color_50  # dataset root dir
train: D:\Desktop\gasdata\12remove_color_50\images\train  # train images (relative to 'path') 4 images
val: D:\Desktop\gasdata\12remove_color_50\images\val  # val images (relative to 'path') 4 images
test:  D:\Desktop\gasdata\12remove_color_50\images\test  # test images (optional)

nc: 1

# Classes
names:
  0: gas

数据集实际目录结构如下:

root
├── images
|   ├── train
|   |   ├── image01.jpg
|   |   ├── image02.jpg
|   ├── val
|   |   ├── image03.jpg
|   |   ├── image04.jpg
|   ├── test
|   |   ├── image05.jpg
|   |   ├── image06.jpg
├── labels
|   ├── train
|   |   ├── label01.txt
|   |   ├── label02.txt
|   ├── val
|   |   ├── label03.txt
|   |   ├── label04.txt
|   ├── test
|   |   ├── label05.txt
|   |   ├── label06.txt

本人任务是语义分割,故txt标签为多边形框构成的,每一行由目标标签值0开头
,后续跟着坐标点的值,具体json转txt代码见本人codes备份

2.2 网络结构配置

网络结构文件在ultralytics/cfg/models/v8中

添加注意力机制方法见本人的另一篇博客

2.3 训练细节

在train.py中写好数据集路径及网络结构路径即可开始训练

## train.py
model = YOLO('yolov8-seg-SEAttention.yaml')  # 网络结构路径
model.train(data='mydata_low_color.yaml',    # 数据集路径
            cache=False,                       
            imgsz=640,                       # 网络输入图片大小
            epochs=800,                      # 训练轮数,可以写大一点,因为有早停机制
            batch=16,                        # 批大小
            close_mosaic=10,
            workers=4,
            device='0',
            optimizer='SGD', # using SGD
            project='runs/train',
            name='exp',
            )
。。。
## default.yaml   ultralytics/cfg/default.yaml
有更多详细的训练参数,patience代表早停轮数

2.4 测试

detect.py对模型进行测试,输入需要测试的图片路径,直接输出检测的结果
val.py对模型的性能进行验证,输出具体的测试指标,使用的数据集是test
track.py输入视频文件,即可对目标进行跟踪

3、DeepSORT

使用改良的模型进行目标跟踪时,要注意在ultralytics/nn/modules中加入添加的模块,本人在项目D:\Desktop\yolov8\YOLOv8_Segmentation_DeepSORT_Object_Tracking-main\ultralytics\nn中已经添加好了

找到predict_3.py文件:
D:\Desktop\yolov8\YOLOv8_Segmentation_DeepSORT_Object_Tracking-main\ultralytics\yolo\v8\segment\predict_3.py

配置网络模型文件以及视频文件,即可对目标进行跟踪,

结果保存在同级文件夹runs中,detect中保存的是跟踪的视频,results中保存的是跟踪的数据,exp0016.json即为详细的数据,每次运行后都会自动+1保存

01draw-count.py     # 目标数量变化
02draw-size.py      # 目标大小变化
03draw-move.py      # 目标位移变化
04draw-percent.py   # 目标占总面积百分比变化
05draw-ratio.py     # 目标占固定区域百分比变化

运行上述绘图代码后,自动保存到与数据文件exp016.json同名的文件夹exp016中

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

应用部署tomcat的三种方式

由于一直在用springboot框架,集成了tomcat,快忘记如何单独部署tomcat了,以下,记录一下: 部署tomcat有三种方式: 一、方式一:将war包丢进webapps 这是最简单粗暴的方式:将web工程打…

C++“流”风格日志系统实战-课程简介

一个能快速提升C复杂代码设计的学习项目,一个能迅速让C面试官会心一笑的简历项目,一个能在实际项目中使用的项目……学习什么是流?如何利用抽象层面的流编写适用面更广的代码? 每天在用的cout和cin 它们是什么类型?最后…

RadarScenes数据集详细说明

0 引言 RadarScenes数据集包含安装在一辆测量车辆上的四个汽车雷达传感器的数据。该数据集记录于2016年至2018年在德国乌尔姆。该数据集官方网址为RadarScenes - RadarScenes,详细的信息可以从该网址获取。 机器学习领域的一些出版物使用了该数据集。雷达场景论文…

【C++】类和对象④(类的默认成员函数:取地址及const取地址重载 | 再谈构造函数:初始化列表,隐式类型转换,缺省值)

🔥个人主页:Forcible Bug Maker 🔥专栏:C 目录 前言 取地址及const取地址操作符重载 再谈构造函数 初始化列表 隐式类型转换 explicit关键字 成员变量缺省值 结语 前言 本篇主要内容:类的六个默认成员函数中…

RK3568 学习笔记 : u-boot 千兆网络功能验证

前言 开发板型号: 【正点原子】 的 RK3568 开发板 使用 虚拟机 ubuntu 20.04 编译 RK3568 Linux SDK,生成镜像,烧写后,Linux 系统正常启动 开启后可以使用 CTRLC 进入 u-boot 本篇验证一下 u-boot 下网络功能 【正点原子】 rk…

TMS运输管理系统:开启高效物流之门的钥匙

TMS运输管理系统是一种集货运计划、路径规划、运输执行和跟踪管理于一体的综合管理系统。它利用现代信息技术和互联网资源,帮助企业高效管理供应链,提高物流效率和降低物流成本。本文将从系统优势、功能模块和应用案例等多个方面详细介绍TMS运输管理系统…

PHP校验15位和18位身份证号

第十八位数字的计算方法为: 1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分 别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 2.将这17位数字和系数相乘的结果相加。 3.用加出来和除以11,看余数是多少? 4…

ESP32-Thonny 拍摄图片到SD卡

前言: 代码运行在Thonny 添加main.py到单片机中: 可以先运行一下试试:会输出以下信息: 没有问题的话(SD卡挂载成功,摄像头初始化成功)运行一次主程序后,闪光灯会闪烁一下。 代码&…

React首次加载渲染2次的问题

在开发React项目的时候,发现useEffect会调用2次的情况,依赖数组明明没有变化,怎么会调用2次?百思不得其解,依赖没变化的话,那肯定是整个组件重渲染了。 最最简单的代码如下: const container …

Python | Leetcode Python题解之第41题缺失的第一个正数

题目&#xff1a; 题解&#xff1a; class Solution:def firstMissingPositive(self, nums: List[int]) -> int:n len(nums)for i in range(n):while 1 < nums[i] < n and nums[nums[i] - 1] ! nums[i]:nums[nums[i] - 1], nums[i] nums[i], nums[nums[i] - 1]for …

vue实现水平排列且水平居中

样式实现 .body{text-align: center; } .body_content{display: inline-block; } .body_content_cardList{display: flex;flex-wrap: wrap;text-align: center; }<div class"body"><div class"body_content"><div class"body_content…

Mybatisplus LambdaQueryWrapper表达式使用DATE_FORMAT比较日期函数

背景&#xff1a; 最近遇到一个问题&#xff0c;数据库保存的日期字段是如下格式 但是我们需要比较的日期为 2020-08-01格式&#xff0c; 所以我们要将日期格式化 使用 Mybatisplus LambdaQueryWrapper的情况下可用下面的方式做参考 LambdaQueryWrapper<SysDicCode> la…

以始为终梳理前端的发展方向

嗨&#xff0c;我是小路。一位努力向上生长的90后前端开发工程师。 以下是正文&#xff1a; 前段时间朋友和我吐槽&#xff1a;“做了多年的PHP开发&#xff0c;突然被离职&#xff0c;然后去招聘市场一看&#xff0c;发现PHP已经没有市场了。偶尔会出现一两个相关的职位&#…

因果推断(三):causalml的使用(1)_元学习器的使用

元学习器是利用一些现成的机器学习方法来进行因果推断的方法。也是相对来说最简单的进行因果推断的模型&#xff0c;在econml和causalml都有实现&#xff0c;调用也相对比较方便。 1.1. S_Learner S 指的是 single&#xff0c;在S_Learner中&#xff0c;只需要训练一个机器学…

贪吃蛇游戏C语言破解:成为编程高手的必修课!

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;C语言实战项目 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 1、游戏效果演示 贪吃蛇游戏效果演示 2、win32 A…

【深度学习实战(20)】使用torchsummary打印模型结构

一、安装torchsummary库 pip install torchsummary 二、代码 import torchvision.models as models from torchsummary import summarymodel models.AlexNet() model.to(cuda) summary(model,(3,224, 224))

AI智能边缘分析一体机,32T算力,可同时处理32路1080p高清视频

产品概述 XM-AIBOX-32智能边缘分析一体机是一款高性能、低功耗边缘计算产品。搭载BM1684X主芯片&#xff0c;INT8算力高达32TOPS&#xff0c;FP16/BF16算力高达16TFLOPS&#xff0c;FP32算力高达2TFLOPS&#xff0c;可同时处理32路高清视频&#xff0c;支持32路1080P高清视频硬…

【NOI】C++算法设计入门之深度优先搜索

文章目录 前言一、深度优先搜索1.引入2.概念3.迷宫问题中的DFS算法步骤4.特点5.时间、空间复杂度5.1 时间复杂度 (Time Complexity)5.2 空间复杂度 (Space Complexity)5.3 小结 二、例题讲解1.问题&#xff1a;1586 - 扫地机器人问题&#xff1a;1430 - 迷宫出口 三、总结四、感…

docker安装并跑通QQ机器人实践(3)-bs-nonebot搭建

NoneBot2 是一个现代、跨平台、可扩展的 Python 聊天机器人框架&#xff08;下称 NoneBot&#xff09;&#xff0c;它基于 Python 的类型注解和异步优先特性&#xff08;兼容同步&#xff09;&#xff0c;能够为你的需求实现提供便捷灵活的支持。同时&#xff0c;NoneBot 拥有大…

Rust实战 | 用 RustRover 开发猜数字游戏

#1、概述 从这期开始&#xff0c;我会以实际项目的形式&#xff0c;分享个人学习 Rust 语言的过程。期间&#xff0c;我不会讲太多语法知识&#xff0c;需要各位看官自行查阅文档&#x1f604;。 开始前&#xff0c;需具备 Rust 环境&#xff08;我用的是当前最新版本1.77.2&…