zoukankan      html  css  js  c++  java
  • 深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目

    作者简介:akshay pai,数据科学工程师,热爱研究机器学习问题。Source Dexter网站创办人。

    TensorFlow是Google的开源深度学习库,你可以使用这个框架以及Python编程语言,构建大量基于机器学习的应用程序。而且还有很多人把TensorFlow构建的应用程序或者其他框架,开源发布到GitHub上。

    这次跟大家分享一些GitHub上令人惊奇的TensorFlow项目,你可以直接在你的应用中使用,或者根据自身所需进一步予以改进。

    TensorFlow简介

    如果你已经知道TensorFlow是什么,以及它是如何工作的,建议直接跳到下一节。如果你对使用Python学习TensorFlow感兴趣,网上也有相关的教程可以参考。

    这一节内容比较傲适合初学者。如前所述,TensorFlow是一个深度学习库,使用这一框架,可以用来构建和测试深度神经网络。

    深度学习让我们能够以极高的准确性构建复杂的应用程序。图像、视频、文本、音频等领域的问题,都可以通过深度学习解决。TensorFlow可以用于实现前述所有应用。

    2015年11月9日,Google正式发布并开源TensorFlow,目前官方正式版本为TensorFlow 1.2。下面这段视频,是当年TensorFlow刚发布时,Google发布的一个官方介绍短片,Jeff Dean等出镜讲述。

    TensorFlow很快成为GitHub上用户最多的深度学习框架。这个库之所以如此流行,是因为开发人员可以轻松的用其来搭建、测试和部署机器学习应用。

    TensorFlow使用数据流图,上面是一个TensorFlow的示意图。我们不用关心这张图具体代表什么,但你需要知道,其中的椭圆和正方形代表节点,节点就是一些数学函数,你可以将节点分组形成各种数学计算,并得到输出。

    箭头代表流动到各个节点的数据。所以TensorFlow也被成为数据流库。

    OK,简介到此,下面分享四个我非常喜欢的TensorFlow GitHub项目。

    项目一:Neural Style

    这是最酷的TensorFlow GitHub项目之一。神经风格是将一张照片的风格迁移到另一张照片上的过程,同时保留相关的特张。简单的来说,通过这个项目,你可以使用TensorFlow创建自己的Prisma应用程序。

    如上图所示,把梵高画作的风格,迁移到一张狮子的照片上,就得到一个星空风格的狮子照片,这就是所谓的风格迁移。下面再展示一组这个项目的风格迁移,能把这张狮子的照片,变成哪些非常有趣的效果。

    这个项目在风格迁移的同时,还能对图像进行语义分割。进而实现对内容的前景、背景进行不同的风格迁移处理。这个过程如下图所示:

    另外这个算法还能适用于视频处理。

    上述图片处理使用的软硬件如下:

    CPU: Intel Core i7-6800K@3.4GHz×12

    GPU: NVIDIA GeForce GTX 1080/PCIe/SSE2

    OS: Linux Ubuntu 16.04.1 LTS 64-bit

    CUDA: 8.0

    python: 2.7.12

    tensorflow: 0.10.0rc

    opencv: 2.4.9.1

    GitHub地址如下:

    https://github.com/cysmith/neural-style-tf

    项目二:Mozilla Deep Speech

    这个GitHub项目使用TensorFlow将语音转换为文本。语音转文本是一个热门的机器学习领域,然而各地的人们有着不同的口音,这也是一个难以解决的问题。不过仍然可以通过深度学习实现非常不错的准确性。

    其实这个项目,是一个基于百度DeepSpeech架构的TensorFlow实现。换句话说,这个项目是百度的内核,Google的外貌。

    百度的相关论文地址在此:

    https://arxiv.org/abs/1412.5567

    DeepSpeech是吴恩达带领百度团队研发出的成果,最早发布于2014年底。今年初,百度基于DeepSpeech2,开发出一款名为SwiftScribe的应用(swiftscribe.ai),可以把语音文件更为快速、便捷的转换为文字。目前只限于英文。

    回到这个项目。

    所需软件环境如下:

    Git Large File Storage

    TensorFlow 1.0 or 1.1

    SciPy

    PyXDG

    python_speech_features (nb: deprecated)

    python sox

    pandas

    DeepSpeech native client libraries

    如果你有至少8GB显存的英伟达GPU,强烈建议安装支持GPU的TensorFlow,因为使用GPU的训练比CPU快得多。

    GitHub地址如下:

    https://github.com/mozilla/DeepSpeech

    项目三:句子分类

    句子分类就是识别句子类型的过程。例如,对于“食物非常糟糕”这个句子,你可能希望将其分类为正面句子或负面句子,这也被称为情绪分析。这个问题的难点在于:句子结构带来的复杂性。

    利用卷积神经网络,我们可以尝试构建一个强大的文本分类器。

    这里介绍的项目,是Yoon Kim论文《Convolutional Neural Networks for Sentence Classification(使用卷积神经网络进行句子分类)》的简单实现。这个论文的地址如下:

    https://arxiv.org/abs/1408.5882

    通过一个简单的CNN卷积神经网络,只进行很少的超参数调整和静态矢量,就可以得到出色的句子分类结果。

    所需软件环境如下:

    Python 3

    Tensorflow > 0.12

    Numpy

    GitHub地址如下:

    https://github.com/dennybritz/cnn-text-classification-tf

    项目四:图像分类/物体识别

    图像分类,也就是训练系统识别猫猫狗狗,或者车道、海滩、天际线等场景。计算机视觉是一个范围巨大的领域,从面部识别到情感识别,甚至可以进行视觉气体泄漏检测。虽然实现流程各异,但底层系统是相通的。

    所以作者创建了一个TensorFlow GitHub库,其中包括两个相互关联的部分。第一部分:能够识别1000个对象的TensorFlow图像分类器。第二部分:创建并训练一个全新的图像分类器。

    我们先来看看第一部分。

    Google的TensorFlow图像识别系统是目前最准确的图像分类软件。所谓图像识别,就是对图片中的内容进行识别,然而这并非对任意图片都能识别。

    只有被训练过的对象,系统才能识别。例如,我们用三个类型训练分类器:猫、狗和牛。三个分类器只能识别相应类别中的一个。如果给出一张骆驼的图片会怎样?图片仍会通过一个分类器,但是置信率会非常的低。

    如何快速创建一个TensorFlow图像分类器?只需要简单的三步。当然前提是你已经装好了TensorFlow,而且懂编程、会用Python。

    第一步:下载

    下载预训练的模型、图片和脚本。使用如下命令即可。

    git clone https://github.com/akshaypai/tfClassifiercd tfClassifier

    第二步:运行脚本找到最佳预测

    给定一个图片,运行脚本来进行分类。默认情况下,会显示最佳预测。

    Python classifier.py --image_file file_path_to_image

    为了获得top n分类,可以使用如下参数。

    Python classifier.py --image_file file_path_to_image --num_top_predictions number_of_top_results

    示例:比方我们给出这样一张图片。

    python classifier.py --image_file ~/Pictures/fruit.jpgpomegranate (score = 0.98216)

    分类器表示:这是石榴,准确率98%。

    第三步:运行脚本获得top n识别分类

    现在我们尝试给出一个具有更多属性的图像,如下图的房子。

    python classifier.py --image_file ~/Pictures/house.jpg --num_top_predictions 5picket fence, paling (score = 0.95750)worm fence, snake fence, snake-rail fence, Virginia fence (score = 0.03615)beacon, lighthouse, beacon light, pharos (score = 0.00018)boathouse (score = 0.00013)patio, terrace (score = 0.00007)

    从上面的结果可以看出,分类器以95%的可能性预测图片中有一个栅栏,另外分类器还发现了其他围栏、庭院、露台等。

    到此为止,你已经学到如何设置TensorFlow图像识别系统。虽然,这个系统被限制在预训练模型的几个分类器之间。

    那么我们接下来看看第二部分,如何增加一些新的分类器。

    也是三个步骤。

    第一步:下载预训练模型以及所需脚本

    我已经把全部所需的文件整合进一个git仓库里。使用下面的命令可以下载。

    git clone https://github.com/akshaypai/tfClassifiercd tfClassifier

    第二步:设置图像文件夹

    这个步骤用于设置文件夹结构,以便数据流图可以简单地拾取分类。假设,你想重新训练五种新的花朵分类器:玫瑰、郁金香、蒲公英、五月花和万寿菊,那么需要如下的三个步骤来创建相应的文件夹结构:

    1、为每种花型创建一个文件夹,文件夹的名称就是类型的名称

    2、将花的所有图像添加到各自的文件夹中,所有的玫瑰放入玫瑰花文件夹

    3、将所有的文件夹,添加到一个父文件夹中,可以命名为:花

    然后我们就得到如下的结构:

    ~/flowers~/flowers/roses/img1.jpg~/flowers/roses/img2.jpg...~/flowers/tulips/tulips_img1.jpg~/flowers/tulips/tulips_img2.jpg~/flowers/tulips/tulips_img3.jpg...

    这样,文件夹结构已经OK了。

    第三步:运行预训练脚本

    使用如下命令运行脚本。

    python retrain.py --model_dir ./inception --image_dir ~/flowers --output_graph ./output --how_many_training_steps 500

    部分命令行参数:

    -model_dir这个参数给出了预训练模型的位置。

    -image_dir在步骤二中创建的文件夹路径

    -output_graph存储新训练图的位置

    -how_many_training_steps这代表要执行的迭代次数,默认为4000

    好了,以上就是如何重新训练一个TensorFlow Inception模型。一旦你有了模型,就能开始用来进行分类处理。

    结论

    我希望你们也能体会到上述这些项目的精彩之处。学习一件事最好的方法就是动手去做。如果你还有更值得推荐的TensorFlow GitHub项目,可以留言给我们,让更多的人看到。今天就先到这里吧。休息,休息一下~

    原文地址:http://www.techweb.com.cn/news/2017-07-31/2566452.shtml

  • 相关阅读:
    软件工程第一次作业
    邮件服务器的搭建
    将博客搬至CSDN
    古典密码加密解密之多表代换
    Nginx + Tomcat 负载均衡配置详解
    openstack i版搭建教程
    IIS、apache、tomcat服务器虚拟主机配置
    SMTP邮件发送命令
    hadoop集群安装
    信息管理系统(java)
  • 原文地址:https://www.cnblogs.com/huaxingtianxia/p/8151208.html
Copyright © 2011-2022 走看看