如何将 CNN 应用于每个通道的基于多通道像素数据的权重?

How to apply CNN for multi-channel pixel data based weights to each channel?

我的图像有 8 channels.I 有一个传统算法,其中权重被添加到这些通道中的每一个以获得输出为“0”或“1”。这适用于多个样本和复杂的场景。我想使用 CNN 方法在机器学习中实现相同的功能。

我是 ML 新手,开始查找似乎专门处理图像处理问题的教程 - 手写识别、特征提取等

http://cv-tricks.com/tensorflow-tutorial/training-convolutional-neural-network-for-image-classification/

https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/neural_networks.html

我已经用 Theano 设置了 Keras,因为 background.Basic Keras 样本工作正常。

我需要执行哪些步骤才能使用 CNN 获得相同的结果?我不理解过滤器、内核、步幅在我的使用中的使用 case.How 如果像素通道值和输出为以下形式,我们是否向 Keras 提供训练数据?

像素#1 f(C1,C2...C8)=1

像素#2 f(C1,C2...C8)=1

像素#3 f(C1,C2...C8)=0 .

.

像素#N f(C1,C2...C8)=1

我认为您应该像使用 CNN 进行语义分割一样对待它。有关示例,请查看

https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf

您可以使用他们正在使用的相同架构,但对于第一层,不要使用 3 个通道的过滤器,而是使用 8 个通道的过滤器。

对于损失函数,您可以使用相同的 loos 函数或更具体的二元损失函数。

keras 有多种实现,但使用的是 tensorflow 后端

https://github.com/JihongJu/keras-fcn https://github.com/aurora95/Keras-FCN

由于输入是通道值的形式,因此在 sequence.I 中也建议您使用 Convolution1D。在这里,您将每个像素的通道值作为输入,您需要为每个 pixel.Try 预测这个 例如:

 Conv1D(filters, kernel_size, strides=1, padding='valid')
 Conv1D()
 MaxPooling1D(pool_size)
 ......
 (Add many layers as you want)
 ......
 Dense(1) 

使用binary_crossentropy作为损失函数。