【发布时间】:2019-12-05 06:01:50
【问题描述】:
我是否可以使用任何方法来识别“虚假”4K 图像?即从 720p/1080p 放大到 4K 的图像。
我尝试过搜索,但我主要只找到了使用不同方法(如 Billinear、Bicubic、Lanczos、SRCNN 和 EDSR)来放大图像的方法。
我怎样才能从“真正的 4K”图像中识别出这些从较低分辨率放大的图像?
我目前有一个包含 200 个“真实”4K 图像的数据集,我将使用上述方法之一再次缩小和放大这些图像。有没有一种方法可以训练模型来区分给定图像数据集中的这些图像?这应该给我至少 400 张图片,有 2 个类别。真 4K 和升级 4K。
是否有我应该使用的机器学习模型?到目前为止,我是计算机视觉、数字图像处理、机器学习领域的新手,并且只有卷积神经网络图像分类器的经验。可以使用 CNN 来训练模型以识别此类图像吗?还是机器学习方法不适合这种情况?
感谢您的宝贵时间。
编辑:按照@CAFEBABE 的建议,我将这些 4K 图像(真实的、lanczos 放大的和从 1080p 放大的双三次图像)拆分为每个类别的 240x135 的 51200 张图像,并将它们放入 CNN 中,如下所示。
model = Sequential()
model.add(Conv2D(32, (3,3), input_shape = (135, 240, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
# 2 hidden layers
model.add(Flatten())
model.add(Dense(64))
model.add(Activation("relu"))
model.add(Dense(64))
model.add(Activation("relu"))
# The output layer with 3 neurons, for 3 classes
model.add(Dense(3))
model.add(Activation("softmax"))
# Compiling the model using some basic parameters
model.compile(loss="sparse_categorical_crossentropy"
,optimizer="adam"
,metrics=["accuracy"])
但是,我的模型似乎不是基于放大学习,而是尝试根据图像是什么进行分类;我得到了 33% 的准确率(纯随机)
CNN 是否可以用于解决这个问题,或者我的模型是否遗漏了什么?
【问题讨论】:
标签: tensorflow machine-learning keras deep-learning computer-vision