Аннотируйте данные плотного облака точек с помощью SageMaker Ground Truth

Исходный узел: 834877

Компании, занимающиеся автономными транспортными средствами, обычно используют LiDAR датчики для создания трехмерного представления об окружающей среде вокруг их транспортных средств. Например, они устанавливают датчик LiDAR на свои автомобили, чтобы непрерывно делать моментальные снимки окружающей трехмерной среды. Выходной сигнал датчика LiDAR представляет собой последовательность кадров трехмерного облака точек (типичная скорость захвата составляет 3 кадров в секунду). Amazon SageMaker - основа правды позволяет легко маркировать объекты в одном трехмерном кадре или в последовательности трехмерных кадров облака точек для создания наборов данных для обучения машинному обучению (ML). Ground Truth также поддерживает объединение датчиков камеры и данных LiDAR с помощью до восьми входов видеокамер.

По мере того, как датчики LiDAR становятся более доступными и экономичными, клиенты все чаще используют данные облака точек в новых областях, таких как робототехника, отображение сигналов и дополненная реальность. Некоторые новые мобильные устройства даже включают датчики LiDAR, один из которых предоставил данные для этого поста! Растущая доступность датчиков LiDAR повысила интерес к данным облаков точек для задач машинного обучения, таких как обнаружение и отслеживание трехмерных объектов, трехмерная сегментация, синтез и реконструкция трехмерных объектов и даже использование трехмерных данных для проверки двухмерной оценки глубины.

Хотя данные плотного облака точек богаты информацией (более 1 миллиона облаков точек), их сложно маркировать, поскольку рабочие станции для маркировки часто имеют ограниченную память, а графические возможности и аннотаторы имеют тенденцию быть географически распределенными, что может увеличить задержку. Несмотря на то, что большое количество точек может отображаться на рабочей станции этикетировщика, пропускная способность этикетировщика может быть снижена из-за времени визуализации при работе с многомиллионными облаками точек, что значительно увеличивает затраты на этикетирование и снижает эффективность.

Один из способов сократить эти затраты и время - преобразовать задания по маркировке облака точек в более мелкие, более легко выполняемые задачи, которые сохраняют большую часть исходной информации облака точек для аннотации. Мы называем эти подходы в широком смысле как даунсамплинг, похожий на даунсамплинг в области обработки сигналов. Как и в области обработки сигналов, подходы с понижающей дискретизацией облака точек пытаются удалить точки при сохранении точности исходного облака точек. При аннотировании облаков точек с субдискретизацией вы можете использовать выходной 3D кубоиды для отслеживание объекта и обнаружение объекта задачи непосредственно для обучения или проверки в полноразмерном облаке точек, практически не влияя на производительность модели, при этом экономя время маркировки. Для других модальностей, например семантическая сегментация, в котором каждая точка имеет свою собственную метку, вы можете использовать свои субдискретизированные метки, чтобы предсказать метки для каждой точки в исходном облаке точек, что позволит вам найти компромисс между стоимостью этикетировщика (и, следовательно, объемом помеченных данных) и небольшим количеством неправильная классификация точек в полноразмерном облаке точек.

В этом посте мы рассмотрим, как выполнять методы понижающей дискретизации для подготовки данных облака точек для маркировки, а затем продемонстрируем, как повысить дискретизацию ваших выходных меток, чтобы применить их к исходному полноразмерному набору данных, используя некоторый вывод в выборке с простой моделью машинного обучения. Для этого мы используем Основную Истину и Инстансы записных книжек Amazon SageMaker для выполнения этикетирования и всех этапов предварительной и постобработки.

Данные

