unet实现区域分割

https://github.com/zonghaofan/pig-seg/tree/master/disk_segmentation

网络架构:

# coding:utf-8
import tensorflow as tf
import cv2
import numpy as np
import matplotlib.pyplot as pltimg = cv2.imread('./data/test.png')# cv2.imshow('1.jpg',img)
# cv2.waitKey(0)
img = cv2.resize(img, (1024, 1024))
img = np.array(img).astype(np.float32)
img = img[np.newaxis, ...]
print(img.shape)x_input = tf.placeholder(shape=[None, 1024, 1024, 3], dtype=tf.float32)# x=tf.random_normal(shape=[1,1024,1024,3],dtype=tf.float32)
n_filters = [8, 8]# name=1
def conv2d(x, n_filters, training, name, pool=True, activation=tf.nn.relu):with tf.variable_scope('layer{}'.format(name)):for index, filter in enumerate(n_filters):conv = tf.layers.conv2d(x, filter, (3, 3), strides=1, padding='same', activation=None,name='conv_{}'.format(index + 1))conv = tf.layers.batch_normalization(conv, training=training, name='bn_{}'.format(index + 1))conv = activation(conv, name='relu{}_{}'.format(name, index + 1))if pool is False:return convpool = tf.layers.max_pooling2d(conv, pool_size=(2, 2), strides=2, name='pool_{}'.format(name))return conv, pooldef upsampling_2d(tensor, name, size=(2, 2)):h_, w_, c_ = tensor.get_shape().as_list()[1:]h_multi, w_multi = sizeh = h_multi * h_w = w_multi * w_target = tf.image.resize_nearest_neighbor(tensor, size=(h, w), name='upsample_{}'.format(name))return targetdef upsampling_concat(input_A, input_B, name):upsampling = upsampling_2d(input_A, name=name, size=(2, 2))up_concat = tf.concat([upsampling, input_B], axis=-1, name='up_concat_{}'.format(name))return up_concatdef unet(input):#归一化 -1~1input=(input-127.5)/127.5conv1, pool1 = conv2d(input, [8, 8], training=True, name=1)print(conv1.shape)print(pool1.shape)conv2, pool2 = conv2d(pool1, [16, 16], training=True, name=2)print(conv2.shape)print(pool2.shape)conv3, pool3 = conv2d(pool2, [32, 32], training=True, name=3)print(conv3.shape)print(pool3.shape)conv4, pool4 = conv2d(pool3, [64, 64], training=True, name=4)print(conv4.shape)print(pool4.shape)conv5 = conv2d(pool4, [128, 128], training=True, pool=False, name=5)print(conv5.shape)up6 = upsampling_concat(conv5, conv4, name=6)print('up6', up6.shape)conv6 = conv2d(up6, [64, 64], training=True, pool=False, name=6)print(conv6.shape)up7 = upsampling_concat(conv6, conv3, name=7)print('up7', up7.shape)conv7 = conv2d(up7, [32, 32], training=True, pool=False, name=7)print(conv7.shape)up8 = upsampling_concat(conv7, conv2, name=8)print('up8', up8.shape)conv8 = conv2d(up8, [16, 16], training=True, pool=False, name=8)print(conv8.shape)up9 = upsampling_concat(conv8, conv1, name=9)print('up9', up9.shape)conv9 = conv2d(up9, [8, 8], training=True, pool=False, name=9)print(conv9.shape)final = tf.layers.conv2d(conv9, 1, (1, 1), name='final', activation=tf.nn.sigmoid, padding='same')print('final', final.shape)return finalif __name__ == '__main__':final=unet(x_input)with tf.Session() as sess:sess.run(tf.global_variables_initializer())y_final = sess.run(final, feed_dict={x_input: img})result = y_final[0, ...]print(result.shape)print(result[...,:10])# result=cv2.imread('./2.jpg')# result=cv2.resize(result,(640,640))# print(result)cv2.imshow('1.jpg', result)cv2.waitKey(0)

打印结果:这里打印值有小数,故直接imshow就是输出图,而如果imwrite,查看图片的值全是0,1,轮廓也能看清,只不过不是很清晰。

输入:

输出:截图没有完全

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字图像处理 实验一 图像的基本运算

实验一 图像的基本运算 一、实验目的 (1)掌握点运算和代数运算的算法实现和概念 (2)掌握和几何运算的算法实现和概念 (2)掌握灰度变换和几何变换的基本方法 (3)理解图像灰度直方图的…

MongoDB 语法陷阱(转自51CTO)

1. 哈希对象中key的顺序 比如,你要存储一个简单的文字对象:: > db.books.insert({ title: "Woe from Wit", meta: { author: "A. Griboyedov", year: 1823 } }); 太棒了!现在我们有了一条书籍记录。再比如&#xff0c…

2018世界人工智能蓝皮书:看中国到底有多强!【附下载】| 智东西内参

来源:智东西人工智能是引领未来的战略性高科技,作为新一轮产业变革的核心驱动力,催生新技术、新产品、新产业、新模式,引发经济结构重大变革,深刻改变人类生产生活方式和思维模式,实现社会生产力的整体跃升…

tensorflow(GPU)使用

一,直接指定GPU: tf.ConfigProto一般用在创建session的时候。用来对session进行参数配置 with tf.Session(config tf.ConfigProto(...),...) #tf.ConfigProto()的参数 log_device_placementTrue : 是否打印设备分配日志 allow_soft_placementTrue : 如…

数字图像处理实验二 图像变换

