Nano Hash - криптовалюты, майнинг, программирование

Преобразование изображения маски rgb в формат многоугольника coco json

Я аннотировал изображения с помощью PixelAnnotationTool, представленного здесь: https://github.com/abreheret/PixelAnnotationTool, и с помощью предоставленный словарь:

{
    "labels": {
        "unlabeled": {
            "categorie": "void",
            "color": [
                0,
                0,
                0
            ],
            "id": 0,
            "id_categorie": 0,
            "name": "unlabeled"
        },
        "bicycle_motorcycle": {
            "categorie": "bicycle_motorcycle",
            "color": [
                119,
                11,
                32
            ],
            "id": 1,
            "id_categorie": 1,
            "name": "bicycle_motorcycle"
        },
        "bus": {
            "categorie": "bus",
            "color": [
                102,
                51,
                0
            ],
            "id": 2,
            "id_categorie": 2,
            "name": "bus"
        },

.... }

Я хочу преобразовать эти маски RGB в формат многоугольника json, чтобы использовать их в Mask R-CNN. Как это сделать?


  • Обязательно нужно предоставить изображение? 21.02.2019

Ответы:


1

Вот функция Python, которая примет объект изображения маски и вернет словарь подмасок, отмеченных цветом RGB.

from PIL import Image # (pip install Pillow)

def create_sub_masks(mask_image):
    width, height = mask_image.size

    # Initialize a dictionary of sub-masks indexed by RGB colors
    sub_masks = {}
    for x in range(width):
        for y in range(height):
            # Get the RGB values of the pixel
            pixel = mask_image.getpixel((x,y))[:3]

            # If the pixel is not black...
            if pixel != (0, 0, 0):
                # Check to see if we've created a sub-mask...
                pixel_str = str(pixel)
                sub_mask = sub_masks.get(pixel_str)
                if sub_mask is None:
                   # Create a sub-mask (one bit per pixel) and add to the dictionary
                    # Note: we add 1 pixel of padding in each direction
                    # because the contours module doesn't handle cases
                    # where pixels bleed to the edge of the image
                    sub_masks[pixel_str] = Image.new('1', (width+2, height+2))

                # Set the pixel value to 1 (default is 0), accounting for padding
                sub_masks[pixel_str].putpixel((x+1, y+1), 1)

    return sub_masks

Когда у вас есть маски, вы можете использовать imantics, чтобы преобразовать их в COCO.

21.02.2019
  • Как мне использовать imantics для преобразования sub_masks в кокос? не могу найти примеры или документацию в репо. заранее спасибо 09.10.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..