1. 目前所在公司的核心产品,是放疗图像的靶区自动勾画。

  2. 使用深度学习技术,学习放疗样本,能够针对不同的器官,进行放疗靶区的勾画。

  3. 使用CNN搭建FCN/U-Net网络结构,训练模型,使模型获得图像语义分隔的能力。(自动驾驶,无人机落点判定都是属于语义分割范畴)。

FCN模型结构

模型结构如图所示

模型流程

  1. 对输入图片image,重复进行CNN卷积、激活函数和池化等处理,得到pool1,pool2,pool3,pool,poo5,5个池化结果
  2. 将pool5池化结果进行反卷积放大2倍,得到结果A
  3. 将A与pool4相加得到结果B
  4. 将结果B进行反卷积放大2倍,得到结果C
  5. 将结果C与pool3相加得到结果D,
  6. 将结果D经过激活函数处理,得到最终的图像result

模型代码

weight = {'w1sub': tf.Variable(tf.random_normal([8, 8, 1, 8], stddev=0.1)),'w2sub': tf.Variable(tf.random_normal([4, 4, 8, 16], stddev=0.1)),'w3sub': tf.Variable(tf.random_normal([2, 2, 16, 32], stddev=0.1)),'w4sub': tf.Variable(tf.random_normal([2, 2, 32, 64], stddev=0.1)),'w1up': tf.Variable(tf.random_normal([2, 2, 32, 64], stddev=0.1)),'w2up': tf.Variable(tf.random_normal([2, 2, 16, 32], stddev=0.1)),'w3up': tf.Variable(tf.random_normal([2, 2, 8, 16], stddev=0.1)),'w4up': tf.Variable(tf.random_normal([2, 2, 1, 8], stddev=0.1)),
}biases = {'b1sub': tf.Variable(tf.random_normal([8], stddev=0.1)),'b2sub': tf.Variable(tf.random_normal([16], stddev=0.1)),'b3sub': tf.Variable(tf.random_normal([32], stddev=0.1)),'b4sub': tf.Variable(tf.random_normal([64], stddev=0.1)),'b1up': tf.Variable(tf.random_normal([32], stddev=0.1)),'b2up': tf.Variable(tf.random_normal([16], stddev=0.1)),'b3up': tf.Variable(tf.random_normal([8], stddev=0.1)),'b4up': tf.Variable(tf.random_normal([1], stddev=0.1)),
}def ForwardProcess(inputBatch, w, b, num_size, istrain=False):inputBatch_r = tf.reshape(inputBatch, shape=[-1, 400, 400, 1])if istrain:#dropout处理inputBatch_r = tf.nn.dropout(inputBatch_r, keep_prob=0.9)conv1 = tf.nn.conv2d(inputBatch_r, w['w1sub'], strides=[1, 1, 1, 1], padding='SAME')  # 8conv1 = tf.layers.batch_normalization(conv1, training=True)conv1 = tf.nn.relu(tf.nn.bias_add(conv1, b['b1sub']))pool1 = tf.nn.max_pool(conv1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')  # 8print('pool1的形状')print(pool1.get_shape())conv2 = tf.nn.conv2d(pool1, w['w2sub'], strides=[1, 1, 1, 1], padding='SAME')  # 16conv2 = tf.layers.batch_normalization(conv2, training=True)conv2 = tf.nn.relu(tf.nn.bias_add(conv2, b['b2sub']))pool2 = tf.nn.max_pool(conv2, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')print('pool2的形状')print(pool2.get_shape())conv3 = tf.nn.conv2d(pool2, w['w3sub'], strides=[1, 1, 1, 1], padding='SAME')  # 32conv3 = tf.layers.batch_normalization(conv3, training=True)conv3 = tf.nn.relu(tf.nn.bias_add(conv3, b['b3sub']))pool3 = tf.nn.max_pool(conv3, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')print('pool3的形状')print(pool3.get_shape())conv4 = tf.nn.conv2d(pool3, w['w4sub'], strides=[1, 1, 1, 1], padding='SAME')  # 64conv4 = tf.layers.batch_normalization(conv4, training=True)conv4 = tf.nn.relu(tf.nn.bias_add(conv4, b['b4sub']))pool4 = tf.nn.max_pool(conv4, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')print('pool4的形状')print(pool4.get_shape())# 反卷积print('第一次反卷积,输入的形状')print(pool4.get_shape())d_conv1 = tf.nn.conv2d_transpose(value=pool4, filter=w['w1up'], output_shape=[num_size, 50, 50, 32],strides=[1, 2, 2, 1], padding='SAME')d_conv1 = tf.add(d_conv1, pool3)d_conv1 = tf.nn.bias_add(d_conv1, b['b1up'])d_conv1 = tf.layers.batch_normalization(d_conv1, training=True)d_conv1 = tf.nn.relu(d_conv1)print('第二次反卷积,输入的形状')print(d_conv1.get_shape())d_conv2 = tf.nn.conv2d_transpose(value=d_conv1, filter=w['w2up'], output_shape=[num_size, 100, 100, 16],strides=[1, 2, 2, 1], padding='SAME')d_conv2 = tf.add(d_conv2, pool2)d_conv2 = tf.nn.bias_add(d_conv2, b['b2up'])d_conv2 = tf.layers.batch_normalization(d_conv2, training=True)d_conv2 = tf.nn.relu(d_conv2)print('第三次反卷积,输入的形状')print(d_conv2.get_shape())d_conv3 = tf.nn.conv2d_transpose(value=d_conv2, filter=w['w3up'], output_shape=[num_size, 200, 200, 8],strides=[1, 2, 2, 1], padding='SAME')d_conv3 = tf.add(d_conv3, pool1)d_conv3 = tf.nn.bias_add(d_conv3, b['b3up'])d_conv3 = tf.layers.batch_normalization(d_conv3, training=True)d_conv3 = tf.nn.relu(d_conv3)print('第四次反卷积,输入的形状')print(d_conv3.get_shape())d_conv4 = tf.nn.conv2d_transpose(value=d_conv3, filter=w['w4up'], output_shape=[num_size, 400, 400, 1],strides=[1, 2, 2, 1], padding='SAME')# d_conv4 = tf.add(d_conv4, inputBatch_r)d_conv4 = tf.nn.bias_add(d_conv4, b['b4up'])d_conv4 = tf.layers.batch_normalization(d_conv4, training=True)d_conv4 = tf.nn.relu(d_conv4)return d_conv4

