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

尚无评论

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

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

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

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

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

尚无评论

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

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

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

使用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,380人读过本文
阅读全文

用TensorFlow训练神经网络解决Fizz Buzz问题

尚无评论

在西方国家,Fizz Buzz是一个经典的游戏,经常用来帮助孩子们锻炼学习除法。其从1开始数数,遇到能被3整除的,将数字替换为fizz,遇到能被5整除的,将其替换为buzz,而遇到能同时被3和5整除的数字,则将其替换为fizzbuzz,对其余数字,则保持不变将其直接输出。

当然,这是一个很简单的问题,尤其是编码实现,原本不需要动用TensorFlow这样的牛刀。而本篇博客的来源却是有个牛人在Google面试的时候,面试官出了这个问题给他,他独辟蹊径尝试用TensorFlow训练模型对问题进行了解决。考虑到使用TensorFlow来解决这个问题时,无需外部数据(直接通过程序生成训练数据和测试数据),可以将所有的焦点集中到TensorFlow的使用上,因此,这个问题是一个很好的锻炼TensorFlow的机会,所以我也尝试着用TensorFlow来写一下。

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

用TensorFlow写一个简单网络实现异或(XOR)

尚无评论

最近读到一个网友的博客,记录他在一次面试时,碰到面试官要求他在白板上用TensorFlow写一个简单的网络实现异或(XOR)功能。这个本身并不难,单层感知器不能解决异或问题是学习神经网络中的一个常识,而简单的两层神经网络却能将其轻易解决。但这个问题的难处在于,我们接触TensorFlow通常直接拿来写CNN,或者其他的深度学习相关的网络了,而实现这种简单网络,基本上从未做过;更何况,要求在白板上写出来,如果想bug free,并不是容易的事儿啊。

下面,我们就来简单写一下吧。其实,无论复杂还是简单,用TensorFlow写一个网络无非这样几个部分:

在 2017-09-20 发布于 人工智能 类别下以来已有2,849人读过本文
阅读全文

TensorFlow保存和恢复模型的方法总结

尚无评论

使用TensorFlow训练模型的过程中,需要适时对模型进行保存,以及对保存的模型进行restore,以方便后续对模型进行处理。比如进行测试,或者部署;比如拿别的模型进行fine-tune,等等。当然,直接的保存和restore比较简单,无需多言,但是保存和restore中还牵涉到其他问题,以及针对各种需求的各种参数等,可能不便一下都记好。因此,有必要对此进行一个总结。本文就是对使用TensorFlow保存和restore模型的相关内容进行一下总结,以便备忘。

在 2017-09-15 发布于 人工智能 类别下以来已有8,362人读过本文
阅读全文

Contribute to TensorFlow Successfully

尚无评论

我是去年工作后开始接触TensorFlow的,彼时,人工智能大潮刚刚启幕,Caffe正当其时;然而,Google推出了TensorFlow。依据其时相关行业的研究者以及社区的强烈反响,和很多人一样,我认为这会是一个影响未来的东西,而我若想进入这一行业,TensorFlow不可错过。

但对于当时的我,学习TensorFlow又谈何容易?系统需要Linux,使用最多的是Ubuntu,但我对其一无所知;使用TensorFlow,最匹配的语言是Python,但我对其最多只是知道个名字;了解TensorFlow的应用自然需要对机器学习、深度学习比较熟悉,可我当时不过仅仅看过寥寥几篇相关论文;而我们用TensorFlow,最终是在应用在图像处理上,但我对图像处理的理解尚停留在PS上。

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

Ubuntu上安装TensorFlow脚本备忘

尚无评论

#!/bin/bash

# uninstall amazon
# uninstall libreOffice

sudo apt-get update

sudo add-apt-repository ppa:hzwhuang/ss-qt5
sudo apt-get update
sudo apt-get install shadowsocks-qt5

在 2016-10-06 发布于 人工智能 类别下以来已有2,406人读过本文
阅读全文