Paddle训练COCO-stuff数据集学习记录

news2025/1/19 14:19:47

COCO-stuff数据集

COCO-Stuff数据集对COCO数据集中全部164K图片做了像素级的标注。

80 thing classes, 91 stuff classes and 1 class ‘unlabeled’

在这里插入图片描述

数据集下载
wget --directory-prefix=downloads http://images.cocodataset.org/zips/train2017.zip
wget --directory-prefix=downloads http://images.cocodataset.org/zips/val2017.zip
wget --directory-prefix=downloads http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/stuffthingmaps_trainval2017.zip

解压数据集
mkdir -p dataset/images
mkdir -p dataset/annotations
unzip downloads/train2017.zip -d dataset/images/
unzip downloads/val2017.zip -d dataset/images/
unzip downloads/stuffthingmaps_trainval2017.zip -d dataset/annotations/

下载完成数据集后需要生成数据集的读取文件,即train.txtval.txt,根据先前cityspaces数据集的文件格式,博主发现COCO-stuff数据集的结构更为简单,因此便自己写了数据集目标生成代码,代码如下:

import os
import random
filePath1 = '/data/datasets/cocostuff/dataset/images/train2017/'     
filePath2 = '/data/datasets/cocostuff/dataset/annotations/train2017/'    
list_data1=os.listdir(filePath1) 
list_data2=os.listdir(filePath2)  
file = open("/data/datasets/cocostuff/dataset/train.txt", 'w+')
for i,j in zip(list_data1,list_data2):
    file.write('/data/datasets/cocostuff/dataset/images/train2017/'+i+' ')
    file.write('/data/datasets/cocostuff/dataset/annotations/train2017/'+j+'\n')
file.close()

生成的目录文件如下:其中第一组数据是数据集图片地址,第二组数据是标注文件地址

在这里插入图片描述

然而,却报错了,提升pre与lable不一致,即图片维度不一致,此时才发现,先前写的目录生成文件没有将图片与标注正确对应,重新改写:

import os
import random
path="train2017/"
filePath1 = '/data/datasets/cocostuff/dataset/images/'+path      
list_data1=os.listdir(filePath1)  
file = open("/data/datasets/cocostuff/dataset/train.txt", 'w+')
for i in list_data1:
    i=os.path.splitext(i)[0]
    file.write('/data/datasets/cocostuff/dataset/images/'+path+i+'.jpg ')
    file.write('/data/datasets/cocostuff/dataset/annotations/'+path+i+'.png'+'\n')
file.close()

生成数据集目录地址后,即可编辑数据集配置文件。

修改数据集配置文件,新建cfg文件,即在configs文件夹的rtformer中新建rtformer_cocostuff_512x512_120k.yml,具体内容如下:

_base_: '../_base_/coco_stuff.yml'

batch_size: 3 # total batch size:  4 * 3
iters: 190000

train_dataset:
  transforms:
    - type: ResizeStepScaling
      min_scale_factor: 0.5
      max_scale_factor: 2.0
      scale_step_size: 0.25
    - type: RandomPaddingCrop
      crop_size: [520, 520]
    - type: RandomHorizontalFlip
    - type: RandomDistort
      brightness_range: 0.4
      contrast_range: 0.4
      saturation_range: 0.4
    - type: Normalize
      mean: [0.485, 0.456, 0.406]
      std: [0.229, 0.224, 0.225]

val_dataset:
  transforms:
    - type: Resize
      target_size: [2048, 1024]
      keep_ratio: True
    - type: Normalize
      mean: [0.485, 0.456, 0.406]
      std: [0.229, 0.224, 0.225]
  
export:
  transforms:
    - type: Resize
      target_size: [2048, 512]
      keep_ratio: True
    - type: Normalize
      mean: [0.485, 0.456, 0.406]
      std: [0.229, 0.224, 0.225]

optimizer:
  _inherited_: False
  type: AdamW
  beta1: 0.9
  beta2: 0.999
  weight_decay: 0.0125