Данные, которые мы используем в этом посте, представляют собой сканирование крыши многоквартирного дома, созданное с помощью приложения 3D Scanner на iPhone12 Pro. Приложение позволяет использовать встроенные сканеры LiDAR на мобильных устройствах для сканирования заданной области и экспорта файла облака точек. В этом случае данные облака точек имеют формат xyzrgb, принятый формат для облака точек наземной достоверности. Для получения дополнительной информации о типах данных, разрешенных в облаке точек наземной истины, см. Допустимые форматы необработанных 3D-данных.

На следующем изображении показано наше 3D-сканирование.

методы

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

Подходы с понижающей дискретизацией

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

Черепица

Один наивный подход - разбить пространство облака точек на трехмерные кубы, также известные как вокселей, из (например) 500,000 XNUMX точек, каждая из которых помечается независимо параллельно. Этот подход, названный плитка, эффективно уменьшает размер сцены для маркировки.

Однако это может значительно увеличить время и затраты на маркировку, потому что типичную сцену с 8 миллионами точек может потребоваться разбить на более чем 16 подсцены. Большое количество независимых задач, возникающих в результате этого метода, означает, что аннотатор тратит больше времени на переключение контекста между задачами, и рабочие могут потерять контекст, когда сцена слишком мала, что приведет к неправильной маркировке данных.

Пример фиксированного шага

Альтернативный подход - выбрать или создать уменьшенное количество точек с помощью линейной подвыборки, называемой образец с фиксированным шагом. Допустим, вы хотите достичь цели в 500,000 XNUMX очков (мы заметили, что это обычно можно визуализировать на потребительском ноутбуке - см. Принятый формат необработанных 3D-данных), но у вас есть облако точек с 10 миллионами точек. Вы можете рассчитать свой размер шага как step = 10,000,000 / 500,000 = 20. После определения размера шага вы можете выбрать каждую 20-ю точку в наборе данных, создав новое облако точек. Если ваши данные облака точек имеют достаточно высокую плотность, этикетировщики по-прежнему должны иметь возможность различать любые соответствующие элементы для маркировки, даже если у вас может быть только 1 точка на каждые 20 в исходной сцене.

Обратной стороной этого подхода является то, что не все точки влияют на окончательный результат субдискретизации, а это означает, что если точка является одной из немногих важных, но не является частью выборки, ваши аннотаторы могут полностью пропустить эту функцию.

Среднее значение вокселя

Альтернативная форма субдискретизации, которая использует все точки для создания облака точек с субдискретизацией, заключается в выполнении сеточная фильтрация. Сеточная фильтрация означает, что вы разбиваете входное пространство на обычные трехмерные блоки (или воксели) в облаке точек и заменяете все точки в вокселе одной репрезентативной точкой (например, средней точкой). На следующей диаграмме показан пример красного прямоугольника вокселей.

Если в заданном вокселе не существует точек из входного набора данных, то в облако точек после субдискретизации для этого воксела не добавляется. Фильтрация сетки отличается от выборки с фиксированным шагом, потому что вы можете использовать ее для уменьшения шума и дальнейшей настройки, регулируя размер ядра и функцию усреднения, чтобы в результате получились немного разные конечные облака точек. Следующие облака точек показывают результаты простого (выборка с фиксированным шагом) и расширенного (среднее значение вокселов) понижающей дискретизации. Облако точек, субдискретизированное с помощью расширенного метода, получается более гладким, это особенно заметно при сравнении стены из красного кирпича позади обеих сцен.

Подход с повышением частоты дискретизации

После субдискретизации и маркировки данных вы можете захотеть увидеть, как метки, созданные на меньшем облаке точек с субдискретизацией, проецируются на полноразмерное облако точек, которое мы называем повышающая дискретизация. Заданиям по обнаружению или отслеживанию объектов для этого не требуется постобработка. Метки в облаке точек с субдискретизацией (например, кубоиды) напрямую применимы к большему облаку точек, потому что они определены в мировом пространстве координат, совместно используемом полноразмерным облаком точек (x, y, z, высота, ширина, длина). Эти метки минимально восприимчивы к очень небольшим ошибкам вдоль границ объектов, когда граничной точки не было в наборе данных с субдискретизацией, но такие случайные и незначительные ошибки перевешиваются количеством дополнительных, правильно помеченных точек внутри кубоида, которые также могут быть тренировался дальше.

