=============

这是一个图片处理APP,里面使用了Opencv、深度学习、MVVM、Databinding、RxJava、各种设计模式等等,在后面一段时间我会写一系列博客来一步步剖析这个项目,希望大家能多多关注。

效果

==

缺点

==
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】

  • 1.没有组件化

  • 2.没有混淆

  • 3.有些地方抽象不够

深度学习和神经网络的基本概念

==============

什么是深度学习

=======

  • 1.AI–》机器学习–》深度学习,前面三个概念是递进的,简单来说深度学习是机器学习的一种,深度学习就是利用机器来学习很多数据,而机器学习又是实现AI的一种方式。

  • 2.在深度学习中有两个重要的东西:数据和神经网络。在深度学习中有两个重要的过程:训练和测试 1.数据和网络: 1.数据:我们想象一个简单的图片分类场景,我们有10000张已经被人工分好类的图片,每张图片都有一个正确的分类,比如猫、狗等等。 2.网络:这里的神经网络我们可以想象成一个函数,我们的输入是一张图片,输出则是这张图片在每个分类下面的分数。也就是一个分数的数组。 2.训练和测试: 1.训练:在训练的时候我们会将图片集中的图片一次次的输入到神经网络里面去,然后会一次次得到该图片在每个分类下的分数,每当我们得出了一个分数数组之后我们可以计算当前的神经网络损失值(当前的网络准确率越高损失值越低),有了损失值,我们的目标就是降低损失值。了解导数的同学都知道我们可以通过求导损失值函数得到让损失值降低的梯度方向,然后反馈到神经网络中。就这样一次次的循环,让损失值降到最低。 2.测试:当我们将神经网络训练到了一个最佳的状态,我们就可以将我们需要进行分类的图片,输入到神经网络中,得到最终神经网络对该图片分类的结果。 3.总结:深度学习到底是怎么学习的呢?我们可以看见我们的训练数据是经过人的处理的,那么深度学习的过程就是将人的处理过程固化到我们的神经网络中,最终让神经网络来代替人工处理的过程。 4.上面只是介绍深度学习的基本流程,如果要更深入地了解可以看这篇博客

什么是神经网络

=======

我们在上一节中说到了,最终人处理数据的过程通过我们的训练被固化到神经网络中去了。下面我会简单介绍一下前面说到的神经网络

  • 1.还是在简单的图片分类场景: 1.我们假设图片为x的大小为100 * 100(我们把图片平铺成为1 * 10000的矩阵),图片一共有10个分类。 2.那么一个两层的神经网络就是这样的:y = x * w1 * w2(w1为 10000 * a的矩阵,w2为a * 10的矩阵),这里最终y就是一张图片在各个分类下的分数,式子中的乘法是矩阵乘法。 3.当然层数更多的神经网络就是有更多的w,我们w1 和 w2中的a可以自己定义。

  • 2.解释一下y = x * w1 * w2: 1.研究表明我们在看x这张图片的时候,我们会先看图片的轮廓,这里我们大脑中看图片轮廓的神经元就相当于w1 2.看完轮廓之后我们会对这个图片中的东西有基本感觉,判断这张图片属于哪些类别,这里的类别就是x * w1的结果 3.2中的结果会被输入大脑中下一层神经元,这里的神经元就相当于w2,经过w2之后我们就会输出一个结果这里就是y。 4.当然人的神经元层数远比上面说到的多

  • 3.训练y = x * w1 * w2的过程以人做对比就相当于:我们有一堆图片给一个啥也不懂的小孩看,刚开始他肯定输出的结果都是错的,但是我们只要每次纠正一下他的错误,那么他脑袋中的神经元(w)就会不断的修改然后识别的准确率不断提高。

Android中的Tensorflow

===================

这一节将会介绍如何在Android中使用已经训练好的神经网络

开始

==

