Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从COCO数据集或Open Images V6数据集中提取前景对象?

如何从COCO数据集或Open Images V6数据集中提取前景对象?
EN

Stack Overflow用户
提问于 2021-11-04 12:14:20
回答 1查看 194关注 0票数 1

目前,我正在为目标检测任务准备一个合成数据集。有一些带注释的数据集可用于此类任务,如COCO数据集和打开图像V6。我试图从那里下载图像,但只下载特定类别的前景对象,例如person,换句话说,没有透明背景的图像。我这样做的原因是,我想在编辑这些图像后将它们插入到新的图像中,例如街道场景。

到目前为止,我已经尝试过了,我使用了一个名为FiftyOne的库,并下载了带有语义标签的数据集,但我被困在这里,我不知道还能做什么。

没有必要使用FiftyOne,任何其他方法都可以。

以下是我用来下载带有标注的数据集样本的代码

代码语言:javascript
运行
AI代码解释
复制
import fiftyone as fo
import fiftyone.zoo as foz

dataset = foz.load_zoo_dataset(
    "coco-2017",
    split="validation",
    dataset_dir = "path/fiftyone",
    label_types=["segmentations"],
    classes = ["person"],
    max_samples=10,
    label_field="instances",
    dataset_name="coco-images-person",
)

# Export the dataset
dataset.export(
    export_dir = "path/fiftyone/image-segmentation-dataset",
    dataset_type=fo.types.ImageSegmentationDirectory,
    label_field="instances",
)

谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-09 06:21:21

最简单的方法是使用FiftyOne在简单的Python循环中迭代您的数据集,使用OpenCV和Numpy格式化对象实例的图像并将其写入磁盘。

例如,此函数将接受任何FiftyOne示例集合(ViewDataset ),并将所有对象实例写入由类标签分隔的文件夹中的磁盘:

代码语言:javascript
运行
AI代码解释
复制
import os

import cv2
import numpy as np

def extract_classwise_instances(samples, output_dir, label_field, ext=".png"):
    print("Extracting object instances...")
    for sample in samples.iter_samples(progress=True):
        img = cv2.imread(sample.filepath)
        img_h,img_w,c = img.shape
        for det in sample[label_field].detections:
            mask = det.mask
            [x,y,w,h] = det.bounding_box
            x = int(x * img_w)
            y = int(y * img_h)
            h, w = mask.shape
            mask_img = img[y:y+h, x:x+w, :] 
            alpha = mask.astype(np.uint8)*255
            alpha = np.expand_dims(alpha, 2)
            mask_img = np.concatenate((mask_img, alpha), axis=2)
    
            label = det.label
            label_dir = os.path.join(output_dir, label)
            if not os.path.exists(label_dir):
                os.mkdir(label_dir)
            output_filepath = os.path.join(label_dir, det.id+ext)
            cv2.imwrite(output_filepath, mask_img)

下面是一个完整的示例,它加载COCO2017数据集的一个子集,并将所有"person“实例写入磁盘:

代码语言:javascript
运行
AI代码解释
复制
import fiftyone as fo
import fiftyone.zoo as foz
from fiftyone import ViewField as F

dataset_name = "coco-image-example"
if dataset_name in fo.list_datasets():
    fo.delete_dataset(dataset_name)

label_field = "ground_truth"
classes = ["person"]

dataset = foz.load_zoo_dataset(
    "coco-2017",
    split="validation",
    label_types=["segmentations"],
    classes=classes,
    max_samples=20,
    label_field=label_field,
    dataset_name=dataset_name,
)

view = dataset.filter_labels(label_field, F("label").is_in(classes))

output_dir = "/path/to/output/segmentations/dir/"
os.makedirs(output_dir, exist_ok=True)

extract_classwise_instances(view, output_dir, label_field)

如果这种功能是经常使用的,那么为这种格式编写一个custom dataset exporter可能会很有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69845308