Однако для заданий семантической сегментации трехмерного облака точек метки не применимы напрямую к полноразмерному набору данных. У нас есть только подмножество меток, но мы хотим спрогнозировать остальные метки полного набора данных на основе этого подмножества. Для этого мы можем использовать простой Классификатор K-ближайших соседей (K-NN) с уже отмеченными точками, служащими обучающей выборкой. K-NN - это простой контролируемый алгоритм машинного обучения, который предсказывает метку точки, используя «K» ближайших помеченных точек и взвешенное голосование. С помощью K-NN мы можем предсказать класс точек для остальных немаркированных точек в полноразмерном наборе данных на основе класса большинства из трех ближайших (по евклидову расстоянию) точек. Мы можем дополнительно усовершенствовать этот подход, варьируя гиперпараметры классификатора K-NN, такие как количество ближайших точек для рассмотрения, а также метрику расстояния и схему взвешивания точек.

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

Теперь, когда мы рассмотрели методы, использованные в этой публикации, мы продемонстрируем эти методы в записной книжке SageMaker на примере сцены облака точек семантической сегментации.

Предпосылки

Чтобы пройти через это решение, вам понадобится следующее:

  • An Аккаунт AWS.
  • Тетрадь Управление идентификацией и доступом AWS (IAM) с разрешениями, необходимыми для выполнения этого пошагового руководства. К вашей роли IAM должны быть прикреплены следующие управляемые политики AWS:
    • AmazonS3FullAccess
    • AmazonSageMakerFullAccess
  • An Простой сервис хранения Amazon (Amazon S3) корзина, в которой хранятся артефакты записной книжки (входные данные и метки).
  • Рабочая группа SageMaker. Для этого поста мы используем частную рабочую группу. Вы можете создать рабочую команду на консоли SageMaker.

Настройка ноутбука

Используем ноутбук ground_truth_annotation_dense_point_cloud_tutorial.ipynb в Примеры SageMaker раздел экземпляра записной книжки, чтобы продемонстрировать эти подходы к понижающей и повышающей дискретизации. Эта записная книжка содержит весь код, необходимый для выполнения предварительной обработки, маркировки и постобработки.

Чтобы получить доступ к записной книжке, выполните следующие действия:

  1. Создать экземпляр ноутбука. Вы можете использовать тип экземпляра ml.t2.xlarge для запуска экземпляра записной книжки. Выберите экземпляр с объемом ОЗУ не менее 16 ГБ.
    1. Вам необходимо использовать созданную вами ранее роль IAM записной книжки. Эта роль позволяет вашему ноутбуку загружать ваш набор данных в Amazon S3 и вызывать API решения.
  2. Откройте Jupyter Lab или Jupyter, чтобы получить доступ к вашему экземпляру записной книжки.
  3. В Jupyter выберите Примеры SageMaker В Jupyter Lab выберите значок SageMaker.
  4. Выберите Работа с наземной маркировкой правды а затем выберите ипинб Блокнот.
  5. Если вы используете Jupyter, выберите Используйте чтобы скопировать записную книжку в свой экземпляр и запустить его. Если вы работаете в лаборатории Jupyter, выберите Создать копию.

Предоставьте входы для записной книжки

Во-первых, мы модифицируем записную книжку, чтобы добавить ARN нашей частной рабочей группы и местоположение корзины, которое мы используем для хранения нашего набора данных, а также наших этикеток.

Раздел 1. Получение набора данных и визуализация облака точек

