Я использую Tensorflow и Keras. Есть ли возможность добиться правильного распознавания образов для изображений на поверхности сферы? Я использую (Healpy framework) для создания своих карт неба, на которых должно работать распознавание образов. . Проблема в том, что эти карты неба Healpy представляют собой одномерные массивы numpy, поэтому компактный подшаблон может быть разбросан по этому массиву 1d. Это на самом деле довольно сложно изучить для базового алгоритма машинного обучения (я думаю о сверточной глубокой сети).
Конкретной задачей в этом контексте будет подсчет капель на поверхности сферы (см. прикрепленное изображение а>). Для этой конкретной задачи правильным числом будет 8. Итак, я создал 10000 карт неба (настройки Healpy: nside=16, что соответствует npix=3072), каждая со случайным количеством капель от 0 до 9 (таким образом, 10 возможностей). Я попытался решить эту проблему с помощью массива 1d Healpy и простой сети Feed Forward:
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)
, однако после тренировки с 10 000 карт неба точность тестового набора составила всего 38%. Я предполагаю, что это значительно увеличится при предоставлении реального расположения ячеек Healpy (как оно отображается на сфере), а не только массива 1d. В этом случае можно использовать сверточную сеть (Convolution2d) и работать как при обычном распознавании изображений. Любые идеи, как правильно отображать здоровые ячейки в 2d-массиве или с помощью сверточной сети непосредственно на сфере?
Спасибо!