利用红外图像数据集FLIR Thermal Starter训练yolov5目标检测算法

2023-05-16

Yolov5代码:https://github.com/ultralytics/yolov5
数据集:https://www.flir.com/oem/adas/adas-dataset-form/
运行环境:Ubuntu 16.04+CUDA10.1+Python3.6

1、创建环境

1.1 创建虚拟环境yolo

conda create -n yolo python=3.6
source activate yolo

1.2 解压yolov5-master,并进入文件夹

在这里插入图片描述

安装需要的各种库

pip install -r requirements.txt

默认装的torch版本应该是最新版本的1.9,torchvision是0.10,低版本CUDA可能无法支持,这会导致训练的时候默认调用CPU而不是GPU。

2、数据集制作

2.1 文件夹路径如下

--dataset
    --train
        --images
        --labels
    --val
        --images
        --labels

值得注意的是,images底下的图片名字(00001.jpg)和labels的groundtruth(00001.txt)名字是一一对应的。
在这里插入图片描述
在这里插入图片描述
原始的数据集thermal_annotations.json文件中包含了全部训练集和验证集的标注信息,但yolo是一个文件对应一张图片,需要自己生成上图所示的标签文件。
另外,thermal_annotations.json中的”image_id“与图片id不对应
train图片是从00001.jpg开始,而对应的thermal_annotations.json中的”image_id“是从00000开始
val图片是从08863.jpg开始,而对应的thermal_annotations.json中的”image_id“是从00000开始
需要矫正一下对应关系!!!

2.2 labels标签的txt文件生成

这一步是训练数据准备的关键,内容如下:
在这里插入图片描述
每一行有五个数字组成,类别、x、y,w,h。类别由0,1,2,3,…等组成(如果是4类,应该取值为0~3),xywh是归一化后的数值,且xy是目标中心坐标,假设bbox保存的是目标左上角的坐标和宽高,转化过程如下:

def convert(size, box):
    dw = 1./(size[0])
    dh = 1./(size[1])
    x = (box[0] + box[1])/2.0 - 1
    y = (box[2] + box[3])/2.0 - 1
    w = box[1] - box[0]
    h = box[3] - box[2]
    x = x*dw
    w = w*dw
    y = y*dh
    h = h*dh
    return (x,y,w,h)

3、训练

3.1 主要修改两个文件

  1. /models/yolov5s.yaml,将nc = 80修改为nc = 4(本文为4类目标)
  2. data文件夹下新建一个xx.yaml(数据集路径),本文叫做FLIR.yaml,内容如下:
# 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: /data3/JJChen/YOLOtrainDataset/Flir/FLIR_ADAS_1_3/  # dataset root dir
train: train/images/  # train images (relative to 'path') 128 images
val: val/images/  # val images (relative to 'path') 128 images
test:  # test images (optional)

# Classes
nc: 4  # number of classes
names: ['Dogs', 'People', 'Bicycles', 'Cars']  # class names

path+train即训练集图片的路径

3.2 开始训练

从零开始训练:python train.py --img 640 --epochs 300 --data data/FLIR.yaml --cfg models/yolov5s.yaml --weight " "
从预训练模型进行微调:python train.py --img 640 --epochs 300 --data data/FLIR.yaml --cfg models/yolov5s.yaml --weight weights/yolov5s.pt
开始训练界面如下:
在这里插入图片描述

可能出现的错误:无法调用GPU

运行时gpu_mem为0G,这是用CPU在训练,所以一开始速度贼慢。打开train.py,修改436‘device’为0,1,2,3,结果却报错:
在这里插入图片描述
这主要原因是cuda和torch版本不匹配,直接安装的torch是1.9的,所以得降版本
在这里插入图片描述
Pytorch1.7.1+torchvision0.8.2下载地址:https://download.pytorch.org/whl/torch_stable.html
卸载torch:pip uninstall torch
卸载torchvision:pip uninstall torchvison
本地安装:

 pip install torch-1.7.1+cu101-cp36-cp36m-linux_x86_64.whl
 pip install torchvision-0.8.2+cu101-cp36-cp36m-linux_x86_64.whl

重新训练:
在这里插入图片描述

4、测试

下载一个红外视频python detect.py --source xx.mp4 --weights runs/train/exp7/weights/best.pt

参考博客:
FLIR Thermal Starter 数据集详解

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用红外图像数据集FLIR Thermal Starter训练yolov5目标检测算法 的相关文章

