Интерфейс подготовки датасета #24

Closed
opened 2024-03-14 14:54:35 +03:00 by movefasta · 11 comments
movefasta commented 2024-03-14 14:54:35 +03:00 (Migrated from gitlab.com)

Фаза Подготовки и генерации датасета

  • Вкладка Датасеты. Аналогично вкладке Проекты там отображаются списком Cards датасеты.
  • Пользователь создаёт проект датасета (если датасетов нет, то он видит просто кнопку "Плюсик").
  • После нажатия кнопки появляется диалоговое окно с двумя разделами:
  • Выпадающее меню для выбора навыка с Placeholder Тип Датасета. Перечень навыков, для которых будет требоваться Датасет пока жёстко задан: Object Detection - YOLOv8 и Pose Estimation - DOPE.
  • Заголовок Выберите детали для датасета и перечень деталей в виде Material Cards (можно переиспользовать компонент вкладки), которые можно отметить Чекбоксами. Пользователь выбирает из списка нужные ему детали и нажимает Далее.
  • В том же самом диалоговом окне задаются параметры датасета (см. конфиг rbs_dataset_generator_cfg.json). Параметры интерфейса задаются через json schema (?). Пользователь настраивает параметры, нажимает сохранить.
  • Датасеты отображаются в виде Cards. При нажатии на датасет появляется Sidebar справа, где указаны детали и все другие конфигурационные опции. На самой карточке отображаются иконки, которые отражают статус датасета: "Новый" (иконка треугольничка, при нажатии запускается процесс генерации), "В работе" (иконка квадрата "Стоп", при нажатии процесс генерации завершается), "Завершён" (иконка зелёной галочки).
  • Генерация датасета запускается командой ${DATASET_GEN_BIN} rbs_dataset_generator_cfg.json отдельным процессом, в ходе генерации отслеживается затраченное время и объём занимаемого датасетом места на диске.
  • Датасет сохраняется и можно просмотреть в интерфейсе все сгенерированные датасеты и удалить их при необходимости

Пример rbs_dataset_generator_cfg.json

  # Тип датасета, выбирается из списка "list_typedataset": ["ObjectDetection","PoseEstimation", ...] - enum
  "typedataset": "ObjectDetection",

  # Путь к датасету
  "dataset_path": "/path"

  # Список выбранных моделей для датасета (id-порядковый номер,name-имя,model-относительный путь к мешу)
  "models":[
    {"id": 1, "name": "fork",             "model": "models/fork.fbx"},
    {"id": 2, "name": "asm_element_edge", "model": "models/asm_element_edge.fbx"}
  ],

  # Параметры рандомизации положения моделей в сцене
  "models_randomization":{
    # минимальные значения координат модели x,y,z
    "loc_range_low":[-1, -1, 0],
    # максимальные значения координат модели x,y,z
    "loc_range_high":[1, 1, 2]
  },

  # Описание сцены (окружения)
  "scene":{
    # Описание объектов в сцене
    "objects":[
      # имя объекта
      {"name": "floor",
       # тип коллизии из списка
       # Default: ‘CONVEX_HULL’.
       # Available: ‘BOX’, ‘SPHERE’, ‘CAPSULE’, ‘CYLINDER’, ‘CONE’, ‘CONVEX_HULL’, ‘MESH’, ‘COMPOUND’.
       "collision_shape": "BOX",
       # координаты объекта в сцене
       "loc_xyz":[0,0,0], "rot_euler":[0, 0, 0],
       # диапазоны рандомизации 4-х параметров материала для объектов в сцене
       "material_randomization": {"specular":[0,1], "roughness":[0,1], "metallic":[0,1], "base_color":[[0,0,0,1],[1,1,1,1]]},
       # рандомизация текстур
       "texture_randomisation": "/path_to_image(s)"
      },
      {"name": "object1", "collision_shape": "", "loc_xyz":[0,0,0], "rot_euler":[0, 0, 0],
       "material_randomization": {"specular":[0,1], "roughness":[0,1], "metallic":[0,1], "base_color":[[0,0,0,1],[1,1,1,1]]},
      },
      {"name": "object2", "collision_shape": "COMPOUND", "loc_xyz":[0,0,0], "rot_euler":[0, 0, 0],
       "material_randomization": {"specular":[0,1], "roughness":[0,1], "metallic":[0,1], "base_color":[[0,0,0,1],[1,1,1,1]]},
      },
    ],

    # Описание источников света сцены - подгружаются автоматически
    "lights":[
      # порядковый номер источника света
      {"id": 1,
       # тип источника света ["POINT", "SUN", ...]
       "type": "POINT",
       # положение источника света
       "loc_xyz":[5,5,5], "rot_euler":[-0.06, 0.61, -0.19],
       # диапазон изменения цвета источника света
       "color_range_low":[0.5, 0.5, 0.5], "color_range_high":[1, 1, 1],
       # диапазон изменения энергии источника света
       "energy_range":[400,900]
      },
      {"id": 2, "type": "SUN",   "loc_xyz":[0,0,0], "rot_euler":[-0.01, 0.01, -0.01],
       "color_range_low":[1, 1, 1], "color_range_high":[1, 1, 1],
       "energy_range":[2,9]
      }
    ]
  },

  # Параметры рандомизации положения камеры в сцене

  "camera_position":{
    # центр сферы, на поверхности которой будет случайно выбираться положение камеры
    "center_shell": [0,0,0],
    # два радиуса сфер, между которыми будет выбираться точка
    "radius_range": [0.4, 1.4],
    # углы возвышения в градусах, ограничивающие сферу (от 0 до 90)
    "elevation_range": [10, 90]
  },

  # Параметры генерации датасета

  "generation":{
  # количество случайных позиций камеры в одной серии
    "n_cam_pose": 5,
    # количество сдвигов камеры из одного положения
    "n_sample_on_pose": 3,
    # количество серий с разным расположением деталей
    "n_series": 100,
    # формат изображений в датасете
    "image_format": "jpg",
    # размеры изображений [ширина, высота] в датасете
    "image_size_wh": [640, 480]
  }

  # Итоговое количество изображений в датасете: n_cam_pose * n_sample_on_pose * n_series

