我很熟悉(C)NN如何一般地用于分类问题(2d图像 - > 1类),但我不知道如何构建一个将采用2D图像并输出2d的网络分类值矩阵。
实际上,我有一组NxN图像(1个通道),我想按“每个像素”进行分类。我希望输出是一组NxN类,这样对于位置(a,b)的像素,结果将是输入图像中像素(a,b)的分类结果。
模型架构的任何帮助?
P.S。我听说过基于补丁的方法,但我想将整个NxN图像输入到网络中,而不需要“修补”。
谢谢! 乔
答案 0 :(得分:2)
一般来说,这项任务没什么特别之处。 DNN可以同时执行多个分类或回归任务。由于权重是共享的,因此您可以确保在对每个像素进行分类时,在一个像素和所有其他像素之间存在一些链接。
长话短说,可能的算法来解决这个问题:
1)确保您有一个训练集,其中输入您有NxN图像,作为输出您有目标类标签的NxN矩阵(每个像素的类标签)
2)使用通常用于图像分类的架构构建一些DNN。像一对带有最大池的卷积层,然后是2-3个完全连接的ReLU层。
3)确保您的输出图层的大小为NxN且不是softmax图层(再次使用ReLU)
4)训练它!
这应该绝对正常。我还可以向你保证,从DNN获得几个半独立的输出并不罕见。例如,here同一网络用于同时定位所有面部关键点(眼睛,嘴巴,鼻子等)。