目录

  • 赛题背景
  • 全代码
    • 导入工具包
    • 读取图片
    • 实现FSRCNN网络
    • FSRCNN
      • FSRCNN模型训练
      • FSRCNN模型验证
      • FSRCNN模型预测
      • 保存图片查看
    • ESPCN
      • 实现ESPCN网络
      • ESPCN模型训练
      • ESPCN模型验证
      • ESPCN模型预测
      • 保存图片查看

赛题背景

视频增强和超分辨率是CV的核心算法之一,对早期胶片视频的质量和清晰度的提升有着重大意义。本题就是给一堆视频(低分辨率和高分辨率),利用训练得到的模型将低分辨率视频预测得到高分辨率视频。

全代码

导入工具包

import cv2
import numpy as np
import tensorflow as tf
from tensorflow import kerasfrom tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import Conv2DTranspose
from tensorflow.keras.layers import InputLayer
from tensorflow.keras.models import Sequential

读取图片

path = "./h_GT/Youku_00000_h_GT/001.bmp"
img_GT = cv2.imread(path)/255.0
img_GT.shape
path = "./l/Youku_00000_l/001.bmp"
img_l = cv2.imread(path)/255.0
img_l.shape

实现FSRCNN网络

def fsrcnn():model = Sequential()model.add(InputLayer(input_shape=(270, 480, 3)))# first_partmodel.add(Conv2D(56, 5, padding='same', activation='relu'))# mid_partmodel.add(Conv2D(12, 1, padding='same', activation='relu'))for i in range(4):model.add(Conv2D(12, 3, padding='same', activation='relu'))# last_partmodel.add(Conv2DTranspose(3, 9, strides=4, padding='same',))model.compile(optimizer=tf.optimizers.Adam(1e-1), loss=tf.losses.mse, metrics=['mse'])return model

FSRCNN

FSRCNN (Faster Super-Resolution Convolutional Neural Network) 解决了SRCNN的耗时问题。FSRCNN使用反卷积来替代插值的预处理进行上采样,可以直接进行端到端的学习;FSRCNN使用ResNet bottleneck 架构来提高模型精度,使用更小的卷积核和更多的卷积层来替代大的卷积核。所以在生成不同高清分辨率图片时,FSRCNN只需调节用于上采样的反卷积权重,其余卷积层不变,大大加快训练速度,甚至做到实时。

FSRCNN模型训练

# 使用模型
model = fsrcnn()# 模型监控:自动调节学习率
plateau = keras.callbacks.ReduceLROnPlateau(monitor='val_loss', verbose=0, mode='min', factor=0.10, patience=6)
# 模型在验证集达到最优停止
early_stopping = keras.callbacks.EarlyStopping(monitor='val_loss', verbose=0, mode='min', patience=25)
# 模型在最优点保持
checkpoint = keras.callbacks.ModelCheckpoint('fsrcnn.h5', monitor='val_loss', verbose=0, mode='min', save_best_only=True)# 训练数据
x = np.array([img_l,img_l])
y = np.array([img_GT,img_GT])# 模型训练
model.fit(x, y, epochs=10, batch_size=2, verbose=1, shuffle=True, validation_data=(x, y), callbacks=[plateau, early_stopping, checkpoint])

FSRCNN模型验证

model.evaluate(x, y, verbose=0)

FSRCNN模型预测

pic_super = model.predict(x, verbose=0, batch_size=1)

保存图片查看

cv2.imwrite("./fsrcnn_00.bmp", pic_super[0])

ESPCN

ESPCN(Efficient Sub-Pixel Convolutional Neural Network)吸收了FSRCNN的精华,它只在模型末端使用亚像素卷积的方式进行上采样,这样可以在低分辨率空间中保留更多的纹理区域,也可以在视频超分中做到实时。

实现ESPCN网络

def espcn():inputs = keras.layers.Input(shape=(270, 480, 3))cnn = keras.layers.Conv2D(64, 5, padding='same', activation='relu')(inputs)cnn = keras.layers.Conv2D(32, 3, padding='same', activation='relu')(cnn)cnn = keras.layers.Conv2D(3 * 4 **2, 3, padding='same')(cnn)cnn = tf.reshape(cnn, [-1, 270, 480, 4, 4, 3])cnn = tf.transpose(cnn, perm=[0, 1, 3, 2, 4, 5]) outputs = tf.reshape(cnn, [-1, 270 * 4, 480 * 4, 3])model = keras.models.Model(inputs=[inputs], outputs=[outputs])model.compile(optimizer=tf.optimizers.Adam(1e-1), loss=tf.losses.mse, metrics=['mse'])return model

ESPCN模型训练

# 使用模型
model = espcn()# 模型监控:自动调节学习率
plateau = keras.callbacks.ReduceLROnPlateau(monitor='val_loss', verbose=0, mode='min', factor=0.10, patience=6)
# 模型在验证集达到最优停止
early_stopping = keras.callbacks.EarlyStopping(monitor='val_loss', verbose=0, mode='min', patience=25)
# 模型在最优点保持
checkpoint = keras.callbacks.ModelCheckpoint('espcn.h5', monitor='val_loss', verbose=0, mode='min', save_best_only=True)# 训练数据
x = np.array([img_l,img_l])
y = np.array([img_GT,img_GT])# 模型训练
model.fit(x, y, epochs=10, batch_size=2, verbose=1, shuffle=True, validation_data=(x, y), callbacks=[plateau, early_stopping, checkpoint])

