Я пытаюсь реализовать CNN для правильного определения краев четырехугольника в двоичном изображении 322x322 , т.е. в белом четырехугольнике на черном фоне, например
сетевой выход предназначен для представления x и y, помещенных вместе, так что для любого данного изображения из набора данных четыре (4
) соответствующих пары нейронов x и y должны быть запущены / возбуждены так, чтобымои метки для обучения - это кодирование одной горячей меткой (мультиклассовая классификация) для каждой пары xy ребер для четырехстороннего egsay. Мое изображение - 10x10, если первый квад имеет следующие ребра ( x, y ) где это возможно (x, y) -значения от [ 0-9 ] => (1
, 2
) (3
, 8
) (4
, 3
) (5
, 7
) моя метка выглядит как
[image] [] 2
для каждого четырехугольника.Вот конфигурация для моей сети в Java с использованием deeplearning4j.
MultiLayerConfiguration EDGE_PERCEPTRON = new NeuralNetConfiguration.Builder()
.seed(seed)
.l2(0.0005)
.weightInit(WeightInit.XAVIER)
.updater(new Nesterovs(new MapSchedule(ScheduleType.ITERATION, lrSchedule)))
.list()
.layer(0, new ConvolutionLayer.Builder(8, 8)
.stride(2, 2)
.padding(0, 0)
.nIn(channels)
.nOut(filtersize10)
.activation(Activation.IDENTITY)
.build())
.layer(1, new ConvolutionLayer.Builder(4, 4)
.stride(2, 2)
.padding(0, 0)
.nOut(filtersize20)
.activation(Activation.IDENTITY)
.build())
.layer(2, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX)
.kernelSize(2, 2)
.stride(1, 1)
.padding(0, 0)
.build())
.layer(3, new DenseLayer.Builder().activation(Activation.SIGMOID)
.nOut(outputSize).build())
.layer(4, new OutputLayer.Builder(LossFunctions.LossFunction.XENT)
.nOut(outputSize)
.activation(Activation.SIGMOID)
.build())
.setInputType(InputType.convolutionalFlat(height, width, channels))
.backprop(true).pretrain(false).build();
Вот это графическое представление
Что-то не так с моей конфигурацией или, скорее, что вы думаете, яделать неправильно.Сеть ничего не изучает из набора данных, все прогнозы единообразны и все меньше 0,1.Как правильно настроить сеть, чтобы дать правильные прогнозы?