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

尚无评论

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

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

通过加权解决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,152人读过本文
阅读全文

使用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 发布于 人工智能 类别下以来已有4,073人读过本文
阅读全文

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

尚无评论

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

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

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

编译安装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,281人读过本文
阅读全文

使用Python在图像上标注汉字

尚无评论

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

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

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

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

将自己的数据集转换成pascal_voc格式

尚无评论

在RCNN、Fast-RCNN、Faster-RCNN等一系列深度学习用于目标检测(Object Detection)的众多开源实现里,基本上都是基于pascal_voc的数据集进行处理的,给出了使用该数据集进行训练和测试的完整代码。

诚然,我们可以基于这些开源项目来进行定制,并在自己的数据集跑起来。但这样需要修改大量代码,稍有不慎可能带来很多注意不到的错误。而从另一个方面入手,如果将我们的数据集按照pascal_voc的格式进行转换,然后进行训练,则会简单地多,只需要修改很少量的代码即可。不过这样一来,我们的任务则集中在了将数据集转换为pascal_voc的格式上。

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

使用TensorFlow Dataset读取数据备忘

尚无评论

在使用TensorFlow构建模型并进行训练时,如何读取数据并将数据恰当地送进模型,是一个首先需要考虑的问题。以往通常所用的方法无外乎以下几种:

1.建立placeholder,然后使用feed_dict将数据feed进placeholder进行使用。使用这种方法十分灵活,可以一下子将所有数据读入内存,然后分batch进行feed;也可以建立一个Python的generator,一个batch一个batch的将数据读入,并将其feed进placeholder。这种方法很直观,用起来也比较方便灵活,但是这种方法的效率较低,难以满足高速计算的需求。

2.使用TensorFlow的QueueRunner,通过一系列的Tensor操作,将磁盘上的数据分批次读入并送入模型进行使用。这种方法效率很高,但因为其牵涉到Tensor操作,不够直观,也不方便调试,所有有时候会显得比较困难。使用这种方法时,常用的一些操作包括tf.TextLineReader,tf.FixedLengthRecordReader以及tf.decode_raw等等。如果需要循环,条件操作,还需要使用TensorFlow的tf.while_loop,tf.case等操作,更是难上加难。

在 2018-01-30 发布于 人工智能 类别下以来已有2,422人读过本文
阅读全文

Visualize the outputs of intermediate layers of a Keras model

尚无评论

训练完成各种CNN的模型之后,为了查看模型的效果以及模型到底能够从原始图像中抽取什么样的特征,有时候我们需要模型的中间输出结果,并将其图示出来进行查看。在TensorFlow中这很简单,直接将中间层的Tensor作为输出,以图像数据通过feed_dict进行输入,然后使用tf.Session将Tensor的结果run出来图示即可。但Keras对模型的输入输出以及训练过程整合的比较严密,耦合度较高,尤其是使用Keras自带的一些经典模型进行fine-tuning时,想要得到其中间层的结果并将其输出并不容易。

下面我们就来看一下,如何取出Keras模型中的某一层输出,并图示出来进行查看。

在 2017-12-29 发布于 人工智能 类别下以来已有1,744人读过本文
阅读全文

从杭州到上海

尚无评论

其实我是在杭州入职半年后开始有离职打算的。彼时,老东家虽事业蒸蒸日上,但我们部门独立成立新公司的计划被否决,董事长和CEO内斗,CTO被逼离职,他私下里和董事长一起意图东山再起,与我们几个博士秘密接触,意欲将我们挖走,而另起炉灶。当时,老公司问题频出,而计划中的新公司也不见动静,我看情况不容乐观,也曾私下里接触了一些公司,试图离开这争斗中的旋涡。无奈实力不济,接触的机会大多半途而止,无奈的我只能坐等机会。

时间来到2016年年底,原先商量好的几个博士中的一个博士被老东家收买,一个博士被新公司收编,4个博士所谓的攻守同盟宣告破裂,我们其余两个博士处境尴尬。但考虑到其间发生的一系列龌龊事,我思虑再三最终决定舍弃新公司,而留在老公司里度日。

在 2017-11-24 发布于 心情日记 类别下以来已有1,600人读过本文
阅读全文