python - 在 Keras(tf 后端)中在较大图像上训练滑动窗口模型
问题描述
伙计们。
我对 Keras/Tensorflow 中的机器学习和编程比较陌生。我已经参加了机器学习图像分析课程,但我正在努力解决一个相当简单的问题(我相信)。我的任务是检测通常大小为 2200x630 的图像上的噪声,给定或取几百个像素。这太大了,无法输入转换层,我无法真正调整它的大小。这是因为我(稍后)要在没有噪音的情况下重现图像。
我研究了具有多层等的标准 CNN。我在 Keras 中创建这些没有问题,但是当我尝试使用滑动窗口时问题就来了。
如何在使用滑动窗口时训练网络?
我似乎无法绕过它。就我而言,我只是想让网络决定图像中是否存在噪声。所以这是一个简单的真/假问题,一个有 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 张图像的所有标签才能为实际图像制作一个健康的标签。这些层本身是为小盒子定义的,那么我该如何训练网络呢?我对这一切都错了吗?我应该使用滑动窗口以外的其他东西吗?我感到很困惑....
解决方案
推荐阅读
- python - Is there a way to use type hinting on back-compatible code in Python?
- laravel - Laravel Relationship HasManyThrough
- python - Resolving symlinks in Python without failing with missing components (like "readlink -m")
- php - 将 CSV 信息推送到表时,SQL DATE 类型变量为 NULL
- html - padding-right or margin-right for content that exceeds page width (body/viewport)
- python - ZeroRPC 性能。我的基准有什么问题?
- slack-api - 使用 chat.postMessage 的附件问题
- android - 找不到图层“mapbox-location-layer”的来源
- python-3.x - Tkinter 最小化/隐藏终端窗口
- r - different total number of columns in add_header_above from kable