Попробовал разделить снимок 512х512 на части 32х32, по которым нужно научить сеть и в дальнейшем распознавать. Примеры:
Без облаков:
С облаками:
Используя Synaptic, построил сеть с 16*16*4 входных, 32 скрытых и 2 выходных.
16*16 потому, что для уменьшения времени вычислений сделал ресайз частей снимка. А *4 - беру во внимание каждый канал, так как скорее всего цвет играет некую роль.
Вручную определяют несколько частей с облаками и без (выходы 1,0 или 0,1 соответственно). В 20-50 итераций проводил обучение, но в результате при проверке для любых частей выходы получаются примерно одинаковыми(отличаются только на тысячные)
Как правильно работать с такими данными? Нужна ли предварительная нормализация изображения? Сколько слоев и нейронов в скрытом слое должно быть?
UPD:
На данном этапе выяснилось, что таким образом, скорее всего, определить безоблачные части сложно без большой обучающей выборки. Попробовал получить из снимков за несколько дней минимальные значения яркостей. Таким образом итоговый цвет пикселя будет принимать яркость из одного изображений, в котором скорее всего нет облаков. Но получается так, что не для всех областей есть снимки без облаков, поэтому получаются шумы
Оригинал
Минимальные яркости из изображений за последние 25 дней
Но все же, вопрос остается открыт, а основная
задача в какой-то мере решена, но решение нуждается в улучшении