在TensorFlow里把Image Resize到固定尺寸同时保持宽高比

尚无评论

使用TensorFlow读入一幅图片后,有时候我们需要将图片的尺寸进行一些修正,比如AlexNet所做的crop操作,或者某些网络需要固定的输入而将图片resize到固定的大小,等等。如果是针对类似numpy array这样的内容进行这些操作,可能大家都能手到擒来,但在TensorFlow里进行这样的操作需要一些tensor操作,这些操作有些反人类,而且调试不易。所以,本文我们就对这些东西进行一些总结,以便备忘,并方便后来者查阅。

在 2018-06-27 发布于 人工智能 类别下以来已有802人读过本文
阅读全文

通过加权解决Detectron训练object detection模型时的类间不平衡问题

尚无评论

使用深度学习解决分类问题时,类间不平衡是一个常见的问题,我们也有很多常用的方法去解决这一问题。比如,对类别少的样本进行augment,或者重采样;对类别多的样本进行降采样;根据不同类别的样本数目对损失函数进行加权;或者简单粗暴地对较少的样本在数据集内进行复制;等等。

不过这些方法中,考虑到数据对深度学习的重要性,一般不会使用对数据进行降采样的方法;而augment、重采样以及复制数据,都需要对数据进行直接操作,也并不如修改损失函数进行加权的方法简单优雅。这种对损失函数进行加权的方法如下:

Loss = class_of_less_samples_loss * weights + class_of_more_samples_loss

不过,这种方法虽然简单优雅,对分类问题进行处理也简单方便,但如果是目标检测问题,则可能需要考虑更多东西;如果我们使用的是像Detectron这样包装严密的框架,处理起来可能难上加难。本文,我们就以Detectron里的Faster-RCNN来详细描述一下这一问题,以期提供一些经验参考。

在 2018-05-04 发布于 人工智能 类别下以来已有1,827人读过本文
阅读全文

使用TensorFlow训练综合FPN和Faster-RCNN的目标检测模型

尚无评论

Faster-RCNN已经推出几年了,尽管其后有相当多另辟蹊径的方法,比如SSD和YOLO,等等,但目前其仍是目标检测领域精度最优的模型之一。而最近推出的FPN模型,更是融合神经网络中不同层之间的特征,对目标检测的大小物体兼顾,从而达到了最好的检测结果。比如,COCO目标检测的Leaderboard前几名目前无不是基于FPN进行的各种改进。

我想着将FPN与Faster-RCNN结合使用,GitHub上目前一共有3个类似的Repositories:

FPN_TensorflowFastFPNFPN

我将它们分别clone了下来,并试着调试使用,最后发现最好用的是FPN_Tensorflow,而其他两个,在调试和使用中,要么碰到各种问题,提issue未获解决;要么虽然跑通了,但无法测试模型的效果,也没有评估模型mAP的程序。

在 2018-03-18 发布于 人工智能 类别下以来已有5,481人读过本文
阅读全文

以Detectron用自己的数据集训练目标检测模型

尚无评论

前一段时间Facebook开源了其用于目标检测、识别和分割的框架——Detectron,该框架携带了这一领域里的经典和最新算法,诸如Faster-RCNN、RetinaNet、Mask-RCNN,等等。这绝对是造福这一领域从业者和研究者的事情,当然,也成了这一领域绕不开的东西了。

Detectron自带了可以基于Pascal VOC以及COCO数据集的模型训练方法。不过Detectron十分易用,即使训练自己的数据集,操作起来也十分简单方便。本文对此进行一下简单介绍和总结。

在 2018-03-10 发布于 人工智能 类别下以来已有5,876人读过本文
阅读全文

编译安装py-faster-rcnn踩坑记

尚无评论

