我有一个具有 8 个 channel 的图像。我有一个传统算法,其中将权重添加到每个 channel 以获得“0”或“1”输出。这对于多个样本和复杂场景效果很好。我想使用 CNN 方法在机器学习中实现相同的功能。
我是机器学习新手,开始寻找似乎专门处理图像处理问题的教程 - 手写识别、特征提取等。
https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/neural_networks.html
我已经设置了以 Theano 作为背景的 Keras。基本 Keras 示例工作正常。
为了使用 CNN 获得相同的结果,我需要遵循哪些步骤?我不理解我的用例中过滤器、内核、步幅的使用。如果像素 channel 值和输出采用以下形式,我们如何向 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 个 channel 的过滤器,而是使用 8 个 channel 的过滤器。
对于损失函数,您可以使用相同的 loos 函数或更具体的二元损失函数。
有几种针对 keras 的实现,但都使用 tensorflow 后端
https://github.com/JihongJu/keras-fcn https://github.com/aurora95/Keras-FCN
关于image-processing - 如何将CNN应用于基于多 channel 像素数据的每个 channel 的权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45205420/