Мы загружаем наши данные, запустив Раздел 1 нашего блокнота, который загружает наш набор данных из Amazon S3 и загружает облако точек в наш экземпляр блокнота. Мы загружаем специально подготовленные данные из корзины, принадлежащей AWS. Объект под названием rooftop_12_49_41.xyz должен находиться в корне ведра S3. Эти данные представляют собой сканированное изображение крыши многоквартирного дома, созданное на мобильном устройстве. В этом случае данные облака точек представлены в формате xyzrgb.

Мы можем визуализировать наше облако точек с помощью Matplotlib. разброс3d функция. Файл облака точек содержит все правильные точки, но неправильно повернут. Мы можем повернуть объект вокруг своей оси, умножив облако точек на матрицу вращения. Мы можем получить матрицу вращения, используя SciPy и укажите степень изменения, которую мы хотим внести для каждой оси, используя from_euler Метод:

!aws s3 cp s3://smgt-downsampling-us-east-1-322552456788/rooftop_12_49_41.xyz pointcloud.xyz # Let's read our dataset into a numpy file pc = np.loadtxt("pointcloud.xyz", delimiter=",") print(f"Loaded points of shape {pc.shape}") # playing with view of 3D scene from scipy.spatial.transform import Rotation def plot_pointcloud(pc, rot = [[30,90,60]], color=True, title="Simple Downsampling 1", figsize=(50,25), verbose=False): if rot: rot1 = Rotation.from_euler('zyx', [[30,90,60]], degrees=True) R1 = rot1.as_matrix() if verbose: print('Rotation matrix:','n',R1) # matrix multiplication between our rotation matrix and pointcloud pc_show = np.matmul(R1, pc.copy()[:,:3].transpose() ).transpose() if color: try: rot_color1 = np.matmul(R1, pc.copy()[:,3:].transpose() ).transpose().squeeze() except: rot_color1 = np.matmul(R1, np.tile(pc.copy()[:,3],(3,1))).transpose().squeeze() else: pc_show = pc fig = plt.figure( figsize=figsize) ax = fig.add_subplot(111, projection="3d") ax.set_title(title, fontdict={'fontsize':20}) if color: ax.scatter(pc_show[:,0], pc_show[:,1], pc_show[:,2], c=rot_color1[:,0], s=0.05) else: ax.scatter(pc_show[:,0], pc_show[:,1], pc_show[:,2], c='blue', s=0.05) # rotate in z direction 30 degrees, y direction 90 degrees, and x direction 60 degrees rot1 = Rotation.from_euler('zyx', [[30,90,60]], degrees=True) print('Rotation matrix:','n', rot1.as_matrix()) plot_pointcloud(pc, rot = [[30,90,60]], color=True, title="Full pointcloud", figsize=(50,30)) 

Раздел 2: Даунсэмплинг набора данных

Затем мы уменьшаем выборку набора данных до менее чем 500,000 XNUMX точек, что является идеальным количеством точек для визуализации и маркировки. Для получения дополнительной информации см. Пределы разрешения облака точек in Допустимые форматы необработанных 3D-данных. Затем мы строим график результатов нашей понижающей дискретизации, запустив Раздел 2.

Как мы обсуждали ранее, простейшая форма понижающей дискретизации - это выбор значений с использованием фиксированного размера шага в зависимости от того, насколько большим мы хотим, чтобы полученное облако точек было.

Более продвинутый подход состоит в том, чтобы разбить входное пространство на кубы, также известные как воксели, и выбрать одну точку для каждого блока с помощью функции усреднения. Простая реализация этого показана в следующем коде.

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