未完待续

转载于:https://www.cnblogs.com/panfengde/p/10334375.html

图像语义分割——抠图勾画相关推荐

  1. 图像语义分割的前世今生

    原址:https://www.cnblogs.com/ariel-dreamland/p/8028492.html   1998年以来,人工神经网络识别技术已经引起了广泛的关注,并且应用于图像分割.基 ...

  2. matlab 图像语义分割,笔记︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)...

    图像语义分割的意思就是机器自动分割并识别出图像中的内容,我的理解是抠图- 之前在Faster R-CNN中借用了RPN(region proposal network)选择候选框,但是仅仅是候选框,那 ...

  3. 零基础入门图像语义分割必备概念整理,复制文件内容到Word观看效果更佳

    图像深度:是指存储每个像素所用的位数,也用于量度图像的色彩分辨率.确定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数.它决定了彩色图像中可出现的最多颜色数,或灰度图像中的 ...

  4. Recorder︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)

    图像语义分割的意思就是机器自动分割并识别出图像中的内容,我的理解是抠图- 之前在Faster R-CNN中借用了RPN(region proposal network)选择候选框,但是仅仅是候选框,那 ...

  5. 图像语义分割及神经网络

    感谢原作者的分享,转载出自:https://www.cnblogs.com/ariel-dreamland/p/8028492.html   1998年以来,人工神经网络识别技术已经引起了广泛的关注, ...

  6. (转载)图像语义分割

    图像语义分割的前世今生 </h1><div class="clear"></div><div class="postBody&q ...

  7. 十分钟看懂图像语义分割技术

    转载于:十分钟看懂图像语义分割技术 大多数人接触"语义"都是在和文字相关的领域,或语音识别,期望机器能够识别你发出去的消息或简短的语音,然后给予你适当的反馈和回复.嗯,看到这里你应 ...

  8. 十分钟看懂图像语义分割技术(转载)

    https://www.leiphone.com/news/201705/YbRHBVIjhqVBP0X5.html 大多数人接触 "语义" 都是在和文字相关的领域,或语音识别,期 ...

  9. 深度学习:使用UNet做图像语义分割,训练自己制作的数据集,详细教程

    语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支.与分类任务不同,语义分割需要判断图像每个像素点的类别,进行精确分割.语义分割目前在自动驾驶.自动抠图.医疗影像等 ...

最新文章

  1. 信息流推荐的用户增长机制
  2. 使用svn控制系统的优缺点和注意事项
  3. 用aspnetpager实现datalist分页(绝对的简单实用)
  4. iOS 中KVC、KVO、NSNotification、delegate 总结及区别
  5. 代理类和被代理类的解释及案例
  6. 不属于mysql常量的是_R256是内部“字”继电器WR25的( )号位。_学小易找答案
  7. InterruptedException和中断线程的说明
  8. 【SpringMVC】SpringMVC : 注解 @EnableWebMvc
  9. 如何聊离职原因,向面试官展示自己的忠诚
  10. java-数组排序--插入排序
  11. 计算机英语国家线,2018考研英语二国家线是多少
  12. 蓝软服务器文件监控同步系统,蓝软7000ERP通用操作使用教程
  13. oracle秒级查询,oracle 中查询超过10秒以上的sql语句(性能优化)
  14. 金庸群侠传5 自动化脚本 绝情谷大厅开宝箱按键游戏
  15. python与开源_Python与开源GIS
  16. matlab读取hdf显示,matlab读取hdf
  17. 操作系统内核框架图整理
  18. 怎么注册国外企业电子邮箱地址?有微信企业邮箱登录入口吗?
  19. 全媒体运营师胡耀文教你:产品运营生于痛点,死于增长
  20. active控件读取服务器文件,Delphi下利用ActiveX控件读取PDF文件

热门文章

  1. 运维知识讲解之打印机连接以及电脑局域网共享打印机
  2. 结构体熟练掌握--实现通讯录
  3. OpenCV算法加速(4)官方源码v4.5.5的默认并行和优化加速的编译选项是什么?请重点关注函数cv::getBuildInformation()的返回值
  4. IE去掉input的type=”text”输入内容时出现的X和type=”password”出现的眼睛图标
  5. C++中seekg、seekp失效问题
  6. 该主机cpu类型不支持虚拟化性能计数器,开启模块VPMC的操作失败,未能启动虚拟机。
  7. C++ Style Casts
  8. 学习SQL【1】-搭建SQL的学习环境
  9. UML类图与对应的代码归类总结【软件工程】
  10. 查找企业微信聊天记录,会话存档有多重要