lr_scheduler:
  _inherited_: False
  type: PolynomialDecay
  learning_rate: 4.0e-4
  power: 1.
  end_lr: 1.0e-6
  warmup_iters: 1500
  warmup_start_lr: 1.0e-6

loss:
  types:
    - type: CrossEntropyLoss
  coef: [1, 0.4]

model:
  type: RTFormer
  base_channels: 64
  head_channels: 128
  use_injection: [True, False]
  pretrained: https://paddleseg.bj.bcebos.com/dygraph/backbone/rtformer_base_backbone_imagenet_pretrained.zip

新建coco-stuff.yaml文件,配置数据集:

batch_size: 2
iters: 80000
train_dataset:
  type: Dataset
  dataset_root: /
  train_path: /data/datasets/cocostuff/dataset/train.txt
  num_classes: 182
  transforms:
    - type: ResizeStepScaling
      min_scale_factor: 0.5
      max_scale_factor: 2.0
      scale_step_size: 0.25
    - type: RandomPaddingCrop
      crop_size: [520, 520]
    - type: RandomHorizontalFlip
    - type: RandomDistort
      brightness_range: 0.4
      contrast_range: 0.4
      saturation_range: 0.4
    - type: Normalize
  mode: train
val_dataset:
  type: Dataset
  dataset_root: /
  val_path: /data/datasets/cocostuff/dataset/val.txt
  num_classes: 182
  transforms: 
    - type: Normalize
  mode: val
optimizer:
  type: sgd
  momentum: 0.9
  weight_decay: 4.0e-5
lr_scheduler:
  type: PolynomialDecay
  learning_rate: 0.01
  end_lr: 0
  power: 0.9
loss:
  types:
    - type: CrossEntropyLoss
  coef: [1]

随后便可以运行了

报错问题

报错1:这个问题令我感到困惑,因为先前已经用该环境训练过cityspces数据集,但还是重新又部署了一下环境,但依旧出错,最后发现是由于博主的数据集类别设置错误导致的,这实在是令人匪夷所思。

