使用mmdetection做实例分割过程中踩的一个大坑。

经过反复调试后,终于发现是数据集的问题。在实例分割中,分割标签的键'iscrowd'为1的时候,标签会被抛弃,全为1的时候,就会发生以上错误。出错原因代码如下

iscrowd表示一个以上物体连在一个,作为一个整体,如人群,所以做实例分割时候会被过滤掉。而在coco数据集中。iscrowd的取值取决于标签segmentation的格式,格式为RLE的时候,iscrowd为1,格式为polygon的时候,iscrowd为0。所以当你自己的数据标签的segmentation全为RLE格式的时候,你的所有标签都会被抛弃,错误在所难免。于是就要将RLE格式转为polygon格式。代码如下,

代码参考:

https://github.com/facebookresearch/Detectron/issues/100

https://tianchi.aliyun.com/competition/entrance/231787/information

RLE转polygon

import numpy as np
import json
from tqdm import tqdm
import random
import os
import cv2
import matplotlib.pyplot as plt
import pycocotools.mask as maskUtilsdef annToRLE(ann, i_w, i_h):h, w = i_h, i_wsegm = ann['segmentation']if type(segm) == list:# polygon -- a single object might consist of multiple parts# we merge all parts into one mask rle coderles = maskUtils.frPyObjects(segm, h, w)rle = maskUtils.merge(rles)elif type(segm['counts']) == list:# uncompressed RLErle = maskUtils.frPyObjects(segm, h, w)else:# rlerle = ann['segmentation']return rlerle = annToRLE(ann_fu, ann_fu['segmentation']['size'][0], ann_fu['segmentation']['size'][1])
mask = maskUtils.decode(rle)
contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# after opencv 3.2
# _, contours, hierarchy = cv2.findContours((mask).astype(np.uint8), cv2.RETR_TREE,
#                                                    cv2.CHAIN_APPROX_SIMPLE)
segmentation = []
for contour in contours:contour = contour.flatten().tolist()if len(contour) > 4:segmentation.append(contour)
ann_coco['segmentation'] = segmentation

值得注意的是,contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)这句可能报错,原因是版本问题。opencv版本高于3.2时,有三个输出,要用  _, contours, _ , 否则,使用 contours, _  。

ValueError('need at least one array to stack') ValueError: need at least one array to stac相关推荐

  1. C语言使用array实现stack(附完整源码)

    使用array实现stack 实现以下4个接口 使用array实现stack完整源码如下 实现以下4个接口 void push(); void pop(); void peek(); void upd ...

  2. 《python机器学习经典实例》Expected 2D array, got 1D array instead和Reshape your data either using array.问题(已解决)

    问题描述: ValueError: Expected 2D array, got 1D array instead: array=[2.  1.5]. Reshape your data either ...

  3. python binascii array('c')_详解Python中的array数组模块相关使用

    初始化array实例化可以提供一个参数来描述允许那种数据类型,还可以有一个初始的数据序列存储在数组中. import array import binascii s = 'This is the ar ...

  4. python array函数_Python 中的range()函数与array()函数

    我们在Python中存在一个非常好用的range()与array()函数,下面作用法简要介绍. 一.range()函数 >>> range(1,10) -->不包括10 [1, ...

  5. [SV]SystemVerilog压缩数组(Packed Array)和非压缩数组( Unpacked Array)

    SystemVerilog压缩数组和非压缩数组 The term packed array is used to refer to the dimensions declared before the ...

  6. js中for(i in array)和for(i=0;i<array.length;i++)之间的坑

    前情提要 刚刚接触到js写for循环的时候,觉得for(i in array)这种格式简直是非常直观,比三段论的for循环好写得多.直到遇到了一个坑,事情是这样的: 最开始的网页中,鉴于方便,清一色使 ...

  7. r语言 array c函数,[转载]R语言:数组(array)和矩阵(matrix)

    数组 数组(array)是一个带有多个下标且型态相同的元素集合,例如数值所构成的数组.在 R 中有一些简单的函数可以建立与处理数组,特别是针对矩阵的处理(矩阵在 R 中是数组的一种). 数组有一个特别 ...

  8. error: creating array of references( declaration of 'a' as array)

    错误程序: #include <iostream>using namespace std;void func(int& a[], int n) {for(int i = 0; i ...

  9. Numpy中出现“ValueError: zero-size array to reduction operation maximum which has no identity”错误的调试笔记

    1 问题描述 在写作目标检测的代码时,遇到了这样的一个错误, File "/home/-/-py", line 121, in - array = array/ array.max ...

最新文章

  1. NAR:扩增子OTU聚类软件SeekDeep方法解读
  2. 投资100亿美元,谷歌计划在2020年向美国办事处和数据中心
  3. cubemx 读卡器_cubeMX 之 SD卡读写
  4. 腾讯数字生态大会倒计时4天:请收下这份最全的TEG参会攻略~
  5. JavaScript-获得和设置表单的值
  6. php-fpm 的参数,php-fpm启动参数配置详解
  7. 案例:如何解决难以重现的BUG
  8. 【通信】基于matlab数字基带传输系统【含Matlab源码 885期】
  9. java查询时加上进度条插件,简单的jquery进度条插件LineProgressbar.js
  10. 阿里云-对象存储OSS
  11. php 路由器设置密码,登陆192.168.1.1路由器如何设置密码
  12. 洛谷OJ - P2440 - 木材加工(二分答案)
  13. Win10 清除 PowerShell 命令行历史记录的方法
  14. 判断文本框输入中文超过10个英文数字超过20个
  15. python中match的六种用法,python 正则函数match()和search()用法示例
  16. 朋友圈加粗字体数字_利用Stylus插件让Chrome有macOS的字体渲染效果
  17. electron-vue起步
  18. 组件测试 软件,测试AUTOSAR软件组件的测试方法及系统专利_专利查询 - 天眼查
  19. 龙威ol服务器维护是什么意思,《龙威OL》六大职业定位介绍
  20. windows批处理命令:创建文件并写入内容的bat脚本

热门文章

  1. 魁拔妖侠传 之 浮云骑士语录
  2. python3将文本内容生成词云
  3. Unix网络编程学习笔记之第11章 名字与地址转换
  4. SpringBoot学习笔记(完整)
  5. Python 零基础入门到实战(一)笔记:内置对象、浅拷贝、深拷贝、计算圆面积、凯撒密码、英文大小写转换、输入国家打印出国家名和首都、输入数字英文输出、统计句子中的字母数量、猜随机数
  6. nginx 简单配置
  7. 计算机思维在化工方面的应用,计算思维在化学上的应用.pdf
  8. codeforces CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes) Editorial前三题讲解
  9. OMRON欧姆龙PLC如何实现远程上下载程序?
  10. C# AD(Active Directory)域信息同步,组织单位、用户等信息查询