• 论文链接:Medical Image BoVW-pLSA
  • 文章大意:其实和BoVW-MI差不多,也都是在原来的词库上选择一些更具代表性的词汇。只不过将原来mutual information更换成了这里的PLSA方法,PLSA详细介绍请看下文。
  • PLSA(probabilistic Latent Semantic Analysis)

    • 首先我们先明白一下单词的意思:

      • word:视觉单词,代表的是通过BoVW方法得到的视觉单词
      • document:文档,在这里代表的就是一个样本sample
      • concept:主题,比如说我们的我们的单词包括{内存、CPU、历史、悬疑}等词汇的时候,我们的主题可能就包括{计算机、小说}等。注意,在这里主题的个数是由我们指定得到的。
    • 明白了上述的概念后,我们怎么来挑选我们想要的单词呢?我们可以计算每个主题和每个单词,每个主题和每个文档的紧密程度,知道了这些我们就按照一定的比例挑选出来我们想要的单词了吧。但是怎么计算这个紧密程度呢?pLSA给出了如下的算法:


      • 其中wj代表的是第j个单词,zk代表的是第k个主题、di代表的是第i个文档.
      • n(di, wj)代表的是第i个文档中,单词j的个数
      • n(di)代表的是第i文档中所有单词的个数
      • 所以我们就可以得到单词和主题的紧密程度矩阵P(w|z)
    • 知道了上诉算法,那我们怎么计算呢?
      • 首先我们先给P(w|z) 和 P(z|d) 初始化为随机数
      • 然后先后更新P(z|d,w) P(w|z) P(z|d)
      • 一直迭代直到P(z|d,w)的新旧之差小于一个阈值,也就是所谓的收敛。
    • 计算矩阵的代码如下所示:
      def calu_two_matrix(image_hist, k=100):
      shape = list(np.shape(image_hist))
      p_w_z = np.zeros([shape[1], k],dtype=np.float32
      )
      p_z_d = np.zeros([k, shape[0]],dtype=np.float32
      )
      p_z_d_w = np.zeros([k, shape[0], shape[1]],dtype=np.float32
      )
      p_z_d = np.random.random([k, shape[0]])
      for zi in range(k):normalize(p_z_d[zi])
      p_w_z = np.random.random([shape[1], k])
      for wi in range(shape[1]):normalize(p_w_z[wi])
      while True:# update p(z|d,w)p_z_d_w_new = np.zeros([k, shape[0], shape[1]],dtype=np.float32)for zi in range(k):for di in range(shape[0]):for wi in range(shape[1]):sum = 0.0for zii in range(k):sum += (p_w_z[wi, zii] + p_z_d[zii, di])temp = p_w_z[wi, zi] * p_z_d[zi, di] * 1.0temp /= (sum * 1.0)p_z_d_w_new[zi, di, wi] = tempp_w_z_new = np.zeros([shape[1], k],dtype=np.float32)p_z_d_new = np.zeros([k, shape[0]],dtype=np.float32)# update p(w|z)sum_p_w_z_byk = {}for zi in range(k):sum_p_w_z = 0.0for wii in range(shape[1]):for dii in range(shape[0]):sum_p_w_z += (image_hist[dii, wii] * p_z_d_w_new[zi, dii, wii])sum_p_w_z_byk[zi] = sum_p_w_zfor wi in range(shape[1]):for zi in range(k):sum_up = 0.0for dii in range(shape[0]):sum_up += (image_hist[dii, wi] * p_z_d_w_new[zi, dii, wi])sum_down = sum_p_w_z_byk[zi]temp = (sum_up * 1.0) / (sum_down * 1.0)p_w_z_new[wi, zi] = temp# update p(z,d)nd = []for dii in range(shape[0]):temp = 0.0for wii in range(shape[1]):temp += image_hist[dii, wii]nd.append(temp)for zi in range(k):for di in range(shape[0]):sum_up = 0.0for wii in range(shape[1]):sum_up += (image_hist[di, wii] * p_z_d_w_new[zi, di, wii])temp = (sum_up * 1.0) / (nd[di])p_z_d_new[zi, di] = tempdiff = math.fabs(np.sum(p_z_d_w_new - p_z_d_w))p_z_d_w = p_z_d_w_newp_w_z = p_w_z_newp_z_d = p_z_d_newprint 'diff is %g' % diff
  • 此外,再给一个完整的项目代码为例,代码地址:GitHub BoVW-pLSA

  • 详情阅读README文档

