keras 的 example 文件 conv_lstm.py 解析

本文深入探讨了使用ConvLSTM2D和Conv3D进行视频预测的网络结构,展示了如何预测带有轻微噪声的视频下一帧,并通过代码实现了解析和修复视频清晰度的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该文件演示了ConvLSTM2D和Conv3D的使用,

他的网络结构打印出来为

____________________________________________________________________________________________________
Layer (type)                                 Output Shape                            Param #
====================================================================================================
conv_lst_m2d_1 (ConvLSTM2D)                  (None, None, 40, 40, 40)                59200
____________________________________________________________________________________________________
batch_normalization_1 (BatchNormalization)   (None, None, 40, 40, 40)                160
____________________________________________________________________________________________________
conv_lst_m2d_2 (ConvLSTM2D)                  (None, None, 40, 40, 40)                115360
____________________________________________________________________________________________________
batch_normalization_2 (BatchNormalization)   (None, None, 40, 40, 40)                160
____________________________________________________________________________________________________
conv_lst_m2d_3 (ConvLSTM2D)                  (None, None, 40, 40, 40)                115360
____________________________________________________________________________________________________
batch_normalization_3 (BatchNormalization)   (None, None, 40, 40, 40)                160
____________________________________________________________________________________________________
conv_lst_m2d_4 (ConvLSTM2D)                  (None, None, 40, 40, 40)                115360
____________________________________________________________________________________________________
batch_normalization_4 (BatchNormalization)   (None, None, 40, 40, 40)                160
____________________________________________________________________________________________________
conv3d_1 (Conv3D)                            (None, None, 40, 40, 1)                 1081
====================================================================================================
Total params: 407,001
Trainable params: 406,681
Non-trainable params: 320
____________________________________________________________________________________________________

其输入和输出分别为noisy_movies和shifted_movies,也就是两段电影,影片内容是用代码生成的移动方框,如下

只要在代码中添加如下两行,即可保存一段影片:

import imageio
imageio.mimsave("my.gif", shifted_movies[3], 'GIF', duration=0.2)

而noisy_movies和shifted_movies的shape均为(1200, 15, 40, 40, 1),

也就是包含1200个影片,每个影片有15帧,分辨率为40*40,

noisy_movies和shifted_movies影片内容有什么关系呢?

其实shifted_movies是noisy_movies的每一帧的下一帧,只不过有一点点噪音而已

如果把代码中的

                if np.random.randint(0, 2):
                    noise_f = (-1)**np.random.randint(0, 2)
                    noisy_movies[i, t,
                                 x_shift - w - 1: x_shift + w + 1,
                                 y_shift - w - 1: y_shift + w + 1,
                                 0] += noise_f * 0.1

这段注释掉,然后在下面添加判断

for k in range(100):
    print(k)
    for i in range(1, 14):
        print((shifted_movies[k][i - 1].astype(np.uint8)==noisy_movies[k][i].astype(np.uint8)).all())
        # cv2.imshow("noisy", noisy_movies[k][i])
        # cv2.imshow("shift", shifted_movies[k][i - 1])
        # cv2.waitKey(1000)

我们就可以看到,这个判断永远为True,所以该代码逻辑就是,

给一段影片,预测其下一帧,可能还带一点影片清晰度的修复(消除噪音)

 

——————————————————————

总目录

keras的example文件解析

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值