代码阅读deblurgan

一.layers_utils.py
1.ReflectionPadding2D():该层可以添加行、列或零在图像张量的顶部、底部、左侧和右侧。整数:相同的对称填充应用于宽度和高度。两个整数的元组:解释为两个不同的高度和宽度的对称填充值。数据形式为字符串,默认是 channels_last 。输入四维张量

2.spatial_reflection_2d_padding(x, padding=((1, 1), (1, 1)), data_format=None):填充四维向量的第二第三维度,返回tf张量 tf.pad(x, pattern, "REFLECT")。padding整数张量【秩,2】。如果模型是reflect,填充[D,0],[D,1]

。其中加判断数据格式是否是data-format的语句,first\last\none。

assert len() 断言函数

assert语句用来声明某个条件是真的,当assert语句失败的时候,会引发一AssertionError.

3. class ReflectionPadding2D(Layer)

(1)python 中可变参数的两种形式,并且 *args(元组)必须放在 **kwargs( keyword arguments 的缩写) 的前面,因为位置参数在关键字参数的前面. **kwargs将一个可变的关键字参数的字典传给函数实参,同样参数列表长度可以为0或为其他值。

(2)hasattr() 函数用于判断对象是否包含对应的属性,

hasattr(object, name)   name -- 字符串,属性名。

isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。sinstance() 会认为子类是一种父类类型,考虑继承关系。InputSpec: 确定层的ndim,dtype,shape,每一层都应有一个input_spec属性,保存InputSpec的实例的list(每一个输入tensor都对应一个)

(3)def compute_output_shape(self, input_shape):  

if self.data_format == 'channels_first':
elif self.data_format == 'channels_last':

def call()  为了将类的实例对象变为可调用对象(相当于重载()运算符),此处返回输入,填充以及数据格式

二.losses.py

1.

def l1_loss(y_true, y_pred)返回真实与生成数据的差的绝对值的均值
def perceptual_loss_100(y_true, y_pred):
def perceptual_loss(y_true, y_pred):       
    vgg = VGG16(include_top=False, weights='imagenet', input_shape=image_shape)
    其中 def VGG16(include_top=True, weights='imagenet',input_tensor=None, input_shape=None, pooling=None, classes=1000)

   

        include_top:是否在网络顶端包括3全连接层; weights: 随机初始化,ImageNet的预训练或者加载权重文件的路径;  pooling:特征提取可选的池化模式,当
include_top时false时,pooling=none意味着模型的输出是最后一个卷积层的4D张量输出;pooling=avg意味着全局平均池化应用在最后一个卷积层的输出,此时模型的输出是一个二维张量;pooling=max时意味着全局最大池化。  classes: 当 include_top= true的时候以及权重参数没有明确指定的时候,classes指图像分类的类数。
def wasserstein_loss():
def gradient_penalty_loss(self, y_true, y_pred, averaged_samples):

三.,model.py

feature map该层卷积核的个数,随着网络加深,此数成倍增加。卷积网络在学习过程中保持了图像的空间结构,也就是说最后一层的激活值(feature map)总和原始图像具有空间上的对应关系

def generator_model():  目前的版本 ResNet block,下采样两次   卷积核7*7
def discriminator_model(): 3层,不使用sigmoid   卷积核4*4   LeakyReLU(0.2)

四.utils.py图片文件夹,目录排序,加载图片,预处理以及恢复图片,写log

五.train.py

def save_all_weights(d, g, epoch_number, current_loss):  保存所有权重包括迭代数 ,当前损失

六、deblur_image.py

def deblur(weight_path, input_dir, output_dir):去模糊类  权重路径,输入路径,输出路径.由权重路径加载权重,处理输入目录的图片:

x_test = image
generated_images = g.predict(x=x_test)#predict函数用来针对输入样本产生预测的输出,批计算,返回预测的numpy数组
                 batch_size:整数 如果没有指定,默认值32; verbose:冗长的  冗长模型0或1 

 

    join():将序列中的元素以指定的字符连接生成一个新的字符串。

numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)

np.array():列表中数据转换为矩阵或者张量

对象:array_like;order参数指定阵列的内存布局;subok = True时, 子类将通过。否则, 返回的数组将强制为基类数组(默认);

ndmin:int(可选)此参数指定结果数组应具有的最小维数。用户可以根据需要预先设置形状, 以满足该要求。[::i] 是Python中的基础索引,而[:,:,i]是Numpy 中对于多维度 Array的提取

concatenate(arrays, axis=None, out=None):连接函数。其中数组必须有同样的形状,如果axis轴为无,则阵列在使用前将展开,默认值为0。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

15195867336

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值