U-Net

主要参考资料:Unet的网站论文

U-Net最早用作生物图像的分割,后来在目标检测、图像转换,以及Tone Mapping ,Reverse Tone Mapping很多地方都有应用。它的一个特点是早期的卷积层结果和最后几层的结果采用级联的形式作为新的神经网络层。我觉得它的过程很类似图像金字塔和图像重建的过程,前面的下采样,提取出信息,后面进行重建,区别在于这里不是像拉普拉斯金字塔重建那样将图像复原,这里则是生成了具有“新特性”的图像。之所以叫它U-Net,是因为他看起来像个U形,如果考虑中间层次的级联,更像一把琴。

U-Net

从图中可以看出,U-Net主要由Conv+ReLu,maxpool,up-conv,conv 1x1 几个部分构成,那么我们首先在tensorflow里面将这几个部分函数化。

  • conv+ReLU
def conv_relu_layer(net,numfilters,name):
    network = tf.layers.conv2d(net,
                     activation=tf.nn.relu,
                     filters= numfilters,
                     kernel_size=(3,3),
                     padding='Valid',
                     name= "{}_conv_relu".format(name))
    return network
  • maxpool
def maxpool(net,name):
    network = tf.layers.max_pooling2d(net,
                    pool_size= (2,2),
                    strides = (2,2),
                    padding = 'valid',
                    name = "{}_maxpool".format(name))
    return network
  • up_conv
def up_conv(net,numfilters,name):
    network = tf.layers.conv2d_transpose(net,
                    filters = numfilters,
                    kernel_size= (2,2),
                    strides= (2,2),
                    padding= 'valid',
                    activation= tf.nn.relu,
                    name = "{}_up_conv".format(name))
    return network
  • copy_crop
def copy_crop(skip_connect,net):
    skip_connect_shape = skip_connect.get_shape()
    net_shape = net.get_shape()
    print(net_shape[1])
    size = [-1,net_shape[1].value,net_shape[2].value,-1]
    skip_connect_crop = tf.slice(skip_connect,[0,0,0,0],size)
    concat = tf.concat([skip_connect_crop,net],axis=3)
    return concat
  • conv1x1
def conv1x1(net,numfilters,name):
    return tf.layers.conv2d(net,filters=numfilters,strides=(1,1),kernel_size=(1,1),name = "{}_conv1x1".format(name),padding='SAME')
#define input data
input  = tf.placeholder(dtype=tf.float32,shape = (64,572,572,3))


#define downsample path
network = conv_relu_layer(input,numfilters=64,name='lev1_layer1')
skip_con1 = conv_relu_layer(network,numfilters=64,name='lev1_layer2')
network = maxpool(skip_con1,'lev2_layer1')
network = conv_relu_layer(network,128,'lev2_layer2')
skip_con2 = conv_relu_layer(network,128,'lev2_layer3')
network = maxpool(skip_con2,'lev3_layer1')
network = conv_relu_layer(network,256,'lev3_layer1')
skip_con3 = conv_relu_layer(network,256,'lev3_layer2')
network = maxpool(skip_con3,'lev4_layer1')
network = conv_relu_layer(network,512,'lev4_layer2')
skip_con4 = conv_relu_layer(network,512,'lev4_layer3')
network = maxpool(skip_con4,'lev5_layer1')
network = conv_relu_layer(network,1024,'lev5_layer2')
network = conv_relu_layer(network,1024,'lev5_layer3')

#define upsample path
network = up_conv(network,512,'lev6_layer1')
network = copy_crop(skip_con4,network)
network = conv_relu_layer(network,numfilters=512,name='lev6_layer2')
network = conv_relu_layer(network,numfilters=512,name='lev6_layer3')

network = up_conv(network,256,name='lev7_layer1')
network = copy_crop(skip_con3,network)
network = conv_relu_layer(network,256,name='lev7_layer2')
network = conv_relu_layer(network,256,'lev7_layer3')


network = up_conv(network,128,name='lev8_layer1')
network = copy_crop(skip_con2,network)
network = conv_relu_layer(network,128,name='lev8_layer2')
network = conv_relu_layer(network,128,'lev8_layer3')


network = up_conv(network,64,name='lev9_layer1')
network = copy_crop(skip_con1,network)
network = conv_relu_layer(network,64,name='lev9_layer2')
network = conv_relu_layer(network,64,name='lev9_layer3')
network = conv1x1(network,2,name='lev9_layer4')

利用tensorboard可以得到如下的网络架构图。


U-net
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容