#Basic Approach target_num_pts = 500_000 subsample = int(np.ceil(len(pc) / target_num_pts)) pc_downsample_simple = pc[::subsample] print(f"We've subsampled to {len(pc_downsample_simple)} points") #Advanced Approach boxsize = 0.013 # 1.3 cm box size. mins = pc[:,:3].min(axis=0) maxes = pc[:,:3].max(axis=0) volume = maxes - mins num_boxes_per_axis = np.ceil(volume / boxsize).astype('int32').tolist() num_boxes_per_axis.extend([1]) print(num_boxes_per_axis) # For each voxel or "box", use the mean of the box to chose which points are in the box. means, _, _ = scipy.stats.binned_statistic_dd( pc[:,:4], [pc[:,0], pc[:,1], pc[:,2], pc[:,3]], statistic="mean", bins=num_boxes_per_axis, ) x_means = means[0,~np.isnan(means[0])].flatten() y_means = means[1,~np.isnan(means[1])].flatten() z_means = means[2,~np.isnan(means[2])].flatten() c_means = means[3,~np.isnan(means[3])].flatten() pc_downsample_adv = np.column_stack([x_means, y_means, z_means, c_means]) print(pc_downsample_adv.shape) 

Раздел 3: Визуализируйте 3D-рендеринг

Мы можем визуализировать облака точек, используя трехмерную диаграмму рассеяния точек. Хотя наши облака точек имеют цвет, наши преобразования по-разному влияют на цвет, поэтому сравнение их в одном цвете обеспечивает лучшее сравнение. Мы можем видеть, что усовершенствованный метод среднего воксельного среднего создает более гладкое облако точек, поскольку усреднение имеет эффект уменьшения шума. В следующем коде мы можем взглянуть на наши облака точек с двух разных точек зрения, умножив наши облака точек на разные матрицы вращения.

Когда вы запускаете Раздел 3 в записной книжке, вы также видите сравнение линейного пошагового подхода с подходом с прямоугольной сеткой, в частности, в том, как фильтр прямоугольной сетки оказывает небольшое сглаживающее влияние на все облако точек. Это сглаживание может быть важным в зависимости от уровня шума вашего набора данных. Изменение функции фильтрации сетки со среднего значения на медианное или какой-либо другой функции усреднения также может улучшить четкость конечного облака точек. Посмотрите внимательно на заднюю стенку простого (фиксированный размер шага) и расширенного (воксельное среднее) примеров с субдискретизацией, обратите внимание на эффект сглаживания, который имеет метод воксельного среднего по сравнению с методом фиксированного размера шага.

rot1 = Rotation.from_euler('zyx', [[30,90,60]], degrees=True) R1 = rot1.as_matrix() simple_rot1 = pc_downsample_simple.copy() simple_rot1 = np.matmul(R1, simple_rot1[:,:3].transpose() ).transpose() advanced_rot1 = pc_downsample_adv.copy() advanced_rot1 = np.matmul(R1, advanced_rot1[:,:3].transpose() ).transpose() fig = plt.figure( figsize=(50, 30)) ax = fig.add_subplot(121, projection="3d") ax.set_title("Simple Downsampling 1", fontdict={'fontsize':20}) ax.scatter(simple_rot1[:,0], simple_rot1[:,1], simple_rot1[:,2], c='blue', s=0.05) ax = fig.add_subplot(122, projection="3d") ax.set_title("Voxel Mean Downsampling 1", fontdict={'fontsize':20}) ax.scatter(advanced_rot1[:,0], advanced_rot1[:,1], advanced_rot1[:,2], c='blue', s=0.05) # to look at any of the individual pointclouds or rotate the pointcloud, use the following function plot_pointcloud(pc_downsample_adv, rot = [[30,90,60]], color=True, title="Advanced Downsampling", figsize=(50,30)) 

Раздел 4: Запуск задания семантической сегментации

Запустите Раздел 4 в записной книжке, чтобы взять это облако точек и запустить с его помощью задание маркировки семантической сегментации облака точек наземной истины. Эти ячейки генерируют требуемый входной файл манифеста и форматируют облако точек в представлении, совместимом с наземной истиной.

Чтобы узнать больше о формате ввода наземной истины в отношении данных облака точек, см. Входные данные и Допустимые форматы необработанных 3D-данных.

