dataset - 使用 SYNTHIA 数据集进行实例分割
问题描述
我已经使用 SYNTHIA 数据集(RAND-CITYSCAPES 子集)使用标签图像的第一个通道进行语义分割,如上一篇文章中所建议的那样:
在数据集的 README 文件中,它说第二个通道专用于实例分割:
“GT/LABELS:包含 png 文件的文件夹(每个图像一个)。注释在两个通道中给出。第一个通道包含该像素的类(见下表)。第二个通道包含那些实例的唯一 ID动态物体(汽车、行人等)。”
然后,我尝试使用我编写的以下代码读取实例和语义分割图:
def read_synthia_label(path):
raw_label = np.asarray(imageio.imread(path, format='PNG-FI'))
seg_label = Image.fromarray(np.uint8(raw_label[:,:,0]))
inst_label = Image.fromarray(np.uint16(raw_label[:,:,1]))
return seg_label, inst_label
但是,当我检查标签的一致性时,我观察到同一图像中同一实例标签的分割标签并不相同。即以下断言抛出错误:
with PathManager.open(instance_id_file, "rb") as f:
inst_image = np.asarray(Image.open(f), order="F")
with PathManager.open(segmentation_file, "rb") as f:
segm_image = np.asarray(Image.open(f), order="F")
flattened_inst_ids = np.unique(inst_image)
for instance_id in flattened_inst_ids:
inds_for_same_inst = np.where(instance_id == inst_image.ravel())[0]
assert(segm_image.ravel()[inds_for_same_inst[0]] == segm_image.ravel()[inds_for_same_inst[-1]]) # throws error
我是否以错误的方式阅读实例分割?有没有人使用过 SYNTHIA 进行实例分割?我在网上找不到任何关于此的文档,因此将不胜感激。
解决方案
我遇到了您在 SYNTHIA VIDEO SEQUENCES 中描述的相同行为。
但是,这只是某些类的问题。对于动态对象,如自述文件(见下文)中所述,同一图像内同一实例标签的分割标签是相同的,即一致的。
自述文件:
- GT/LABELS:包含 png 文件的文件夹(每个图像一个)。注释在两个通道中给出。第一个通道包含该像素的类别(见下表)。第二个通道包含那些动态对象(汽车、行人等)的实例的唯一 ID。
推荐阅读
- c# - 打开 Skype for business 而不是团队 CALLTO 协议
- javascript - 如何从 HTML、CSS、Js 和 Python 文件创建 APK 文件?
- xamarin - 是否可以在 Shell 运行时在单个菜单项中添加子菜单?
- reactjs - 在 laravel 8 中使用 react.js 发布数据时,有没有办法修复内部服务器错误
- swift - 在 SwiftUI 中在父视图和子视图之间共享状态变量的正确方法是什么
- r - 我的闪亮应用程序在我调用它时删除了我的 Markdown 的内容并且不保存为 pdf
- webpack - 如何在与 webpack 捆绑时将 SASS 变量转换为原生 CSS 变量?
- wiremock - 如何发送由标头值驱动的wiremock存根响应
- android - 发布新更新时未在 Play 商店中获取应用更新
- node.js - 加载资源失败:服务器响应状态为 404(未找到) ENOENT:没有这样的文件或目录,stat '/client/build/index.html'