paddle 图像分割学习总结 |
您所在的位置:网站首页 › paddle是啥 › paddle 图像分割学习总结 |
百度飞桨AI Studio社区 paddle 图像分割学习总结 paddle 图像分割学习总结 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于N 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、图像分割综述二、FCNU-NetPSPNetDeepLab 前言课程链接:https://aistudio.baidu.com/aistudio/course/introduce/1767 提示:以下是本篇文章正文内容 一、图像分割综述根据 不同的任务和数据类型: -图像分割(image segmentation)(像素级分类) 图像语义分割(image semantic segmentation)图像实例分割(image instance segmentation)图像全景分割(image panoptic segmentation)视频目标分割(video object segmentation)视频实例分割(video instance segmentation)示例: 语义分割:给每个pixel分类实例分割:给每个筐里的object分mask全景分割:背景pixel分类+框里maskVOS :通常会给定目标的mask,求特定目标的maskVIS :根据目标检测的框,求目标的mask![]() 分割网络的评价指标:mIoU 和 mAcc mean intersection-over-unio 分割每一类别的交并比mean accuracy 分对的像素 / 所有像素 二、FCN网络结构: 代码如下(示例): import numpy as np import paddle.fluid as fluid from paddle.fluid.dygraph import to_variable from paddle.fluid.dygraph import Conv2D from paddle.fluid.dygraph import Conv2DTranspose from paddle.fluid.dygraph import Dropout from paddle.fluid.dygraph import BatchNorm from paddle.fluid.dygraph import Pool2D from paddle.fluid.dygraph import Linear # from vgg import VGG16BN class VGG(fluid.dygraph.Layer): def __init__(self, layers=16, use_bn=False, num_classes=1000): super(VGG, self).__init__() self.layers = layers self.use_bn = use_bn supported_layers = [16, 19] assert layers in supported_layers if layers == 16: depth = [2, 2, 3, 3, 3] elif layers == 19: depth = [2, 2, 4, 4, 4] num_channels = [3, 64, 128, 256, 512] num_filters = [64, 128, 256, 512, 512] self.layer1 = fluid.dygraph.Sequential(*self.make_layer(num_channels[0], num_filters[0], depth[0], use_bn, name='layer1')) self.layer2 = fluid.dygraph.Sequential(*self.make_layer(num_channels[1], num_filters[1], depth[1], use_bn, name='layer2')) self.layer3 = fluid.dygraph.Sequential(*self.make_layer(num_channels[2], num_filters[2], depth[2], use_bn, name='layer3')) self.layer4 = fluid.dygraph.Sequential(*self.make_layer(num_channels[3], num_filters[3], depth[3], use_bn, name='layer4')) self.layer5 = fluid.dygraph.Sequential(*self.make_layer(num_channels[4], num_filters[4], depth[4], use_bn, name='layer5')) self.classifier = fluid.dygraph.Sequential( Linear(input_dim=512 * 7 * 7, output_dim=4096, act='relu'), Dropout(), Linear(input_dim=4096, output_dim=4096, act='relu'), Dropout(), Linear(input_dim=4096, output_dim=num_classes)) self.out_dim = 512 * 7 * 7 def forward(self, inputs): x = self.layer1(inputs) x = fluid.layers.pool2d(x, pool_size=2, pool_stride=2) x = self.layer2(x) x = fluid.layers.pool2d(x, pool_size=2, pool_stride=2) x = self.layer3(x) x = fluid.layers.pool2d(x, pool_size=2, pool_stride=2) x = self.layer4(x) x = fluid.layers.pool2d(x, pool_size=2, pool_stride=2) x = self.layer5(x) x = fluid.layers.pool2d(x, pool_size=2, pool_stride=2) x = fluid.layers.adaptive_pool2d(x, pool_size=(7,7), pool_type='avg') x = fluid.layers.reshape(x, shape=[-1, self.out_dim]) x = self.classifier(x) return x class FCN8s(fluid.dygraph.Layer): # TODO: create fcn8s model def __init__(self, num_classes=59): super(FCN8s, self).__init__() self.num_classes = num_classes self.layer1 = fluid.dygraph.Sequential( Conv2D(num_channels=3, num_filters=64, filter_size=3, padding=1), BatchNorm(num_channels=64, act='relu'), Conv2D(num_channels=64, num_filters=64, filter_size=3, padding=1), BatchNorm(num_channels=64, act='relu'), Pool2D(pool_size=2, pool_stride=2, pool_type='max') ) # 1/ 2 self.layer2 = fluid.dygraph.Sequential( Conv2D(num_channels=64, num_filters=128, filter_size=3, padding=1), BatchNorm(num_channels=128, act='relu'), Conv2D(num_channels=128, num_filters=128, filter_size=3, padding=1), BatchNorm(num_channels=128, act='relu'), Pool2D(pool_size=2, pool_stride=2, pool_type='max') ) # 1/ 4 self.layer3 = fluid.dygraph.Sequential( Conv2D(num_channels=128, num_filters=256, filter_size=3, padding=1), BatchNorm(num_channels=256, act='relu'), Conv2D(num_channels=256, num_filters=256, filter_size=3, padding=1), BatchNorm(num_channels=256, act='relu'), Conv2D(num_channels=256, num_filters=256, filter_size=3, padding=1), BatchNorm(num_channels=256, act='relu'), Pool2D(pool_size=2, pool_stride=2, pool_type='max') ) # 1 / 8 self.layer4 = fluid.dygraph.Sequential( Conv2D(num_channels=256, num_filters=512, filter_size=3, padding=1), BatchNorm(num_channels=512, act='relu'), Conv2D(num_channels=512, num_filters=512, filter_size=3, padding=1), BatchNorm(num_channels=512, act='relu'), Conv2D(num_channels=512, num_filters=512, filter_size=3, padding=1), BatchNorm(num_channels=512, act='relu'), Pool2D(pool_size=2, pool_stride=2, pool_type='max') ) # 1 / 16 self.layer5 = fluid.dygraph.Sequential( Conv2D(num_channels=512, num_filters=512, filter_size=3, padding=1), BatchNorm(num_channels=512, act='relu'), Conv2D(num_channels=512, num_filters=512, filter_size=3, padding=1), BatchNorm(num_channels=512, act='relu'), Conv2D(num_channels=512, num_filters=512, filter_size=3, padding=1), BatchNorm(num_channels=512, act='relu'), Pool2D(pool_size=2, pool_stride=2, pool_type='max') ) # 1 / 32 self.conv67 = fluid.dygraph.Sequential( Conv2D(num_channels=512, num_filters=512, filter_size=1), BatchNorm(num_channels=512, act='relu'), Conv2D(num_channels=512, num_filters=512, filter_size=1), BatchNorm(num_channels=512, act='relu') ) self.conv = Conv2D(num_channels=512, num_filters=self.num_classes, filter_size=1) def forward(self, inputs): x = self.layer1(inputs) x = self.layer2(x) x = self.layer3(x) pool3 = x # 1/8 256 x = self.layer4(x) pool4 = x # 1/16 512 x = self.layer5(x) x = self.conv67(x) x = fluid.layers.interpolate(x, pool4.shape[2:]) x = fluid.layers.elementwise_add(pool4, x) x = fluid.layers.interpolate(x, pool3.shape[2:]) pool3 = Conv2D(num_channels= 256, num_filters=512, filter_size=1, act='relu')(pool3) x = fluid.layers.elementwise_add(pool3, x) x = fluid.layers.interpolate(x, inputs.shape[2:]) x = self.conv(x) return x def main(): with fluid.dygraph.guard(): x_data = np.random.rand(2, 3, 512, 512).astype(np.float32) x = to_variable(x_data) model = FCN8s(num_classes=59) model.eval() pred = model(x) print(pred.shape) if __name__ == '__main__': main() U-Net网络结构: 采用编码器和解码器的U形结构输入输出大小不变skip结合方式:concatenation![]() Paper Title: U-net:Convolutional networks for biomedical image segmentaion psp模块 aspp模块升级版 ![]() 学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>> 更多推荐 · Job for mysqld.service failed because the control process exited with error · ML之FE:基于单个csv文件数据集(自动切分为两个dataframe表)利用featuretools工具实现自动特征生成/特征衍生 · 高速路面隐患及抛洒物监控识别Job for mysqld.service failed because the control process exited with error 错误报错信息:Job for mysqld.service failed because the control process exited with error解决按照提示输入命令systemctl status mysqld.service 或者 journalctl -xn但是显示的 信息并不能提供服务启动失败的真正原因进一步查看日志:vi /var/log/mysqld.log原因分析: ![]() ML之FE:基于单个csv文件数据集(自动切分为两个dataframe表)利用featuretools工具实现自动特征生成/特征衍生 ML之FE:基于单个csv文件数据集(自动切分为两个dataframe表)利用featuretools工具实现自动特征生成/特征衍生目录基于单个csv文件数据集(自动切分为两个dataframe表)利用featuretools工具实现自动特征生成/特征衍生设计思路1、定义数据集2、DFS设计输出结果feature_matrix_cats_df.csvfeature_matrix_nums.csv基 ![]() ![]() 高速路面隐患及抛洒物监控识别 ![]() 扫一扫分享内容 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |