首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >detectron2中无标注图像数据集的推理

detectron2中无标注图像数据集的推理
EN

Stack Overflow用户
提问于 2021-12-01 15:02:53
回答 1查看 856关注 0票数 0

动机

  • 我有一个detectron2面具R基线模型,它足够好地预测一些物体的边界。
  • 我想把这些预测的边界转换成COCO多边形来注释下一个数据集(监督标记)。
  • 为此,我需要在没有注释的图像数据集上运行推断。
  • detectron2方法register_coco_instancesload_coco_json需要带有注释的图像来正确标记预测的对象。

问题

  • 我可以在没有注释文件的情况下注册测试数据集吗?
  • 如果不是,使用没有注释的基本图像信息生成可可拉伯尔梅 JSON文件的最简单方法是什么?

代码

代码语言:javascript
复制
dataset_name = "test_data"
image_dir = "data/test"
coco_file = "data/test_annotations.json"

# Register dataset
# A COCO file is needed with image info, which I don't have
register_coco_instances(dataset_name , {}, coco_file, image_dir)
test_dict = load_coco_json(coco_file, image_dir, dataset_name=dataset_name )
metadata = MetadataCatalog.get(dataset_name)

# config details omitted for brevity
cfg = get_cfg()
predictor = DefaultPredictor(cfg)

# Make predictions for all images
for sample in test_dict:
    image_filename = sample["file_name"]
    img = cv2.imread(image_filename)
    outputs = predictor(img)
    # Display or save image with predictions to file
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-02 14:22:55

下面是一种从图像目录生成图像详细信息的方法,并将其写入现有的COCO文件中:

代码语言:javascript
复制
from PIL import Image

def add_images_to_coco(image_dir, coco_filename):
    image_filenames = list(Path(image_dir).glob('*.jpg'))
    images = []
    for i, image_filename in enumerate(image_filenames):
        im = Image.open(image_filename)
        width, height = im.size
        image_details = {
            "id": id + 1,
            "height": height,
            "width": width,
            "file_name": str(image_filename.resolve()),
        }
        images.append(image_details)

    # This will overwrite the image tags in the COCO JSON file
    with open(coco_filename) as f:
        data = json.load(f)

    coco['images'] = images

    with open(coco_filename, 'w') as coco_file:
        json.dump(data, coco_file, indent = 4)

如果您还没有创建基准COCO文件,那么您就需要用您的类别创建一个基线COCO文件。它应该是这样的:

代码语言:javascript
复制
{
    "images": [ ],
    "annotations": [ ],
    "categories": [
        {
            "id": 1,
            "name": "Car",
            "supercategory": "Car"
        },
        {
            "id": 2,
            "name": "Person",
            "supercategory": "Person"
        }
    ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70186513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档