Я использую Tensorflow и Keras. Есть ли возможность добиться правильного распознавания образов для изображений на поверхности сферы? Я использую (Healpy framework) для создания моих скинов, на которых должно работать распознавание образов. Проблема в том, что эти Healpy skymaps являются одномерными массивами numpy, поэтому компактный подзадача может быть распределен по этому 1d массиву. На самом деле это довольно сложно изучить для базового алгоритма машинного обучения (я думаю о сверточной глубокой сети).Распознавание образов на сфере (на основе HEALPY)
Конкретная задача в этом контексте заключалась бы в подсчете блоков на поверхности сферы (см. Прилагаемый image). Для этой конкретной задачи правильное число будет 8. Итак, я создал 10000 skymaps (настройки Healpy: nside = 16, соответствующие npix = 3072), каждый из которых имеет случайное число блобов между 0 и 9 (таким образом, 10 возможностей). Я попытался решить эту проблему с 1d Healpy массива и простым каналом Форвард сетью:
model = Sequential()
model.add(Dense(npix, input_dim=npix, init='uniform', activation='relu'))
model.add(Dropout(0.25))
model.add(Dense(10, init='uniform', activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(skymaps, number_of_correct_sources, batch=100, epochs=10, validation_split=1.-train)
, однако, после тренировки с 10000 skymaps испытательной установка дала точность только 38%. Я предполагаю, что это значительно увеличится при обеспечении реального расположения клеток Healpy (как это видно на сфере) вместо 1d массива. В этом случае можно использовать сверточную сеть (Convolution2d) и работать как для обычного распознавания изображений. Любые идеи о том, как правильно отображать healpy клетки в массиве 2d или использовать сверточную сеть непосредственно на сфере?
Спасибо!