OSError: (External) CUDNN error(8), CUDNN_STATUS_EXECUTION_FAILED.   [Hint: Please search for the error code(8) on website (https://docs.nvidia.com/deeplearning/cudnn/api/index.html#cudnnStatus_t) to get Nvidia's official solution and advice about CUDNN Error.] (at /paddle/paddle/phi/kernels/gpudnn/conv_grad_kernel.cu:502)

为以防万一,还是给出环境配置:

在这里插入图片描述

在这里插入图片描述

最终运行train.py文件即可

在这里插入图片描述

报错2

 The axis is expected to be in range of [0, 0), but got 0
  [Hint: Expected axis >= -rank && axis < rank == true, but received axis >= -rank && axis < rank:0 != true:1.] (at ../paddle/phi/infermeta/multiary.cc:961)

这个似乎是版本问题导致的,将paddle调整到2.4.0后该问题就解决了。

报错3

ValueError: (InvalidArgument) The shape of input[0] and input[1] is expected to be equal.But received input[0]'s shape = [1], input[1]'s shape = [1, 1].
  [Hint: Expected inputs_dims[i].size() == out_dims.size(), but received inputs_dims[i].size():2 != out_dims.size():1.] (at /paddle/paddle/phi/kernels/funcs/concat_funcs.h:55)

似乎是之前博主修改了metrics.py文件导致的,但好像并不是,保持metrics.py文件原样即可,修改下数据集目录即可。

警告

Warning:: 0D Tensor cannot be used as 'Tensor.numpy()[0]' . In order to avoid this problem, 0D Tensor will be changed to 1D numpy currently, but it's not correct and will be removed in release 2.6. For Tensor contain only one element, Please modify  'Tensor.numpy()[0]' to 'float(Tensor)' as soon as possible, otherwise 'Tensor.numpy()[0]' will raise error in release 2.6.

警告提醒,据说是该设计在paddle2.6已经被弃用了,但该警告其实并不影响实验进程,只是看着不舒服而已,那就不看好了。但作为一个完美主义者,怎么能容忍这种情况呢,而且这样输出警告会给日志文件造成很大负担,因此果断降低版本。2.4.0的是可以的。

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

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

相关文章

stable diffusion实践操作-复制-清空-保存提示词

系列文章目录 stable diffusion实践操作 stable diffusion实践操作-webUI教程 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、右上生成图标附近按钮介绍1. 箭头介绍&#xff08;复现别人的…

博客程序系统其它功能扩充

一、注册功能 1、约定前后端接口 2、后端代码编写 WebServlet("/register") public class RegisterServlet extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置…

《凤凰架构》第三章——事务处理

前言 由于一些地方原文感觉不太清楚&#xff0c;有些地方用小林coding的文章代替。 总结 事务处理主要的目的就是要让数据在各种条件下&#xff0c;最终的运行结果都能符合你的期望。要达成这个目标有三点需要满足&#xff1a;原子性&#xff08;业务要么同时成功&#xff0…

RT-Thread 原子操作

原子操作简介 原子操作&#xff08;Atomic operation&#xff09;是指一种不可分割的操作&#xff0c;要么完全执行成功&#xff0c;要么完全不执行。 原子操作的执行过程中不允许有任何中断&#xff0c;如果出现了中断&#xff0c;那么操作的结果就无法保证。 原子操作通常…

【Linux】多路IO转接问题-select

select&#xff1a; 首先设置一个lfd绑定服务端地址结构&#xff0c;用于监听新的连接。select函数调用&#xff0c;用于对整个fd数组进行监听&#xff0c;该数组最大限制1024&#xff0c;通过遍历&#xff0c;来确定是哪个fd有变化&#xff1a; 1.如果是lfd&#xff1a;那么可…

PriorityQueue介绍

PriorityQueue堆的应用找前k个最小数据&#xff08;TOPK问题&#xff09;求k个最小的数优化堆排序 PriorityQueue Java集合框架中提供了PriorityQueue和PriorityBlockingQueue&#xff08;优先级阻塞队列&#xff09;两种类型的优先级队列&#xff0c;PriorityQueue是线程不安…

IIS CGI配置和CGI程序FreeBasic, VB6, VC 简单样例

如果说COM和DLL让程序间交互数据变得方便&#xff0c;那CGI这门简单而又古老的技术让网络上数据交互变得方便。虽然古老&#xff0c;但浩瀚的互联网上和世界各地的企业内部&#xff0c;仍有许许多多并发访问量不大的业务在使用这门技术。今天做个回顾&#xff0c;并列出一些例子…

完全平方数

题目链接 完全平方数 题目描述 注意点 返回 和为 n 的完全平方数的最少数量 解答思路 初始想到使用动态规划&#xff0c;后续数字的完全平方数可以由前面数字的完全平方数求得&#xff0c;对于任意数字&#xff0c;可以计算其减去从1…i之间&#xff08;保证做减操作后的值…

Unity中Shader的面剔除Cull

文章目录 前言一、Unity中Shader的面是否剔除&#xff0c;是由我们自己决定的二、暴露一个属性来控制 剔除模式三、如何区分正反面 前言 Unity中Shader的面剔除 Cull Off | Back | Front 一、Unity中Shader的面是否剔除&#xff0c;是由我们自己决定的 使用 Cull Off | Back |…

深度学习之视频分类项目小记

写在前面&#xff0c;最近一阵在做视频分类相关的工作&#xff0c;趁有时间来记录一下。本文更注重项目实战与落地&#xff0c;而非重点探讨多模/视频模型结构的魔改 零、背景 目标&#xff1a;通过多模态内容理解技术&#xff0c;构建视频层级分类体系原技术方案&#xff1a…

Pyecharts数据可视化(二)

目录 1.绘制散点图 2.绘制饼图 2.1绘制实心饼图 2.2 绘制圆形饼图 2.3 绘制玫瑰图 3.绘制漏斗图 4.绘制仪表盘 5.绘制组合图表 本文主要介绍如何利用Pyecharts来绘制一些常用的可视化图形&#xff0c;比如散点图、饼图、漏斗图等等&#xff0c;具体的绘制方法请见下文。 …

通讯软件014——分分钟学会Matrikon HDA Explorer

本文介绍如何使用Matrikon HDA Explorer工具软件进行OPC HDA通讯调试。相关软件可登录网信智汇&#xff08;wangxinzhihui.com&#xff09;下载。 1、连接OPC HDA Server数据源“Kepware.KEPServerEX HAD.V6”。 2、添加标签&#xff1a;右键点击“Kepware.KEPServerEX HAD.V6”…

[管理与领导-66]:IT基层管理者 - 辅助技能 - 4- 职业发展规划 - 乌卡时代(VUCA )的团队管理思维方式的转变

目录 一、乌卡时代人与公司的关系的转变 二、乌卡时代管理方式的转变 三、乌卡时代的管理与传统时代的管理比较 四、乌卡时代管理者的挑战 五、乌卡时代如何做好管理 六、个人能力要求 一、乌卡时代人与公司的关系的转变 在乌卡时代&#xff08;指虚拟办公、远程工作等数…

3分钟:腾讯云免费SSL证书申请教程_免费HTTPS证书50张

2023腾讯云免费SSL证书申请流程&#xff0c;一个腾讯云账号可以申请50张免费SSL证书&#xff0c;免费SSL证书为DV证书&#xff0c;仅支持单一域名&#xff0c;申请腾讯云免费SSL证书3分钟即可申请成功&#xff0c;免费SSL证书品牌为TrustAsia亚洲诚信&#xff0c;腾讯云百科分享…

一些测试知识

博客主页&#xff1a; https://blog.csdn.net/qq_57785602/category_12023254.html?spm1001.2014.3001.5482https://blog.csdn.net/qq_57785602/category_12023254.html?spm1001.2014.3001.5482 图片网上找的&#xff0c;文章看书或者是平常逛博客看到的&#xff0c;如有侵…

本地部署 Llama2-Code-Interpreter

本地部署 Llama2-Code-Interpreter 1. Llama2-Code-Interpreter 是什么2. Llama2-Code-Interpreter 主要特点3. 部署 Llama2-Code-Interpreter4. 运行 Llama2-Code-Interpreter5. 访问 Llama2-Code-Interpreter 1. Llama2-Code-Interpreter 是什么 该项目允许 LLM 根据整个流程…

设计模式系列-原型模式

一、上篇回顾 上篇创建者模式中&#xff0c;我们主要讲述了创建者的几类实现方案&#xff0c;和创建者模式的应用的场景和特点&#xff0c;创建者模式适合创建复杂的对象&#xff0c;并且这些对象的每 个组成部分的详细创建步骤可以是动态的变化的&#xff0c;但是每个对象的组…

C语言入门 Day_12 一维数组

目录 前言 1.创建一维数组 2.使用一维数组 3.易错点 4.思维导图 前言 存储一个数据的时候我们可以使用变量&#xff0c; 比如这里我们定义一个记录语文考试分数的变量chinese_score&#xff0c;并给它赋值一个浮点数&#xff08;float&#xff09;。 float chinese_scoe…

服务器挂机赚钱之Traffmonetizer教程挂机,利用闲置的Vps赚钱

互联网VPS赚钱的项目traffmonetizer挂机&#xff0c;原理就是traffmonetizer通过共享闲置的带宽售卖给平台&#xff0c;然后平台将产生的收益就归你。如果你有闲置的vps服务器都可以通过traffmonetizer挂机赚钱。 VPS赚钱开始注册 实话实说吧&#xff0c;这个就是来拉人头的&…

使用 Python 和 dash 创建仪表板

推荐&#xff1a;使用 NSDT场景编辑器快速搭建3D应用场景 介绍 在数据科学和分析领域&#xff0c;数据的力量不仅通过提取见解来释放&#xff0c;而且还通过有效地传达这些见解来释放;这就是数据可视化发挥作用的地方。 数据可视化是信息和数据的图形表示。它使用图表、图形和…