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

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: 190000train_dataset:transforms:- type: ResizeStepScalingmin_scale_factor: 0.5max_scale_factor: 2.0scale_step_size: 0.25- type: RandomPaddingCropcrop_size: [520, 520]- type: RandomHorizontalFlip- type: RandomDistortbrightness_range: 0.4contrast_range: 0.4saturation_range: 0.4- type: Normalizemean: [0.485, 0.456, 0.406]std: [0.229, 0.224, 0.225]val_dataset:transforms:- type: Resizetarget_size: [2048, 1024]keep_ratio: True- type: Normalizemean: [0.485, 0.456, 0.406]std: [0.229, 0.224, 0.225]export:transforms:- type: Resizetarget_size: [2048, 512]keep_ratio: True- type: Normalizemean: [0.485, 0.456, 0.406]std: [0.229, 0.224, 0.225]optimizer:_inherited_: Falsetype: AdamWbeta1: 0.9beta2: 0.999weight_decay: 0.0125lr_scheduler:_inherited_: Falsetype: PolynomialDecaylearning_rate: 4.0e-4power: 1.end_lr: 1.0e-6warmup_iters: 1500warmup_start_lr: 1.0e-6loss:types:- type: CrossEntropyLosscoef: [1, 0.4]model:type: RTFormerbase_channels: 64head_channels: 128use_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: Datasetdataset_root: /train_path: /data/datasets/cocostuff/dataset/train.txtnum_classes: 182transforms:- type: ResizeStepScalingmin_scale_factor: 0.5max_scale_factor: 2.0scale_step_size: 0.25- type: RandomPaddingCropcrop_size: [520, 520]- type: RandomHorizontalFlip- type: RandomDistortbrightness_range: 0.4contrast_range: 0.4saturation_range: 0.4- type: Normalizemode: train
val_dataset:type: Datasetdataset_root: /val_path: /data/datasets/cocostuff/dataset/val.txtnum_classes: 182transforms: - type: Normalizemode: val
optimizer:type: sgdmomentum: 0.9weight_decay: 4.0e-5
lr_scheduler:type: PolynomialDecaylearning_rate: 0.01end_lr: 0power: 0.9
loss:types:- type: CrossEntropyLosscoef: [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.mzph.cn/news/66701.shtml

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

相关文章

如何精确掌握函数防抖和函数节流的使用?

前序 函数防抖&#xff08;Debouncing&#xff09;和函数节流&#xff08;Throttling&#xff09;都是用于控制函数执行频率的技术&#xff0c;通常在处理高频率触发的事件&#xff08;如窗口滚动、鼠标移动、输入框输入等&#xff09;时非常有用 一、核心概念 函数防抖 函…

C++系列--成员变量和成员函数的存储

空对象所占的内存为1&#xff0c;是为了区分空对象所占的内存位置。非空对象所占的内存按照实际的来。非静态成员变量属于类的对象上面。非静态成员函数和静态成员函数&#xff0c;静态成员变量都不属于类的成员上。 空对象所占的内存为1&#xff0c;是为了区分空对象所占的内…

XXL-JOB 分布式任务调度平台

目录 背景 项目架构 核心流程1——执行器自动注册 核心流程2——调度任务 特性——分片广播 背景 为什么需要任务调度平台? 单机定时任务 Java中传统的定时任务实现方案&#xff0c;比如JDK 1.3 提供的 Timer、JDK 1.5 提供的 ScheduledExecutorService、Spring 3.0 提…

聊聊jasypt的IVGenerator

序 本文主要研究一下jasypt的IVGenerator IVGenerator org/jasypt/salt/IVGenerator.java /*** <p>* Common interface for all IV generators which can be applied in digest* or encryption operations.* </p>* <p>* <b>Every implementation o…

huggingface下载模型文件(基础入门版)

huggingface是一个网站&#xff0c;类似于github&#xff0c;上面拥有众多开源的模型、数据集等资料&#xff0c;人工智能爱好者可以很方便的上面获取需要的数据&#xff0c;也可以上传训练好的模型&#xff0c;制作的数据集等。本文只介绍下载模型的方法&#xff0c;适合新手入…

nodejs设置镜像

1、npm镜像地址配置 -- 查看 npm 安装目录 npm root -g-- 查看 npm 配置信息 npm config list-- 查询当前镜像配置 npm get registry-- 或者仅修改 npm 命令镜像 -- 设置为淘宝镜像 npm config set registry https://registry.npmmirror.com -- 修改为官方镜像 npm config set…

win | wireshark | 在win上跑lua脚本 解析数据包

前提说明&#xff1a;之前是在linux 系统上配置的&#xff0c;然后现在 在配置lua 脚本 &#xff0c;然后 分析指定协议 的 数据包 其实流程也比较简单&#xff0c;但 逻辑需要缕清来 首先要把你 预先准备的 xxx.lua 文件放到wireshark 的安装文件中&#xff0c;&#xff08;我…

deque容器

1 deque容器基本概念 功能&#xff1a; 双端数组&#xff0c;可以对头端进行插入删除操作 deque与vector区别&#xff1a; vector对于头部的插入删除效率低&#xff0c;数据量越大&#xff0c;效率越低deque相对而言&#xff0c;对头部的插入删除速度回比vector快vector访问…

js中如何使用可选函数参数

js是网络的核心技术之一。大多数网站都使用它&#xff0c;并且所有现代网络浏览器都支持它&#xff0c;而不需要插件。在本文中&#xff0c;我们将讨论不同的提示和技巧&#xff0c;它们将帮助您进行日常 JavaScript 开发。 在 JavaScript 编码中&#xff0c;您经常需要将函数…

python实现MQTT协议(发布者,订阅者,topic)

python实现MQTT协议 一、简介 1.1 概述 本文章针对物联网MQTT协议完成python实现 1.2 环境 Apache-apollo创建brokerPython实现发布者和订阅者 1.3 内容 MQTT协议架构说明 &#xff1a; 利用仿真服务体会 MQTT协议 针对MQTT协议进行测试 任务1&#xff1a;MQTT协议应…

理解React页面渲染原理,如何优化React性能?

React JSX转换成真实DOM过程 当使用React编写应用程序时&#xff0c;可以使用JSX语法来描述用户界面的结构。JSX是一种类似于HTML的语法&#xff0c;但实际上它是一种JavaScript的扩展&#xff0c;用于定义React元素。React元素描述了我们想要在界面上看到的内容和结构。 在运…

maven搭建spring项目

前提 安装jdk 安装maven 安装eclipse 创建maven项目 搭建spring项目 pom.xml <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.4.RELEASE</version> </dependency&…

【java 入侵 C# 之路】1-入门

感谢 https://www.cnblogs.com/mww-NOTCOPY/p/12213373.html 百度百科 jvm对应clr java se runtime对应 .net framework&#xff0c; jdk对应 .net framework sdk&#xff0c; java对应C# .NET 是开发者平台&#xff0c;它包含开发环境、技术框架、社区论坛、服务支持等&…

学习pytorch8 土堆说卷积操作

土堆说卷积操作 官网debug torch版本只有nn 没有nn.functional代码执行结果 B站小土堆视频学习笔记 官网 https://pytorch.org/docs/stable/nn.html#convolution-layers 常用torch.nn, nn是对nn.functional的封装&#xff0c;使函数更易用。 卷积核从输入图像左上角&#xf…

Lambda表达式第二版

1、Lambda概述 Lambda表达式是JDK8开始后的一种新语法形式作用&#xff1a;简化匿名内部类的代码写法注意&#xff1a;Lambda表达式只能简化函数式 接口 的匿名内部类的写法形式 1.1、什么是函数式接口&#xff1f; 首先必须是接口、其次接口中有且仅有一个抽象方法的形式通常我…

Bito使用手册

第一步&#xff1a;输入网站 https://alpha.bito.co/bitoai/ 第二步&#xff1a;填写邮箱 第三步&#xff1a;登录邮箱&#xff0c;获取验证码 第四步&#xff1a;填写验证码 第五步&#xff1a;完成

【LeetCode-中等题】994. 腐烂的橘子

文章目录 题目方法一&#xff1a;bfs层序遍历 题目 该题值推荐用bfs&#xff0c;因为是一层一层的感染&#xff0c;而不是一条线走到底的那种&#xff0c;所以深度优先搜索不适合 方法一&#xff1a;bfs层序遍历 广度优先搜索&#xff0c;就是从起点出发&#xff0c;每次都尝…

我的Vim学习笔记(不定期更新)

2023年9月3日&#xff0c;周日上午 学到了啥就写啥&#xff0c;不定期更新 目录 字体 文件 标签页 分屏 调用系统命令 字体 设置字体大小 :set guifont字体:h字体大小 例如&#xff0c;:set guifontMonospace:h20 查询当前使用的字体和字体大小 :set guifont? 查看…

UG\NX CAM二次开发 查询工序所在的几何组TAG UF_OPER_ask_geom_group

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 查询工序所在的几何组TAG UF_OPER_ask_geom_group 效果: 代码: void MyClass::do_it() { int count=0;tag_t * objects;UF_UI_ONT_ask_selected_nodes(&count, &objects);for (in…

linux 下安装配置nexus

一、安装包获取方式 方式一 1、直接把下载好的安装包上传到服务器中 方式二 2、通过wget安装Nexus压缩包 ①、可以使用以下命令进行安装Nexus的最新版本 wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz②、也可以点击官网复制想要下载的Nexus压缩包进行安装…