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

Примером относительно четкого набора данных 3D-тела является ModelNet10. Тело из набора данных сохраняется в виде файла .off, содержащего вершины, ребра и грани. Материалы, текстуры и прочее не поддерживаются форматом файла .off.

Вот метки классов и количество образцов:

Общее количество образцов составляет около 5000. Также набор данных очень несбалансирован.

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

Я решил получить больше данных и создать расширенный набор данных с использованием моделей из 3dWarehouse. Модели сохраняются в формате файла .skp, поэтому требуется преобразование. Я создал .skp-›.off конвертер с помощью SketchUp C Api и преобразовал с его помощью множество моделей skp.

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

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

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