论文阅读-BoVW-pLSA相关推荐

  1. 论文阅读工具ReadPaper

    对于搞科研的同学们来说,看论文是要经历的第一关,尤其是要读好多篇论文的时候,更是着实令人头大. 这不,最近无意中发现了个在线论文阅读网站:readpaper.com,号称「论文阅读笔记神器,硕博科研学 ...

  2. 多目标跟踪:CVPR2019论文阅读

    多目标跟踪:CVPR2019论文阅读 Robust Multi-Modality Multi-Object Tracking 论文链接:https://arxiv.org/abs/1909.03850 ...

  3. 快速人体姿态估计:CVPR2019论文阅读

    快速人体姿态估计:CVPR2019论文阅读 Fast Human Pose Estimation 论文链接: http://openaccess.thecvf.com/content_CVPR_201 ...

  4. Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读

    Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...

  5. 深度学习点云语义分割:CVPR2019论文阅读

    深度学习点云语义分割:CVPR2019论文阅读 Point Cloud Oversegmentation with Graph-Structured Deep Metric Learning 摘要 本 ...

  6. 3D目标检测论文阅读多角度解析

    3D目标检测论文阅读多角度解析 一.前言 CNN(convolutional neural network)在目标检测中大放异彩,R-CNN系列,YOLO,SSD各类优秀的方法层出不穷在2D图像的目标 ...

  7. 3D目标检测论文阅读摘要

    3D目标检测论文阅读摘要 2D Object Detection 的研究已经非常成熟了,代表作品有RPN系列的FasterRCNN,One Shot系列的YOLOv1-YOLOv3,这里推荐一个2D ...

  8. 目标检测——Faster R-CNN论文阅读

    论文阅读--Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks 文章目录 论文阅读--Faste ...

  9. 【独家】深度学习论文阅读路线图

    如果你是深度学习领域的一名新手,可能会遇到的第一个问题是"应该从哪篇论文开始读起呢?" 这里给出了深度学习论文阅读路线图! 路线图按照下面四个准则构建而成: 从提纲到细节 从经典到 ...

  10. 道路检测 | SNE-RoadSeg论文阅读

    道路检测 | SNE-RoadSeg: Incorporating Surface Normal Information into Semantic Segmentation for Accurate ...

最新文章

  1. MySQL从5.7.32升级到8.0.22
  2. linux备份sqlserver数据库,Linux sqlServer数据库还原办法
  3. 整数判重、大整数Hash
  4. Java解压上传zip或rar文件,并解压遍历文件中的html的路径
  5. 从决策树到xgboost(一)
  6. 飞鸽传书 获得磁盘的C#描述信息
  7. 八段LED数码管段代码编码表
  8. 我该用 Java 12 还是坚持 Java 11?
  9. 蓝桥杯 ALGO-107 算法训练 9-7链表数据求和操作
  10. 前端可视化开发-编辑器
  11. 温习SQL server
  12. mysql数据库备份sql语句_mysql用户管理、常用sql语句及数据库的备份
  13. 通信服务器的作用是什么意思,通讯管理机是什么 通讯管理机的作用功能及特点...
  14. css焦点图片裁切技术
  15. windows快速生成ssh key
  16. bluez——mgmt分析
  17. 60 个让程序员崩溃的瞬间,哈哈哈哈哈哈哈哈哈
  18. 奶茶妹妹章泽天加入微软Bing团队
  19. 厦门明发家乐福免费班车行车线路和时间表
  20. 老嘤学习笔记——python函数

热门文章

  1. 从零开始部署一套脱单盲盒
  2. C语言scanf()函数使用的注意事项
  3. awm怎么弄 rust_AWM绝地求生第八章(加更一)
  4. mysql 增加列和注释_MySql给表添加列和注释
  5. 失信被执行人查询API开发文档
  6. java 400_Java项目报400错误的原因与解决方法
  7. 基于matlab的几何失真矫正,使用imatest软件帮助校正畸变
  8. 解决word文档编辑过程中出现空白页无法删除的问题
  9. 刀塔OMG塔防1.26b单机版使用方法
  10. Android:短信 筛选/批量删除 程序(支持Android 2.3~4.4)