【总结】CycleGAN+YOLOv8+DeepSORT

本文概述了作者前期的工作,包括使用CycleGAN进行无配对图像风格转换的详细步骤,YOLOv8的目标检测和跟踪网络配置,以及DeepSORT在对象跟踪中的应用。涉及数据集设置、环境配置、参数优化和模型训练/测试过程。
摘要由CSDN通过智能技术生成

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

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中

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将YOLOv5 DeepSort移植到Android上,需要以下步骤: 1. 配置开发环境:确保已经正确安装了Android Studio和相关的SDK和NDK工具。下载YOLOv5 DeepSort的代码库并解压。 2. 导入代码库到Android Studio:在Android Studio中选择导入项目,将YOLOv5 DeepSort的代码库导入到Android Studio中。 3. 配置CMake文件:创建一个名为CMakeLists.txt的文件,并在其中添加适当的编译设置和依赖项。确保路径和库名正确设置。 4. 修改JNI接口:将YOLOv5 DeepSort的C++代码转换为JNI接口,以便在Android上进行调用。修改C++代码,使其能够与Java代码进行交互。 5. 编译和构建:使用Android Studio提供的编译工具,将代码编译成Android可执行文件。确保设置正确的目标架构,以适配目标设备。 6. 测试和调试:将生成的应用程序安装到Android设备上,并进行测试和调试。确保YOLOv5 DeepSort在Android上能够正常运行,并且检测和跟踪目标准确。 7. 优化和性能调整:根据Android设备的性能和资源限制,对YOLOv5 DeepSort进行优化和性能调整。可以使用一些优化技术,例如减少模型大小、使用硬件加速或推理引擎等。 8. 发布应用程序:一旦在Android上成功移植并调试了YOLOv5 DeepSort,就可以将应用程序打包并发布到Google Play商店或其他应用分发平台。 这些步骤是将YOLOv5 DeepSort移植到Android上的基本过程。但需要注意的是,移植过程可能会有一些挑战和技术难点,需要有一定的Android和深度学习模型开发经验才能顺利完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万里守约

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值