一、实验目的 (1)了解图像变换的意义和手段。 (2)熟悉傅立叶变换的基本性质。 (3)通过实验了解二维频谱的分布特点。 (4)了解余弦变换或Walsh-Hadamard变换 二、实验内容…

Silverlight 入门

还是微软的学习教程好 官方入门示例 官方控件在线示例 转载于:https://www.cnblogs.com/pengyou8696/p/3547869.html

科学家发联合声明:强烈谴责首例免疫艾滋病基因编辑

来源:人民网据人民网报道,来自中国深圳的科学家贺建奎在第二届国际人类基因组编辑峰会召开前一天宣布,一对名为露露和娜娜的基因编辑婴儿于11月在中国健康诞生。这对双胞胎的一个基因经过修改,使她们出生后即能天然抵抗艾滋病。这…

Keras】基于SegNet和U-Net的遥感图像语义分割

from:【Keras】基于SegNet和U-Net的遥感图像语义分割 上两个月参加了个比赛,做的是对遥感高清图像做语义分割,美其名曰“天空之眼”。这两周数据挖掘课期末project我们组选的课题也是遥感图像的语义分割,所以刚好又把前段时间做的成果重新整…

实验四51单片机并口实验

一.实验目的: 1. 了解51单片机I/O口的电气特性和驱动能力。 2. 了解LED电路中加入限流电阻的原因。 3. 掌握定时器原理及编程。 4. 掌握并口程序的编辑、编译、调试和运行。 二.实验设备和器件 1. PC机 2. PROTEUS仿真软件 3. 实验箱 4. ISP下载器 5. 51仿真器…

5G 建设拉动光模块量价齐升

来源:国联证券光模块是光通信的核心部件,它主要完成光电转换和电光转换。行业增长稳定,行业内的头部企业通过不断并购完成上下游的整合,提供一体化的解决方案。国内企业在快速的追赶外资标杆企业,产品逐步往高端方向转…

tensorflow权重初始化

一,用10层神经网络,每一层的参数都是随机正态分布,均值为0,标准差为0.01 #10层神经网络 data tf.constant(np.random.randn(2000, 800).astype(float32)) layer_sizes [800 - 50 * i for i in range(0, 10)] num_layers len(l…

单片机实验报告-片内外RAM的数据转移

一、实验目的: 1.掌握C51编程基础,C51程序结构。 2.掌握C51数据类型、函数设计。 3.掌握C51程序的编辑、编译、调试和运行 二、编程提示 编程将片外8000H单元开始的10字节的内容移至8100H开始的各单元中。8000H单元开始的10字节内容用编程方式赋值。…

【Android基础】短信的发送

//Button的点击事件Overridepublic void onClick(View v) {// 接受者电话号码Uri uri Uri.parse("smsto:12345678");Intent intent new Intent(Intent.ACTION_SENDTO, uri);// 设置短信和内容intent.putExtra("sms_body", "the SMS text");sta…

单片机实验-定时中断

一.实验目的 1.掌握51单片机定时器工作原理。 2.掌握51单片机中断系统工作原理。 3.掌握定时器初始化编程。 4.掌握中断程序的编写和调试。 二.实验设备和器件 1.KEIL软件 2.PROTEUS仿真软件 3.伟福实验箱 三.实验内容 (1)编程实…

tensorflow中batch normalization的用法

转载网址:如果侵权,联系我删除 https://www.cnblogs.com/hrlnw/p/7227447.html https://www.cnblogs.com/eilearn/p/9780696.html https://www.cnblogs.com/stingsl/p/6428694.html 神经网络学习过程本质就是为了学习数据分布,一旦训练数…

2018全球最值得关注的60家半导体公司,7家中国公司新上榜 | 年度榜单

编译 | 张玺 四月来源:机器之能由《EE Times》每年评选全球值得关注的 60 家新创半导体公司排行榜——『Silicon 60』,今年已经迈向第 19 届,今年的关键词仍然是「机器学习」(machine learning),它正以硬件支持的运算形式强势崛起…

c语言,递归翻转一个单链表,c实现单链表

目的&#xff1a;主要是练习c里面单链表的实现&#xff0c;递归思想复习; #include <stdlib.h> #include <stdio.h>typedef struct _Node{//定义单链表的节点int value;struct _Node *next; }Node;Node* link(int len){//新建一个单链表int i0;Node* head (Node*)…

单片机实验报告-串口实验

一.实验目的 1. 掌握 51 单片机串口工作原理。 2. 掌握 51 单片机串口初始化编程。 3. 掌握 51 单片机串口的软硬件编程。 二.实验设备和器件 1.KEIL软件 2.PROTEUS仿真软件 3.伟福实验箱 三&#xff0e;实验内容 &#xff08;1&#xff09;编程实现&#xff1a…

学习率周期性变化

学习率周期性变化&#xff0c;能后解决陷入鞍点的问题&#xff0c;更多的方式请参考https://github.com/bckenstler/CLR base_lr:最低的学习率 max_lr:最高的学习率 step_size&#xff1a;&#xff08;2-8&#xff09;倍的每个epoch的训练次数。 scale_fn(x)&#xff1a;自…

清华发布《人工智能AI芯片研究报告》,一文读懂人才技术趋势

来源&#xff1a;Future智能摘要&#xff1a;大数据产业的爆炸性增长下&#xff0c;AI 芯片作为人工智能时代的技术核心之一&#xff0c;决定了平台的基础架构和发展生态。 近日&#xff0c;清华大学推出了《 人工智能芯片研究报告 》&#xff0c;全面讲解人工智能芯片&#xf…