## Фаза Подготовки и генерации датасета - Вкладка `Датасеты`. Аналогично вкладке `Проекты` там отображаются списком Cards датасеты. - Пользователь создаёт проект датасета (если датасетов нет, то он видит просто кнопку "Плюсик"). - После нажатия кнопки появляется диалоговое окно с двумя разделами: - Выпадающее меню для выбора навыка с Placeholder `Тип Датасета`. Перечень навыков, для которых будет требоваться Датасет пока жёстко задан: `Object Detection - YOLOv8` и `Pose Estimation - DOPE`. - Заголовок `Выберите детали для датасета` и перечень деталей в виде Material Cards (можно переиспользовать компонент вкладки), которые можно отметить Чекбоксами. Пользователь выбирает из списка нужные ему детали и нажимает `Далее`. - В том же самом диалоговом окне задаются параметры датасета (см. конфиг `rbs_dataset_generator_cfg.json`). Параметры интерфейса задаются через json schema (?). Пользователь настраивает параметры, нажимает сохранить. - Датасеты отображаются в виде Cards. При нажатии на датасет появляется Sidebar справа, где указаны детали и все другие конфигурационные опции. На самой карточке отображаются иконки, которые отражают статус датасета: "Новый" (иконка треугольничка, при нажатии запускается процесс генерации), "В работе" (иконка квадрата "Стоп", при нажатии процесс генерации завершается), "Завершён" (иконка зелёной галочки). - Генерация датасета запускается командой `${DATASET_GEN_BIN} rbs_dataset_generator_cfg.json` отдельным процессом, в ходе генерации отслеживается затраченное время и объём занимаемого датасетом места на диске. - Датасет сохраняется и можно просмотреть в интерфейсе все сгенерированные датасеты и удалить их при необходимости ## Пример rbs_dataset_generator_cfg.json ```json # Тип датасета, выбирается из списка "list_typedataset": ["ObjectDetection","PoseEstimation", ...] - enum "typedataset": "ObjectDetection", # Путь к датасету "dataset_path": "/path" # Список выбранных моделей для датасета (id-порядковый номер,name-имя,model-относительный путь к мешу) "models":[ {"id": 1, "name": "fork", "model": "models/fork.fbx"}, {"id": 2, "name": "asm_element_edge", "model": "models/asm_element_edge.fbx"} ], # Параметры рандомизации положения моделей в сцене "models_randomization":{ # минимальные значения координат модели x,y,z "loc_range_low":[-1, -1, 0], # максимальные значения координат модели x,y,z "loc_range_high":[1, 1, 2] }, # Описание сцены (окружения) "scene":{ # Описание объектов в сцене "objects":[ # имя объекта {"name": "floor", # тип коллизии из списка # Default: ‘CONVEX_HULL’. # Available: ‘BOX’, ‘SPHERE’, ‘CAPSULE’, ‘CYLINDER’, ‘CONE’, ‘CONVEX_HULL’, ‘MESH’, ‘COMPOUND’. "collision_shape": "BOX", # координаты объекта в сцене "loc_xyz":[0,0,0], "rot_euler":[0, 0, 0], # диапазоны рандомизации 4-х параметров материала для объектов в сцене "material_randomization": {"specular":[0,1], "roughness":[0,1], "metallic":[0,1], "base_color":[[0,0,0,1],[1,1,1,1]]}, # рандомизация текстур "texture_randomisation": "/path_to_image(s)" }, {"name": "object1", "collision_shape": "", "loc_xyz":[0,0,0], "rot_euler":[0, 0, 0], "material_randomization": {"specular":[0,1], "roughness":[0,1], "metallic":[0,1], "base_color":[[0,0,0,1],[1,1,1,1]]}, }, {"name": "object2", "collision_shape": "COMPOUND", "loc_xyz":[0,0,0], "rot_euler":[0, 0, 0], "material_randomization": {"specular":[0,1], "roughness":[0,1], "metallic":[0,1], "base_color":[[0,0,0,1],[1,1,1,1]]}, }, ], # Описание источников света сцены - подгружаются автоматически "lights":[ # порядковый номер источника света {"id": 1, # тип источника света ["POINT", "SUN", ...] "type": "POINT", # положение источника света "loc_xyz":[5,5,5], "rot_euler":[-0.06, 0.61, -0.19], # диапазон изменения цвета источника света "color_range_low":[0.5, 0.5, 0.5], "color_range_high":[1, 1, 1], # диапазон изменения энергии источника света "energy_range":[400,900] }, {"id": 2, "type": "SUN", "loc_xyz":[0,0,0], "rot_euler":[-0.01, 0.01, -0.01], "color_range_low":[1, 1, 1], "color_range_high":[1, 1, 1], "energy_range":[2,9] } ] }, # Параметры рандомизации положения камеры в сцене "camera_position":{ # центр сферы, на поверхности которой будет случайно выбираться положение камеры "center_shell": [0,0,0], # два радиуса сфер, между которыми будет выбираться точка "radius_range": [0.4, 1.4], # углы возвышения в градусах, ограничивающие сферу (от 0 до 90) "elevation_range": [10, 90] }, # Параметры генерации датасета "generation":{ # количество случайных позиций камеры в одной серии "n_cam_pose": 5, # количество сдвигов камеры из одного положения "n_sample_on_pose": 3, # количество серий с разным расположением деталей "n_series": 100, # формат изображений в датасете "image_format": "jpg", # размеры изображений [ширина, высота] в датасете "image_size_wh": [640, 480] } # Итоговое количество изображений в датасете: n_cam_pose * n_sample_on_pose * n_series ```
movefasta commented 2024-03-14 15:04:09 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2024-03-14 15:04:20 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2024-03-14 15:12:07 +03:00 (Migrated from gitlab.com)

mentioned in issue #16

mentioned in issue #16
movefasta commented 2024-03-14 15:15:30 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2024-03-14 15:19:05 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2024-03-14 15:19:56 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2024-03-14 15:51:26 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2024-03-14 16:21:42 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
IDONTSUDO commented 2024-03-22 11:45:10 +03:00 (Migrated from gitlab.com)
  • Заголовок Выберите детали для датасетаи перечень деталей на видео Карточки материалов (можно переиспользовать вкладки компонентов), которые можно отметить Чекбоксами. Пользователь выбирает из списка нужные ему детали и нажимает Далее.
    Не согласовано описание как выглядят детали для датасета
* Заголовок `Выберите детали для датасета`и перечень деталей на видео Карточки материалов (можно переиспользовать вкладки компонентов), которые можно отметить Чекбоксами. Пользователь выбирает из списка нужные ему детали и нажимает `Далее`. Не согласовано описание как выглядят детали для датасета
IDONTSUDO commented 2024-03-22 11:52:50 +03:00 (Migrated from gitlab.com)
  • Датасеты представлены в виде открыток. При выборе даты появится боковая панель справа, где указаны детали и все другие конфигурационные параметры. На самой карточке приведены иконки, которые отображают состояние набора дат: «Новый» (иконка треугольничка, при высоте запуска процесса генерации), «В работе» (иконка квадрата «Стоп», при низкой мощности процесса завершается), «Завершён» (иконка зелёной галочки). ).
  • Датасеты представлены в виде открыток.
    такую открытку возьмем?
    Что такое открытки?
  • иконка квадрата «Стоп», при низкой мощности процесса завершается
    . Низкая мощность процессора это?
* Датасеты представлены в виде открыток. При выборе даты появится боковая панель справа, где указаны детали и все другие конфигурационные параметры. На самой карточке приведены иконки, которые отображают состояние набора дат: «Новый» (иконка треугольничка, при высоте запуска процесса генерации), «В работе» (иконка квадрата «Стоп», при низкой мощности процесса завершается), «Завершён» (иконка зелёной галочки). ). - Датасеты представлены в виде открыток. такую открытку возьмем? Что такое открытки? - иконка квадрата «Стоп», при низкой мощности процесса завершается . Низкая мощность процессора это?
movefasta commented 2024-04-23 13:12:45 +03:00 (Migrated from gitlab.com)

mentioned in merge request !11

mentioned in merge request !11
movefasta (Migrated from gitlab.com) closed this issue 2024-04-23 13:32:45 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: robossembler/webstudio#24
No description provided.