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