В этом разделе мы также выполняем маркировку на рабочем портале. Мы помечаем подмножество облака точек, чтобы иметь некоторые аннотации для выполнения передискретизации. Когда работа завершена, мы загружаем аннотации из Amazon S3 в массив NumPy для нашей постобработки. Ниже приведен снимок экрана инструмента семантической сегментации облака точек наземной истины.

Раздел 5. Выполнение передискретизации этикеток

Теперь, когда у нас есть субдискретизированные метки, мы обучаем классификатор K-NN из SKLearn предсказывать полные метки набора данных, обрабатывая наши аннотированные точки как данные обучения и выполняя логический вывод для оставшихся немаркированных точек в нашем полноразмерном облаке точек.

Вы можете настроить количество используемых точек, а также метрику расстояния и схему взвешивания, чтобы повлиять на то, как выполняется вывод метки. Если вы пометите несколько плиток в полноразмерном наборе данных, вы можете использовать эти помеченные плитки как основную истину для оценки точности прогнозов K-NN. Затем вы можете использовать эту метрику точности для настройки гиперпараметров K-NN или попробовать другие алгоритмы вывода, чтобы уменьшить количество ошибочно классифицированных точек между границами объекта, что приведет к минимально возможной частоте ошибок в выборке. См. Следующий код:

# There's a lot of possibility to tune KNN further # 1) Prevent classification of points far away from all other points (random unfiltered ground point) # 2) Perform a non-uniform weighted vote # 3) Tweak number of neighbors knn = KNeighborsClassifier(n_neighbors=3) print(f"Training on {len(pc_downsample_adv)} labeled points") knn.fit(pc_downsample_adv[:,:3], annotations) print(f"Upsampled to {len(pc)} labeled points") annotations_full = knn.predict(pc[:,:3]) 

Раздел 6. Визуализируйте метки с повышенным разрешением

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

pc_downsample_annotated = np.column_stack((pc_downsample_adv[:,:3], annotations)) pc_annotated = np.column_stack((pc[:,:3], annotations_full)) labeled_area = pc_downsample_annotated[pc_downsample_annotated[:,3] != 255] min_bounds = np.min(labeled_area, axis=0) max_bounds = np.max(labeled_area, axis=0) min_bounds = [-2, -2, -4.5, -1] max_bounds = [2, 2, -1, 256] def extract_tile(point_cloud, min_bounds, max_bounds): return point_cloud[ (point_cloud[:,0] > min_bounds[0]) & (point_cloud[:,1] > min_bounds[1]) & (point_cloud[:,2] > min_bounds[2]) & (point_cloud[:,0] < max_bounds[0]) & (point_cloud[:,1] < max_bounds[1]) & (point_cloud[:,2] < max_bounds[2]) ] tile_downsample_annotated = extract_tile(pc_downsample_annotated, min_bounds, max_bounds) tile_annotated = extract_tile(pc_annotated, min_bounds, max_bounds) rot1 = Rotation.from_euler('zyx', [[30,90,60]], degrees=True) R1 = rot1.as_matrix() down_rot = tile_downsample_annotated.copy() down_rot = np.matmul(R1, down_rot[:,:3].transpose() ).transpose() down_rot_color = np.matmul(R1, np.tile(tile_downsample_annotated.copy()[:,3],(3,1))).transpose().squeeze() full_rot = tile_annotated.copy() full_rot = np.matmul(R1, full_rot[:,:3].transpose() ).transpose() full_rot_color = np.matmul(R1, np.tile(tile_annotated.copy()[:,3],(3,1))).transpose().squeeze() fig = plt.figure(figsize=(50, 20)) ax = fig.add_subplot(121, projection="3d") ax.set_title("Downsampled Annotations", fontdict={'fontsize':20}) ax.scatter(down_rot[:,0], down_rot[:,1], down_rot[:,2], c=down_rot_color[:,0], s=0.05) ax = fig.add_subplot(122, projection="3d") ax.set_title("Upsampled Annotations", fontdict={'fontsize':20}) ax.scatter(full_rot[:,0], full_rot[:,1], full_rot[:,2], c=full_rot_color[:,0], s=0.05) 

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