因为之前一直用TensorFlow,所以在做目标检测用Faster-RCNN时,使用的一直是GitHub上的基于TensorFlow的Faster-RCNN的Repository,改来改去,进行的各种操作。但那么几个Repositories大同小异,基本上都是基于RBG大神的py-faster-rcnn做的。因此,溯本追源,尽管其是基于caffe做出来的,但如果不好好研究一下py-faster-rcnn这个Repository的话,也似乎有点舍本逐末了。

可caffe的坑实在太多,这也是大家现在普遍都在转新的框架的原因之一吧;我一直讳谈、讳用caffe相关的东西,也大体上有这样一个原因。

果不其然,安装调试py-faster-rcnn时,就碰到了许多关于caffe的坑;当然,也有一些py-faster-rcnn自身的坑,不过多是因为该项目年久失修,解决起来并不算难。

在 2018-02-13 发布于 人工智能 类别下以来已有1,675人读过本文
阅读全文

使用Python在图像上标注汉字

尚无评论

如果我们的classes是汉字,在使用Faster-RCNN检测完成后,需要将其标注到图片上查看效果时,可能会面临一些问题。一是Python2的编码问题比较混乱,可能带来错误;第二个是Python2的默认字体不支持中文,即使打印到图片上,也可能显示的是乱码。

因此,在将汉字classes打印到图片上的过程中,需要进行一些特殊的处理。我们在这里进行一下记录以便备忘。

在Python里,对图片进行处理时,我们通常使用Matplotlib或PIL,因此,这里我们也对这两个方法分别加以介绍。

在 2018-02-10 发布于 人工智能 类别下以来已有1,556人读过本文
阅读全文

使用python将mask绘制到对应的图像上

尚无评论

在使用深度学习等方法处理计算机视觉问题而对图像进行处理的过程中,不可避免地要处理原始图像及其相应的mask。比如将mask绘制到原始图像上,将mask的轮廓绘制到原始图像上,提取mask的轮廓,或者已知mask的轮廓而将mask填充,等等。

尽管这些问题都不是复杂的问题,但使用频率比较高,而每一次对其进行处理时都会浪费时间甚至分心,而耽误真正的任务的执行。因此,本文就将在处理这些问题中的经验进行一下总结,同时也为以后的使用备忘。

当然,因为我的经验主要还是在医学图像的处理上,所以这里就以医学图像为例来进行处理。

在 2017-10-13 发布于 人工智能 类别下以来已有3,876人读过本文
阅读全文

可视化mhd文件格式的DICOM图像序列

尚无评论

因为DICOM图像通常是一个序列,普通的dcm格式的图像序列可以直接使用DICOM图像查看软件打开进行查看;但mhd格式的3D图像却无法方便地查看。但为了研究方便,可视化mhd图像文件是绕不开的一项任务。

具体来说,在Python下可视化图像可以选择使用matplotlib,也可以用OpenCV将其保存查看,都非常方便。不过有些细节问题则需要特别注意。下面对这些进行一下简单记录,以防遗忘。

在 2017-05-25 发布于 人工智能 类别下以来已有7,638人读过本文
阅读全文

Python下使用SimpleITK处理DICOM文件备忘

尚无评论

随着最近几大肺部图像处理相关的竞赛的推出,如LUNA16Kaggle Data Science Bowl,AI领域的科研人员对肺部CT图像变得越来越熟悉,尤其是DICOM序列,以及这些竞赛官方所提供的mhd数据格式。

ITK是一个功能很强大的医学图像处理公开库,搭配VTK用以显示图像,可以实现几乎所有医学图像处理的功能需要。ITK通常以C++包进行提供,当然也可以自己编译为Python包,不过编译过程比较繁琐耗时,而且很容易踩坑。但ITK官方进行的Python封装SimpleITK,则直接可以拿来使用;虽然有部分ITK的功能没有包含,但已基本够用了。我们在处理医学图像时,使用的基本都是SimpleITK。

本文就简单总结一下我们在处理这些图像时的经验,以便备忘,并为后来者参考。

在 2017-05-24 发布于 人工智能 类别下以来已有14,596人读过本文
阅读全文