paddle图像分割营

不知不觉已经参加了好几个paddlepaddle的训练营。从《百度架构师手把手带你零基础实践深度学习》,《论文复现营》,《目标检测营》还有这次的《图像分割营》。课程地址

《手把手带你零基础实践深度学习》主要是介绍深度学习的基础知识
《论文复现营》要把XX火炬的顶会论文用paddle框架复现,并训练达到和原论文相当的指标等。
《目标检测营》讲解了很多模型训练的方法和技巧。PaddleDetection的优秀模型等。
《图像分割营》讲解分析代码以及python,python-opencv等。这次训练营也做了不少论文复现的工作。

这几天学习了FCN PSPnet Unet deeplab系列等网络。各种现场撸代码搭建模型。python的面向对象编程。图像处理的基本方法。主流分割神经网络的理论讲解。
参加完课程实现了paddlepaddle模型训练的完整流程。

下面几个印象比较深的收获记录下:

  1. 数据增维和降维的方法 (add new axis,squeeze)
  2. 数据增强的opencv实现 (flip、crop、resize等)
  3. 模型inference结果的图像保存 (opencv和PIL的方法)

之前做了多年的嵌入式开发,深度学习在边缘端部署、应用很好的和嵌入式相结合。
很开心参加了百度的各种深度学习训练营,这是一条深度学习之路啊~

下面贴一段代码:

import paddle
import paddle.fluid as fluid
from paddle.fluid.dygraph import to_variable #TODO
from paddle.fluid.dygraph import Conv2D#TODO
from paddle.fluid.dygraph import Pool2D#TODO
import numpy as np
np.set_printoptions(precision=2)


class BasicModel(fluid.dygraph.Layer):
    # BasicModel contains:
    # 1. pool:   4x4 max pool op, with stride 4
    # 2. conv:   3x3 kernel size, takes RGB image as input and output num_classes channels,
    #            note that the feature map size should be the same
    # 3. upsample: upsample to input size
    #
    # TODOs:
    # 1. The model takes an random input tensor with shape (1, 3, 8, 8)
    # 2. The model outputs a tensor with same HxW size of the input, but C = num_classes
    # 3. Print out the model output in numpy format 

    def __init__(self, num_classes=59):
        super(BasicModel, self).__init__()
        self.pool = Pool2D(pool_size=2, pool_stride=2)
        self.conv = Conv2D(num_channels=3, num_filters=num_classes, filter_size=1)
        #TODO
        #TODO
    def forward(self, inputs):
        #TODO 
        x = self.pool(inputs)
        x = fluid.layers.interpolate(x, out_shape=inputs.shape[2::])
        x = self.conv(x)
     #   x = fluid.layers.interpolate(x, out_shape=(inputs.shape[2], inputs.shape[3]))
        
        #TODO 
        return x

def main():
    place = paddle.fluid.CUDAPlace(0)
    with fluid.dygraph.guard(place):
        model = BasicModel(num_classes=59)
        model.eval()
        input_data = np.random.rand(1, 3, 8, 8).astype(np.float32)# TODO
        print('Input data shape: ', input_data.shape)
        input_data = to_variable(input_data)# TODO
        output_data = model(input_data)# TODO
        output_data = output_data.numpy()# TODO
        print('Output data shape: ', output_data.shape)

if __name__ == "__main__":
    main()

这段代码是动态图的模型搭建。而且该文件可以单独运行测试。print是debug的重要方法之一。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值