Разумно ли ожидать, что нейронная сеть сможет идентифицировать перевернутые лица на .obj? - PullRequest
0 голосов
/ 13 июля 2020

Я использую нейронную сеть, потому что решение традиционными средствами кажется неуловимым (собственный инструмент 3ds max «унифицировать нормали» часто дает сбой). Но в основном я хотел использовать его как средство для углубления моего понимания нейронных сетей, поэтому меня не слишком беспокоит, использую ли я кувалду, чтобы сломать орех (если только не выяснится, что кувалда не способна расколоть орех.

Я написал maxscript для экспорта 24000 примитивных объектов me sh как 24000 файлов .obj, каждый из которых ограничен <1000 треугольных граней. Для каждого из этих объектов я случайным образом перевернул 1 лицо. Maxscipt также генерирует 24000 меток, горячие векторы длиной 1000, указывающие индекс перевернутой грани. </p>

x_train [0] представляет первый .obj, массив из 1000 треугольников. Функции, которые объединяют трехмерные векторы vert1, vert2, vert3 и normal (они обнуляются для граней объектов с <1000 граней). </p>

Я пришел к своим гиперпараметрам путем повторения и построения графиков результатов. Вот моя модель: модель

вот некоторые другие гиперпараметры:

ADAM = optimizers.adam(lr=0.004)
model.compile(optimizer=ADAM,loss='categorical_crossentropy',metrics=['accuracy'])
history = model.fit(x_train,y_train,validation_data=(x_test, y_test), epochs=50, batch_size=900)

Результаты, которые я получаю, говорят о том, что я переоснащен. соответствует

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

Раньше я делал очень похожую модель, которая хорошо работала. В этом случае я ограничил ob js произвольно повернутыми и масштабируемыми кубоидами. Он смог идентифицировать до 2 перевернутых лиц на невидимых кубоидах с точностью около 95%. Для меня не удивительно, что увеличение разнообразия входной геометрии усложняет подгонку. Однако я думал, что большее количество обучающих примеров решит эту проблему, но чем больше примеров я приведу, тем хуже будет работать как на поезде, так и на тестовом наборе.

Это разумный подход? Есть ли какие-то очевидные проблемы, которые я упустил?

Если я добьюсь прогресса в решении этой проблемы, я начну думать о том, как решать более общие объекты с большим количеством граней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...