随机推荐

  • 数据结构——链表

    链表是一种随机存储在内存中的节点的对象集 节点包括两个字段 xff0c 即存储在该地址的数据和包含下一节点地址的指针 链表的最后一个节点包含指向null的指针 1 链表的用途 链表不需要连续存在于存储器中 节点可以是存储器中任何位置并链接在
  • 多线程学习笔记--第一章 多线程技能(1)

    1 什么是进程 xff1f 进程是操作系统结构的基础 xff0c 是一次程序的执行 xff1b 是一个程序及其数据在处理机上顺序执行时所发生的活动 xff1b 是程序在一个数据集合上运行的过程 xff0c 它是系统进行资源分配和调度的一个独
  • 多线程学习笔记--第一章 多线程技能(2)

    1 currentThread方法 该方法返回代码段正在被哪个线程调用的信息 2 isAlive方法 判断当前线程是否处于活动状态 活动状态是线程已经启动且尚未终止 线程处于运行或准备开始运行的状态 如果将线程对象以构造参数的方式传递给Th
  • Qt编程过程中若给定一些数,把它们四舍五入后,保留两位小数

    double类型的数进行四舍五入后保留两位小数 场景实现方式方法一 方法二总结 场景 开发的过程中需要显示一些double类型的数 xff0c 但是又不能直接显示 xff0c 需要四舍五入之后保留两位小数 如 xff1a 0 124567
  • C语言中,头文件、源文件和库文件的关系(转)

    初学c xff0c 一直搞不懂几个概念 xff0c 偶然看到一篇比较好的文章 xff0c 转载一下 xff0c 原文https blog csdn net xhbxhbsq article details 78955216 一下是原文内容
  • 串口是怎样传输数据的

    概述 通过逻辑分析仪捕捉串口传输的数据来了解串口传输数据的实质 串行接口简称为串口 xff0c 串行接口 xff08 Serial Interface xff09 是指数据一位一位地顺序传送 实现双向通信就需要一对传输线 xff0c 即TX
  • 精准时空:让人工智能更智能

    如今科技界 产业界最热门的关键词是什么 xff1f 各地方政府给出了明确的答案 人工智能 8月的最后一周 xff0c 重庆 上海两大直辖市 xff0c 争先恐后地举办了以智能为主题的大会 精准时空能力 xff0c 作为机器智能的基础数据 x
  • 关于FindCM厘米级定位,这6个问题的答案你需要知道

    面对越来越复杂的应用场景 xff0c 单一的FindCM xff08 千寻知寸 xff09 产品 xff0c 已经无法满足不同行业客户的差异化需求 近日 xff0c 千寻位置完成FindCM产品分级 xff0c 推出了面向不同行业和应用场景
  • 千寻位置如何满足自动驾驶“刚需”

    自动驾驶 xff0c 本质是汽车产业的升级 自动驾驶技术在5G 人工智能和汽车行业的飞速发展下 xff0c 成为业界焦点 目前 xff0c 通用 一汽 广汽 北汽 吉利 长安等国内外主流车企都在进行自动驾驶技术研发 xff0c 而他们正在使
  • 自动驾驶汽车为什么需要高精度定位?干货都在这里

    2019年5月7日 xff0c 曾作为主PM驱动凯迪拉克 Jeep全系 福特全系车型Sync3导航产品研发 xff0c 现任千寻位置车端高精度定位解决方案经理的宋子未 xff0c 讲授了主题为 自动驾驶汽车为什么需要高精度定位 xff1f
  • GNSS增强定位技术发展与星地融合应用

    引言 xff1a 你能想象吗 xff1f 除了手机和汽车 xff0c 现在连安全帽 道路锥筒 xff0c 甚至跑鞋都需要定位 随着移动物联网的快速发展 xff0c 国民经济各个领域都对更高精度的定位能力产生迫切需求 同时 xff0c 市场也
  • 基于Android系统的高精度定位SDK方案

    最新数据显示 xff0c 全球平均每3人就拥有一台Android xff08 安卓 xff09 系统设备 xff0c 其总数已经超过25亿台 丰富多样的Android设备在改变人们的生活同时 xff0c 也被赋予更多期望 xff0c 是否能
  • Ubuntu 修改 apt 源为阿里云源

    文章目录 软件源 Software Source使用说明图形界面 xff08 新手推荐 xff09 手动修改配置文件 相关链接 软件源 Software Source 软件源是指用于存储各种 Linux 应用程序的存储库 xff0c 包括自
  • (已解决)rplidar_ros 报错:Operation Time Out

    按照wiki装rplidar ros的时候 xff1a https github com robopeak rplidar ros wiki 运行 xff1a roslaunch rplidar ros view rplidar launc
  • CNN学习(四)----SiameseFC代码运行Matlab2018a+vs2015+cuda9.0

    由于siameseFC运行需要调用GPU xff0c 即需要安装CUDA和visual studio xff0c CUDA安装可以参考的我的上一篇博客 若是要运行tensorflow版本 xff0c 可以参考这篇博客 一 失败经验 先介绍一
  • 目标跟踪之ECO代码运行及原理简介

    论文地址 xff1a https arxiv org pdf 1611 09224 pdf 代码地址 xff1a https github com martin danelljan ECO ECO xff08 Efficient Convo
  • UAV123数据集下载、简介及配置

    UAV123主要由91个无人机视频组成 xff0c 其中有数个视频序列较长 xff0c 拆分成三四个较短的片段 xff0c 使用多次 xff0c 所以有123个groundtruth xff0c 其中包含20个长视频即UAV20L xff0
  • UAVDT:The Unmanned Aerial Vehicle Benchmark: Object Detection and Tracking数据集下载

    无人机数据集对于目标跟踪而言是一大挑战 xff0c 近年来 xff0c 正对无人机的数据集也越来越多 xff0c UAVDT是ICCV2018提出的一个数据集 xff0c 共包含80000帧图片 xff0c 不仅可以用于目标跟踪 xff0c
  • Linux编译opencv4.4.0报错“/usr/bin/ld: cannot find -lopencv_shape”

    opencv4 4 0下载地址 xff1a https sourceforge net projects opencvlibrary files 问题描述 安装完opencv4 4 0后编译C 43 43 代码显示找不到lib库文件 usr
  • 利用红外图像数据集FLIR Thermal Starter训练yolov5目标检测算法

    Yolov5代码 xff1a https github com ultralytics yolov5 数据集 xff1a https www flir com oem adas adas dataset form 运行环境 xff1a Ub