复制
相关文章
Google 的 Firebase 如何删除项目
https://www.ossez.com/t/google-firebase/13792
HoneyMoose
2021/11/02
3.3K0
Google 的 Firebase 如何删除项目
Firebase 如何创建登录 Token
Firebase 的 token 可以使用 firebase 命令行工具来进行创建。
HoneyMoose
2021/04/02
2.6K0
Firebase 如何创建登录 Token
oracle 函数 如何编写
创建函数的基本格式 create or replace function 函数名称(参数1 ,参数2) return 参数类型 is
全栈程序员站长
2022/09/09
4910
如何更好的编写async函数
Promise是使用async/await的基础,所以你一定要先了解Promise是做什么的 Promise是帮助解决回调地狱的一个好东西,能够让异步流程变得更清晰。 一个简单的Error-first-callback转换为Promise的例子:
贾顺名
2019/12/05
1.3K0
如何更好的编写async函数
如何更好的编写async函数 2018年已经到了5月份,node的4.x版本也已经停止了维护 我司的某个服务也已经切到了8.x,目前正在做koa2.x的迁移 将之前的generator全部替换为async 但是,在替换的过程中,发现一些滥用async导致的时间上的浪费 所以来谈一下,如何优化async代码,更充分的利用异步事件流 杜绝滥用async 首先,你需要了解Promise Promise是使用async/await的基础,所以你一定要
贾顺名
2018/06/20
1.2K0
Python调用C函数的方法以及如何编写Python的C扩展
01 前言 前言属闲聊,正文请转后。 标题比较长,其实“如何用Python调用C的函数”以及“如何编写Python的C扩展”在广义上是同一件事,因为都是用C写底层实现,用Python作接口。 具体方法有很多,比如用ctypes、用SWIG等等,各种方法有利有弊。前段时间笔者用SWIG编译某小段函数一直出BUG,检查了两天才发现原来是因为MinGW 32-bit和Python 64-bit不兼容,加之后续笔者还需要用到NumPy C-API,所以现在笔者已弃坑SWIG,转用以下方法: 按照Python C-A
用户1332428
2018/03/07
1.9K0
Python调用C函数的方法以及如何编写Python的C扩展
firebase怎么用_firebase是什么
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168361.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
4.3K0
firebase怎么用_firebase是什么
如何在 Bash 中编写函数
在编程时,实际上是在定义要由计算机执行的 过程(procedure)或 例程(routine)。一个简单的类比是将计算机编程与烤面包进行比较:你一次列出了要组建工作环境的配料,然后列出了烤面包所必须采取的步骤。在编程和烘烤中,必须以不同的间隔重复执行某些步骤。例如,在烤面包中,这可能是酵母培养的过程:
用户1880875
2021/09/15
2K0
提高代码质量:如何编写函数
函数是实现程序功能的最基本单位,每一个程序都是由一个个最基本的函数构成的。写好一个函数是提高程序代码质量最关键的一步。本文就函数的编写,从函数命名,代码分布,技巧等方面入手,谈谈如何写好一个可读性高、易维护,易测试的函数。
哲洛不闹
2018/09/19
8630
提高代码质量:如何编写函数
如何编写一个通用的函数?
C++中模板的作用是支持泛型编程。==泛型编程=是一种编程范式,它只考虑算法或数据结构的抽象,而不考虑具体的数据类型。通过使用模板,可以编写一种通用的算法或数据结构,而不需要为每种数据类型都编写一遍相关代码。模板可以用于函数、类、结构体等地方,以实现通用的算法和数据结构。使用模板可以提高代码的复用性和可读性,减少代码的重复编写。
初阶牛
2023/10/14
2400
如何编写一个通用的函数?
提高代码质量:如何编写函数
函数是实现程序功能的最基本单位,每一个程序都是由一个个最基本的函数构成的。写好一个函数是提高程序代码质量最关键的一步。本文就函数的编写,从函数命名,代码分布,技巧等方面入手,谈谈如何写好一个可读性高、易维护,易测试的函数。
哲洛不闹
2018/09/18
9740
提高代码质量:如何编写函数
如何在 Bash 中编写函数
在编程时,实际上是在定义要由计算机执行的 过程(procedure)或 例程(routine)。一个简单的类比是将计算机编程与烤面包进行比较:你一次列出了要组建工作环境的配料,然后列出了烤面包所必须采取的步骤。在编程和烘烤中,必须以不同的间隔重复执行某些步骤。例如,在烤面包中,这可能是酵母培养的过程:
用户1880875
2021/09/16
2K0
如何编写 Python 程序
注意:每当你需要提供 命令行参数(Command Line Arguments)时,点击 Run -> Edit Configurations 并在 Script parameters: 部分输入相应参数,并点击 OK 按钮:
py3study
2020/01/16
2.2K0
如何编写 Python 程序
基于Python编写的pid控制器
我是学数学的,不是学自动化的,啥啥的自动控制,啥啥的信号系统,我啥也不懂,在恶补。
云深无际
2021/09/14
1.2K0
基于Python编写的pid控制器
【说站】python编写函数的注意点
(3)每一个函数都应该包含简要说明其功能的注释,注释应该紧跟在函数定义之后,并且采用文档字符串格式。
很酷的站长
2022/11/23
2340
【说站】python编写函数的注意点
如何编写基于Android的AccessibilityService的自动打卡
第一节 缘由与准备  最近有时间空闲,闲来无事,想到使用钉钉打卡有时会迟到,所以周末的时候去看了相关网上资料,做了个demo。 材料:定时器,AccessibilityService 加工方案:使用定时器在签到签退期间内自启,通过AccessibilityService模拟点击:分为签到与签退两种情况。 签到正常流程:工作-》考勤打卡-》(判断是否弹出窗口-是:我知道了否跳过)-》签到。 签到迟到流程:工作-》考勤打卡-》迟到打卡。 签退正常流程:工作-》考勤打卡-》签退。 工艺难点:签到页中嵌套的是基于W
用户1148881
2018/01/17
6.7K1
如何编写基于Android的AccessibilityService的自动打卡
如何编写高质量的 JS 函数(4) --函数式编程[实战篇]
本文会从如何用函数式编程思想编写高质量的函数、分析源码里面的技巧,以及实际工作中如何编写,来展示如何打通你的任督二脉。话不多说,下面就开始实战吧。
2020labs小助手
2019/11/11
2K0
BoopSuite:基于Python编写的无线安全审计套件
BoopSuite是一款即将推出的基于python编写的无线安全审计套件。它易于使用功能强大,同时支持2GHz和5GHz频谱,握手包嗅探器(CLI和GUI),监听模式启用脚本和deauth脚本。 另一
FB客服
2018/03/01
9480
BoopSuite:基于Python编写的无线安全审计套件
如何编写高质量的 JS 函数(3) --函数式编程[理论篇]
《如何编写高质量的 JS 函数(1) -- 敲山震虎篇》介绍了函数的执行机制,此篇将会从函数的命名、注释和鲁棒性方面,阐述如何通过 JavaScript 编写高质量的函数。
2020labs小助手
2019/10/07
1.8K0
点击加载更多

相似问题

Firebase函数:确保firebase https函数的安全

11

Firebase https onCall函数

12

如何保护firebase https函数的安全?

145

如何在Firebase函数中调用导出的https Firebase云函数?

10

如何使用firebase函数编写api

00
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档