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

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

尚无评论

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

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

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

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

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

尚无评论

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

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

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

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

尚无评论

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

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

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

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

尚无评论

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

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

Contribute to TensorFlow Successfully

尚无评论

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

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

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

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

安装Ubuntu搭建TensorFlow框架笔记

尚无评论

既已转行,自然需要全心投入深度学习的探索和研究之中。深度学习的学习和实现离不开一些经典的深度学习框架,从Caffe到Theano,从MXnet到TensorFlow,优秀的框架层出不穷,但我想基于Google目前在深度学习领域的地位,以及Google推出TensorFlow之后受到的关注和影响,TensorFlow都不容忽视。又加之最近TensorFlow在迭代更新之后,已经没有了明显的短板和弱点,而我自己对深度学习的入门和研究也日渐需要一个平台框架来实现一些东西,思虑再三,决定开始选定并搭建TensorFlow环境了。

搭建TensorFlow特别容易,要么是Linux下一行命令,要么是Windows下使用docker,但很遗憾,我在Windows下安装docker出了问题,而刚好,公司给我们几个博士一人配了一台很不错的新电脑,以便进行深度学习的研究,既然电脑是全新的,而考虑到深度学习的研发通常都是在Ubuntu上进行,既然绕不开,就果断装一个,索性折腾一番吧。

但是自此开始,我进了坑。

在 2016-05-31 发布于 人工智能 类别下以来已有3,815人读过本文
阅读全文