本篇文章中,我只会以一个demo为例子进行讲解,前面提到的MyPhotoShop项目会另起一个专题进行剖析。

  • 1.demo地址:github地址(https://github.com/whenSunSet/TensorflowPureDemo)

  • 2.引入Tensorflow:compile ‘org.tensorflow:tensorflow-android:+’

Tensorflow中的概念

==============

  • 1.图(graph):我们在前面讲解了一个神经网络是什么样子的,在Tensorflow中神经网络的每个神经元w都属于图中的一个节点,神经网络全部的节点就构成了一个有向无环图也就是Tensorflow的图的一部分。当然Tensorflow的图中除了神经网络的节点外,还有其他辅助的操作:比如图片解码、图片编码、图片预处理操作等等。我们举一个图的例子就是:图片a–》解码图片产生b–》处理b产生图片数据矩阵c(1 * 10000)–》c与w1(10000 * x)矩阵相乘产生d(1 * x)–》d与w2(x * 10)矩阵相乘产生e(1 * 10)–》选出e中值最大的分类,神经网络就判断图片a是这种分类的图片。

  • 2.节点(node):每个节点都是图的一部分,每个节点有:入参、出参、具体操作函数(比如矩阵乘法)、可能有神经元值w。

  • 3.TensorFlowInferenceInterface:一个Tensorflow中训练的上下文,在不同语言中名字不同。内部包含了一个训练中需要的全部实例。

demo代码讲解

========

我们本次demo中只涉及Tensorflow在Android中神经网络模型的使用,并不涉及训练的过程。原因有两个:1.移动端并不适合训练神经网络 2.Tensorflow for Android没有训练的API。

  • 1.我这次使用的神经网络是已经训练好的快速风格迁移网络

  • 2.对于模型我们的输入是:一张图片转化为的float类型的张量,大小为(1 * 800 * 600 * 3),输入节点的名字是padsss:0,这里的名字是在训练过程中定义的。

android中的深度学习——快速风格迁移相关推荐

  1. 毕设 深度学习图像风格迁移

    文章目录 0 简介 1 VGG网络 2 风格迁移 3 内容损失 4 风格损失 5 主代码实现 6 迁移模型实现 7 效果展示 8 最后 0 简介 今天学长向大家介绍一个机器视觉项目 基于深度学习卷积神 ...

  2. 吴恩达深度学习之风格迁移

    个人的学习笔记,一直更新中,如有错误,评论区见,冲冲冲! 笔记来源:吴恩达深度学习 4.6 什么是神经风格转换?_哔哩哔哩_bilibili 1  输入输出 风格迁移输入:内容(Content)图像C ...

  3. 【毕业设计】深度学习图像风格迁移算法研究与实现 - python 卷积神经网络

    文章目录 0 简介 1 VGG网络 2 风格迁移 3 内容损失 4 风格损失 5 主代码实现 6 迁移模型实现 7 效果展示 8 最后 0 简介

  4. 毕设 深度学习图像风格迁移 - opencv python

    文章目录 0 前言 1 VGG网络 2 风格迁移 3 内容损失 4 风格损失 5 主代码实现 6 迁移模型实现 7 效果展示 8 最后 0 前言

  5. 深度学习项目二: 图像的风格迁移和图像的快速风格迁移 (含数据和所需源码)

    图像风格迁移是指,将一幅内容图的内容,和一幅或多幅风格图的风格融合在一起,从而生成一些有意思的图片 一:传统的图像风格迁移 为了让我们生成的迁移图在风格上与风格图片尽可能相似,在内容上尽可能与内容图相 ...

  6. 度学习实践:如何使用Tensorflow实现快速风格迁移?

    一.风格迁移简介 风格迁移(Style Transfer)是深度学习众多应用中非常有趣的一种,如图,我们可以使用这种方法把一张图片的风格"迁移"到另一张图片上: 然而,原始的风格迁 ...

  7. 图像风格迁移与快速风格迁移的对比(感知损失)

    最近一段时间要写数字图像处理的文献综述,<深度学习在图像风格迁移中的原理与应用综述>.只能感慨自己一时选题不审,导致期末火葬场啊-- 这个问题我纠结了一天,看了N多篇文献(全是英文的-), ...

  8. Python深度学习之神经风格迁移

    Deep Learning with Python 这篇文章是我学习<Deep Learning with Python>(第二版,François Chollet 著) 时写的系列笔记之 ...

  9. 图像识别中的深度学习【香港中文大学王晓刚】

    深度学习发展历史 深度学习是近十年来人工智能领域取得的重要突破.它在语音识别.自然语言处理.计算机视觉.图像与视频分析.多媒体等诸多领域的应用取得了巨大成功.现有的深度学习模型属于神经网络.神经网络的 ...

最新文章

  1. Jvm 系列(七):Jvm 调优-工具篇
  2. 利用霍夫变换做直线检测的原理及OpenCV代码实现
  3. 事件模型、事件流(冒泡与捕获)、事件代理
  4. 线索二叉树原理及前序、中序线索化(Java版)
  5. .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  6. AI又被彩虹吹?!新浪财经:应届博士算法毕业,80万年薪被疯抢
  7. 线性结构 —— 前缀和
  8. axureR9 显示与隐藏 - 踩坑篇
  9. 【C#】带等待窗体的BackgroundWorker
  10. gitbook 配置
  11. 打印计算机错误,打印机测试错误 原因administrator解决办法
  12. 路由器的介绍和基本原理
  13. 查看变量内存的python内置函数是_这68个Python内置函数,建议你吃透
  14. 世界上程序员最好的学习法:费曼学习法
  15. jenkins发送allure测试报告
  16. 并行数据转换为串行数据的转换器
  17. 无向有权图的建立(邻接链表法) 广度优先搜索 深度优先搜素
  18. 基于Layui自定义内容轮播插件
  19. 解密编程——程序诞生的基本工序
  20. 【效率神器】电脑上实现语音输入文字

热门文章

  1. RAR5格式不同词典大小下压缩率的简单测试
  2. PHP--获取客户端手机型号
  3. 台式计算机配置清单4500,台式主机配置清单_要一个台式电脑主机清单(价格控制在4500左右最好)...
  4. 物料主数据经典案例 | 让每一个量具都发挥价值
  5. 如何修改chrome里的html,chrome css修改不更新怎么解决?
  6. iOS 6 Passbook 入门 1/2 | Ray Wenderlich
  7. 蔡高厅高等数学14-极限的存在准则
  8. POJ 3322 Bloxorz(算竞进阶习题)
  9. 智能投影:坚果、当贝前攻后防
  10. canopy算法流程_python实现Canopy算法