在Keras(tf后端)中的较大图像上训练滑动窗口模型

时间:2018-06-19 14:43:38

标签: python tensorflow machine-learning keras convolutional-neural-network

人。

我对Keras / Tensorflow中的机器学习和编程还比较陌生。我已经选修了一门机器学习课程以进行图像分析,但是我正在努力解决一个相当简单的问题(我相信)。我的任务是检测通常大小为2200x630的图像上的噪点,给定或占据几百个像素。这太大了,无法放入转换层,我无法真正调整其大小。这是因为(稍后)我将无噪音地再现图像。

我研究了具有多层等结构的标准CNN。在Keras中创建这些CNN并没有问题,但是当我尝试使用滑动窗口时,问题就出现了。

如何在使用滑动窗口的同时训练网络?

我似乎无法全神贯注。就我而言,我只是希望网络决定图像中是否存在噪声。因此,这是一个简单的对/错问题,一个带有2个类的cnn。在将图像“分成”多个带有滑动窗口的部分后,如何调整整个图像的标签以用于反向传播和训练?甚至可以在Keras中这样做吗?我没有任何代码,因为我不知道如何进一步前进。因此,我在这里发布了一个伪代码:

Class Network():
      def __init__(self):
          .......


      def model(self):
          img = Input(self.img_shape)
          model.add(Conv2D(........)
          ......
          ......
          model.add(Dense(nclasses))
          return model

上面的部分是正常的(我希望),但是我正在努力的部分如下:

class Network......

    def sliding_window(self):
        for i in range(start, stop):
            for j in range(start, stop):
                 img = data[window_size*i:window_size*(i+1)][window_size*j:window_size*(j+1)]

    def training(self):
        .....
        .....
        for X_target, labels in generator():
             window = sliding_window(X_target)
             self.autoencoder.train_on_batch(X_train,X_target)

我现在如何使程序理解20张图像等于一张图像,并且必须合并最后20张图像的所有标签才能为实际的图像制作有益的标签。图层本身是为小盒子定义的,那么我该如何训练网络呢?我要解决所有这些错误吗?除了滑动窗口外,我还应该使用其他东西吗?我很困惑。...

0 个答案:

没有答案