уборка

Экземпляр записной книжки: у вас есть два варианта, если вы не хотите, чтобы созданный экземпляр записной книжки продолжал работать. Если вы хотите сохранить его на потом, вы можете остановить его, а не удалять.

  • к остановить экземпляр записной книжки: щелкните Экземпляры ноутбуков на левой панели главной страницы консоли SageMaker. Затем нажмите кнопку Stop в столбце "Действия" слева от имени экземпляра записной книжки. После остановки экземпляра записной книжки вы можете запустить его снова, щелкнув значок Start ссылка на сайт. Имейте в виду, что если вы остановите его, а не удалите, с вас будет взиматься плата за связанное с ним хранилище.
  • к удалять экземпляр ноутбука: сначала остановите его, следуя инструкциям выше. Затем щелкните переключатель рядом с экземпляром записной книжки, затем выберите Удалить из Действия выпадающее меню.

Заключение

Облака точек с пониженной дискретизацией могут быть жизнеспособным методом при предварительной обработке данных для обнаружения объектов и маркировки объектов слежения. Это может снизить затраты на этикетирование, при этом создавая высококачественные выходные этикетки, особенно для задач обнаружения и отслеживания 3D-объектов. В этом посте мы продемонстрировали, как метод понижающей дискретизации может повлиять на четкость облака точек для рабочих, и показали несколько подходов, в которых есть компромиссы, основанные на уровне шума набора данных.

Наконец, мы показали, что вы можете выполнять задания семантической сегментации трехмерного облака точек на субдискретизированных наборах данных и сопоставлять метки с полноразмерным облаком точек с помощью предсказания в выборке. Мы достигли этого, обучив классификатор делать вывод по оставшимся точкам полного размера набора данных, используя уже помеченные точки в качестве обучающих данных. Такой подход позволяет экономично маркировать сцены с облаком точек с высокой плотностью, сохраняя при этом хорошее общее качество этикеток.

Протестировать этот блокнот со своими собственными сценами с плотным облаком точек в Ground Truth, попробуйте новые методы понижающей дискретизации и даже попробуйте новые модели помимо K-NN для окончательного прогноза внутри выборки, чтобы увидеть, могут ли методы понижающей и повышающей дискретизации снизить ваши затраты на маркировку.


Об авторах

 Видья Сагар Равипати является архитектором глубокого обучения в Лаборатория решений Amazon ML, где он использует свой обширный опыт работы с крупномасштабными распределенными системами и свою страсть к машинному обучению, чтобы помочь клиентам AWS из различных отраслевых вертикалей ускорить внедрение ИИ и облачных технологий. Ранее он был инженером по машинному обучению в службах подключения в Amazon, который помогал создавать платформы персонализации и профилактического обслуживания.

Исаак Привитера является специалистом по архитектуре решений по машинному обучению и помогает клиентам разрабатывать и создавать решения компьютерного зрения корпоративного уровня на AWS. Исаак имеет опыт использования машинного обучения и ускоренных вычислений для компьютерного зрения и анализа сигналов. Айзек также любит готовить, ходить в походы и быть в курсе последних достижений в области машинного обучения в свободное время.

Джереми Фелтракко является инженером по разработке программного обеспечения в лаборатории Amazon ML Solutions Lab в Amazon Web Services. Он использует свой опыт в области компьютерного зрения, робототехники и машинного обучения, чтобы помочь клиентам AWS ускорить внедрение ИИ.

Источник: https://aws.amazon.com/blogs/machine-learning/annotate-dense-point-cloud-data-using-sagemaker-ground-truth/

Отметка времени:

Больше от Блог машинного обучения AWS