image-processing - 如何将CNN应用于基于多 channel 像素数据的每个 channel 的权重?

标签 image-processing classification keras conv-neural-network pixel

我有一个具有 8 个 channel 的图像。我有一个传统算法,其中将权重添加到每个 channel 以获得“0”或“1”输出。这对于多个样本和复杂场景效果很好。我想使用 CNN 方法在机器学习中实现相同的功能。

我是机器学习新手,开始寻找似乎专门处理图像处理问题的教程 - 手写识别、特征提取等。

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。基本 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/

相关文章:

python - 一个问题以及如何在创建模型时处理批处理

image - 比较 Blob 的质心与边界框的中心

java - 将带有自定义调色板的 Java Image 对象保存到 GIF 文件的最佳方法

pandas - 使用 Keras flow_from_dataframe 进行图像分类

machine-learning - 为什么使用受限玻尔兹曼机而不是多层感知器?

python - 安装 Keras 后 Anaconda 提示卡住/关闭

opencv - 检测连接到任何其他 blob 的 blob,可能使用 OpenCV

python - 使用 Python 图像库进行抗锯齿时,使用透明消除边缘处的细边框

c++ - 'CreateDirectoryW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' in OpenCV 2. 4.5 和 VS 2010

machine-learning - Keras:如何在训练和测试阶段使用 dropout?