ESPCN模型验证

model.evaluate(x, y, verbose=0)

ESPCN模型预测

pic_super = model.predict(x, verbose=0, batch_size=1)

保存图片查看

cv2.imwrite("./espcn_00.bmp", pic_super[0])

以上内容和代码全部来自于《阿里云天池大赛赛题解析(深度学习篇)》这本好书,十分推荐大家去阅读原书!

阿里云天池大赛赛题(深度学习)——视频增强(完整代码)相关推荐

  1. 【读书向】阿里云天池大赛赛题解析——总结

    [读书向]阿里云天池大赛赛题解析--总结 目录 [读书向]阿里云天池大赛赛题解析--总结 [读书向]阿里云天池大赛赛题解析--可视化 [读书向]阿里云天池大赛赛题解析--特征工程 [读书向]阿里云天池 ...

  2. 阿里云天池大赛赛题解析――深度学习篇

    作者:天池平台 出版社:电子工业出版社 品牌:电子工业出版社 出版时间:2021-09-01 阿里云天池大赛赛题解析――深度学习篇

  3. 阿里云天池大赛赛题解析——深度学习篇

    阿里云天池大赛赛题解析--深度学习篇 (豆瓣)图书阿里云天池大赛赛题解析--深度学习篇 介绍.书评.论坛及推荐 https://book.douban.com/subject/35596114/

  4. 阿里云天池大赛赛题解析(深度学习篇)--阅读笔记1--赛题一

    阿里云天池大赛赛题解析(深度学习篇)–阅读笔记1 [x]表示遇到不懂的知识,将在[知识补充]给出具体讲解. 文章目录 阿里云天池大赛赛题解析(深度学习篇)--阅读笔记1 前言 赛题一 瑞金医院MMC人 ...

  5. 阿里云天池大赛赛题(深度学习)——人工智能辅助构建知识图谱(完整代码)

    # 导入所需文件 import numpy as np from sklearn.model_selection import ShuffleSplit from data_utils import ...

  6. 【赠书】阿里云天池大赛赛题解析,深度学习篇!

    ‍‍ 阿里云天池作为国内知名的竞赛平台和AI社区,自诞生以来就一直秉持着让更多人公平获得大数据的理念.也正因此,天池每场经典赛事沉淀的课题和数据集都会永久保留和开放.截至目前,天池平台已举办了超过20 ...

  7. 阿里云天池大赛赛题(机器学习)——天猫用户重复购买预测(完整代码)

    目录 赛题背景 全代码 导入包 读取数据(训练数据前10000行,测试数据前100条) 读取全部数据 获取训练和测试数据 切分40%数据用于线下验证 交叉验证:评估估算器性能 F1验证 Shuffle ...

  8. 阿里云天池大赛赛题(机器学习)——阿里云安全恶意程序检测(完整代码)

    目录 赛题背景 全代码(ML 和 DL) 特征工程进阶与方案优化 代码 特征工程进阶部分 基于LightGBM 的模型验证 模型测试 深度学习解决方案:TextCNN建模 代码 数据读取 数据预处理 ...

  9. 国内首本数据竞赛图书《阿里云天池大赛赛题解析——机器学习篇》今日开启预售!

    天池平台已经举办了超过 200 场来自真实业务场景的竞赛,每场赛事沉淀的课题和数据集,将在天池保留和开放.天池平台已成为在校学生踏入职场前的虚拟实践基地,也成为聚集40万数据人才,孵化2000余家数据 ...

最新文章

  1. 河北省医疗卫生数据中心案例简介
  2. Java中读取某个目录下的所有文件和文件夹
  3. 学习计算机游戏编程,在线游戏学编程,游戏编程汇总
  4. java如何转成jar包,修改及反编译可运行Jar包实现过程详解
  5. 【HTML/CSS】定位方式及区别
  6. MySQL:查询条件
  7. 做机器学习的是些什么样的人?Kaggle做了一份居委会式的调查
  8. 【PAT乙】1065 单身狗 (25分)
  9. Linux文件系统(五)---三大缓冲区之buffer块缓冲区
  10. 图像增强——imhist、imcontour、imadjust、histeq、fspecial、imfilter、medfilt2
  11. delphi 数据库_Delphi数据库编程初学者指南
  12. java截取视频的帧
  13. ElasticSearch版本与Jar包冲突
  14. 2020年11月程序员工资统计,平均14327元
  15. python 3d绘图立方体_用python绘制三维立方体的二维投影
  16. html link canonical
  17. github首次使用提交项目
  18. 什么办法能让鹅长头包 鹅什么药头上头瘤长得快
  19. Microsoft ODBC Driver 17 for SQL Server: 以前的某个安装需要重新引导计算机以便使更改生效。若要继续,请重新启动计算机,然后再次运行安装程序
  20. 马克思主义哲学笔记(一)

热门文章

  1. Mac系统中怎么绘制函数图像?附绘制函数图像教程~
  2. 多线程下载神器IDM,永久使用
  3. printf()函数
  4. opensips服务器环境搭建
  5. 学C语言和英语水平的关系顶多不过半毛
  6. 建设工程项目质量成本优化与控制
  7. 关于旋转(Rotation)
  8. CentOS 上 Tomcat 安装及配置
  9. 二阶常系数齐次线性微分方程的解法
  10. 拼插机器人课和围棋课_开学第一课和机器人比围棋的人是谁