前言

毕业设计对于每个学生而言都是一种十分痛苦的渡劫仪式,尤其是当你拿到的是完全陌生的毕业设计的时候,内心无疑有各种王尼玛从心中飘过。我在这里聊聊我在完成毕设的过程中得到的一些经验教训。因为我的毕业设计主题是卷积神经网络,所以在这里我的话题也仅仅局限于卷积神经网络这方面的内容。

准备篇

先介绍我的毕业设计,我的毕业设计简而言之是完成一个实现图像分类任务的卷积神经网络的项目,其中包括训练数量和用于识别(而且后期还“被”加了批量识别图片的需求)两个部分。一开始看到题目的时候内心还是懵逼的,卷积神经网络是啥?它怎么能完成模式识别的?这个时候我做了一件最蠢的事情就立马去买了一本机器学习的教材(黑色封面,页数挺多的那种),然后我勉强看了绪论就把它束之高阁了,当然我不是在嫌弃这本书质量如何,只是当时我是带着一种功利的目的去看书,我会有闲情去区分有监督、无监督、半监督有什么区分么?确实在完成毕设的时候有些基础理论是有必要去补充的,然而光顾着埋头打地基而忘了往上添砖加瓦,不管你的基础打得有多牢固,最终评审首先要看的是,你到底要没有达成毕设的基本要求。
    于是我在打理论基础这块主要是通过百度“入门”“速成”之类的关键词,虽然一直鄙视“入门”、“速成”这种字眼,就像好多人一直鄙视谭浩强一样,但是效果上来看这对小白至少能起到启发的作用。至少知道了机器学习里有各种各样的神经网络,深度学习只是其中的分支;还知道了感受野、权值共享大致是什么东西;虽其中许多言论真假难辨,但从多家之言里拼凑出了整个毕业设计的轮廓(管你真的假的,我又没记住)。然后随着知识的积累可以去阅读有关文献,当然你和我一样耐心不足并且时间不充裕的话还是以期刊为主,最好这篇期刊包含着一些基础知识和应用的文字(会有的,有的文章在介绍他的创新点之前全程在水)。
    在我差不多了解卷积神经网络整个运作的流程之后就要开始做毕设了,我个人比较推荐去借助一些第三方框架去做,有些人觉得这是一种作弊行为但是实际上这么做并不算作弊,就像你用编译器编程一样不算作弊一样,通过第三方框架我们可以专注更多的经历在网络结构的优化。而且你实际去用第三方框架的时候你会发现,虽然有一定的文档说明,但看不看得懂是个问题(全英文),能不能运行得起来(环境配置、如何调用指令),能运行得出怎样的识别率都算是个问题——这怎么算作弊?作弊哪有这么难的?/(ㄒoㄒ)/~~

方案篇

虽然一直说计划赶不上变化,但是在正式进入编程阶段之前你必须要为下一个步骤,我结合我的经验觉得在做方案的时候考虑到接下来的内容:

  • 硬件环境。毕竟卷积神经网络乃至整个机器学习的训练都要经过大量的运算,其中CPU运算、显卡运算能力,甚至硬盘的读写速度都要接受不小的考验,其中我认为显卡是最重要的一环,因为现在深度学习的运算主要依赖的是显卡,以轻量级的MNIST训练为例,用GTX1080训练几千世代用一两分钟就结束了,而CPU模式就需要几个小时,建议你向你的导师申请一台搭配顶级显卡的电脑,就算申请不到也要确认你的电脑显卡可以足够用(什么叫做足够我不敢保证,但是值得注意的是你要用显卡进行训练的话,还需要用到足够的显存否则程序会禁止运行,512M的就算了吧,随随便便就超了)。PS:如果硬件环境不能满足的话真的要联系导师换题目了。
  • 软件环境。如果你接受我前文的建议使用第三方的话,你将会遇到一系列的麻烦(虽然这比从0开始好得多得多)。我姑且列举几点:
    • 操作系统:用win还是用linux?linux里面还分Ubuntu、Debian等等分支呢。
    • 第三方工具:用谁的工具?TensorFlow?Caffe?
    • 环境搭建:环境搭建起来容不容易,最好能一键安装的那种(然而一般并不能)

这些问题要回答起来其实很简单:网络上用的人多、教程多、安装操作简单就可以了。如果有学长学姐帮你搭好了,不要犹豫,就用他们的,因为搭建环境可能会出现各种各样的蜜汁问题,记得那时候环境的问题前后总共耗费了我两个月左右的时间(想想内心都是崩溃的0 0)。我当时选择的是使用Caffe在Ubuntu下进行操作,用Ubuntu是因为Ubuntu里依赖项的修改相对win比较容易,网络教程也是Ubuntu的居多,用Caffe是因为他支持MATLAB这个我正好掌握的语言(虽然Python才是现在机器学习的流行语言,可是我恰好不会(⊙﹏⊙)b)。

编程篇

要学会一门语言,我们要先学会hello world;要学会深度学习的工具,要先学会怎么把样例运行成功。在网上或者第三方工具里都会有许许多多的样例。试着把他们其中之一运行成功。过程中你可能会看到各种各样的报错,这可能是你文件路径的问题,也可能是你之前环境搭建的问题。
    当你学会使用样例的时候并不代表你真的掌握了这个工具,这个时候你应该会很好奇里面的数据是怎么读取的,里面的神经网络是怎么定义的,好了,现在是时候把你的数据都放进去了训练了,而这时候,这个样例就成为了你未来毕设程序的框架。而放进去的时候你要面对的问题大概如下:

  • 数据格式:可能之前样例的数据是数据库的模式,而你的数据是图片或者其他形式,这个时候你可能要考虑把你的数据转换成样例所用的格式,当然一款流行的第三方深度学习框架支持多种的数据格式,你也可以试着修改一下网络的输入层让它支持你的数据,当然这里面的时间成本要自行评估好。我的数据是图片的,样例是数据库的,然后caffe正好自带图片转数据库的工具,我用终端生成标记文本之后调用一下就好了。
  • 数据规格:可能之前样例是225x225的图片,而你的数据虽然是图片但是70x70甚至每一个图片都是不一样的。你需要把你的数据统一规格,如果是图片就统一长宽(而且一般图片长宽都是相等的),记得我当初win里面用一款轻量级的看图软件自带的批量转换大小的功能处理好了。
  • 网络设置:现在还在初级阶段,首要的问题还是兼容问题,所以我们尽量不去修改网络的隐含层,要关注的是输入层(部分教程也叫做数据层,其实也就是网络开始进来的第一个层了),还有一个地方就是最后全连接层,切记,最后一个全连接层输出有几个,就代表的你的网络是几分类的网络。
  • 指令执行问题:在执行程序的时候你可能会用到终端(类似win的命令行),为了减少下次在此执行时你可能会出现的操作失误,建议你在终端上的所有指令都保存在一个脚本上,以方面下次使用。
  • 数据分配:一般的,你的所有数据会分成几个类别,训练的时候应不应该把每个类别的数据数量设置成相同我个人不置可否,但是,最起码的,你好歹应该验证的时候设置成一致吧?记得那个时候我论文写到接近末尾写数据结果的时候,我突然发现总体识别正确率是90%以上,但是4个类别有两个类别是30%以下,这个时候我先是黑人问号脸,然后忽然发现这两个类别的数据量正好远远少于其他类别的数据量。这个时候离截止日期都没几天了我又不在学校,同时还在学校的学弟学妹同学们一个比一个萌(sha),甚至这个时候系统又崩溃了(没错,“又”),那几天我远程呼叫真的是受了不少惊吓。

数据验证篇

当你的训练程序开始完美运行,或许你这个时候应该松一口气了,去喝茶回来看着训练程序的运行结果显示:accuracy :0.9,perfect!!!!但这个时候你最好再用你的识别程序去把整个验证集在识别一遍。这个时候你会发现出来的结果可能会和0.9有所出入。
    问题出现在哪了?其实问题就出在accuracy是怎么计算的,一般的,卷积神经网络是一边训练的一边验证的,而验证是如何进行的呢?可能每个工具都有所不同,但是每次验证操作的数据量是可以设定的,一般而言推荐设定是大于或等于验证集,这也是为什么accuracy会跟真实的accuracy有所区别的原因。当然我在论坛里还收到了另一种说法是不同语言对于精度的计算存在差异。(参考链接:http://caffecn.cn/?/question/1234 ,嗯,我是那个问问题的)

总结

按理说,应该还有一个“网络改进篇”的,因为用样例的神经网络可能对我们的数据可能识别率较低,这个时候我个人推荐的解决方案是要么换个数据(还记得前文我那倒霉的30%识别率么,我就是急中生智换了一个更多数据量的数据才得以解决)或者根据识别率的走向趋势,如果是欠拟合的情况下可以增加训练世代(iteration)来提升网络泛化能力。当然你或许想搭建一个自己的网络结构来进行改善,但是如何构建网络层次这个问题其实还是个国际性难题,作为才看了“速成”教程的我们,恐怕只有依赖“玄学”才会提升识别率了。
    祝各位道友渡劫成功!

如何完成卷积神经网络有关的毕业设计相关推荐

  1. 【毕业设计】基于卷积神经网络的植物花卉识别系统

    系统演示视频: [毕业设计]基于卷积神经网络的植物花卉分类系统 本项目使用到的技术包括:卷积神经网络(CNN)算法,Django框架搭建网站,CNN模型调优. 项目包括四部分: 1.数据集 2.模型训 ...

  2. 毕业设计 - 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

    文章目录 1 简介 2 传统机器视觉的手势检测 2.1 轮廓检测法 2.2 算法结果 2.3 整体代码实现 2.3.1 算法流程 3 深度学习方法做手势识别 3.1 经典的卷积神经网络 3.2 YOL ...

  3. 【毕业设计】基于卷积神经网络的中草药识别系统

    系统演示视频: [毕业设计]基于卷积神经网络算法的中草药识别系统演示 本项目采用卷积神经网络算法训练了中草药识别模型.使用到的技术包括:卷积神经网络(CNN)算法,Django框架搭建网站,CNN模型 ...

  4. 毕业设计So Easy:卷积神经网络实现中药材识别系统APP

    目录 1.项目概述 2.开发环境 3.项目架构 4.项目实现 5.项目效果演示 很多计算机专业大学生经常和我交流:毕业设计没思路.不会做.论文不会写.太难了...... 针对这些问题,决定分享一些软. ...

  5. 毕业设计 - 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]

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

  6. 毕业设计 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

    文章目录 0 前言 1 背景 2 算法原理 2.1 动物识别方法概况 2.2 常用的网络模型 2.2.1 B-CNN 2.2.2 SSD 3 SSD动物目标检测流程 4 实现效果 5 部分相关代码 5 ...

  7. 【毕业设计】深度学习动物识别系统 - python 卷积神经网络 机器视觉

    文章目录 0 前言 1 背景 2 算法原理 2.1 动物识别方法概况 2.2 常用的网络模型 2.2.1 B-CNN 2.2.2 SSD 3 SSD动物目标检测流程 4 实现效果 5 部分相关代码 5 ...

  8. 毕业设计 - 基于人工智能的图像分类算法研究与实现 - 深度学习卷积神经网络图像分类

    文章目录 0 简介 1 常用的分类网络介绍 1.1 CNN 1.2 VGG 1.3 GoogleNet 2 图像分类部分代码实现 2.1 环境依赖 2.2 需要导入的包 2.3 参数设置(路径,图像尺 ...

  9. 【毕业设计】深度学习花卉识别系统 - 卷积神经网络 机器视觉

    文章目录 0 前言 1 项目背景 2 花卉识别的基本原理 3 算法实现 3.1 预处理 3.2 特征提取和选择 3.3 分类器设计和决策 3.4 卷积神经网络基本原理 4 算法实现 4.1 花卉图像数 ...

  10. 基于卷积神经网络的数字手势识别APP(安卓) 毕业设计 附完整代码

    项目简介 这是一个基于卷积神经网络的数字手势识别 APP(安卓),主要功能为:通过手机摄像头识别做出的数字手势,能够识别数字 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 对应的手 ...

最新文章

  1. python 文件操作 os.path.join(path, *paths) 路径合成(追加)
  2. C/Cpp / #define
  3. eclipse中插件修改svn用户名密码
  4. 遍历HashMap的最佳方法
  5. import pyart时报错 ValueError: numpy.ndarray has the wrong size, try recompiling.
  6. 苹果AirPods Pro将提供8种配色选择 或成最贵真无线耳机
  7. java中JSON转含泛型对象
  8. 神仙文献管理软件Mendeley 保姆级教程
  9. OEIS A098928 数表扩充
  10. OpenWRT设置SmartDNS+ADGuardHome
  11. Vuforia入门之简单图片识别案例(一)
  12. 人民币转换美金的c语言代码大全,人民币和美元大写格式在线工具,美元美金数字金额转换大写,外币大写金额...
  13. 开发一个多用户商城系统多少钱
  14. linux 限速命令,Linux路由器限速设置进程
  15. Android基础知识梳理
  16. 关于IT信息化的一些感想
  17. windows squid 使用安装做二级代理
  18. JSP之四大作用域(pageContext,request,session,application)
  19. vmware workstation安装uos系统(超祥细)
  20. HighChart插件小札

热门文章

  1. 松翰单片机之M2ASM创建新工程
  2. python为什么会出现无响应怎么办,Python多处理中无响应进程的终止
  3. 施一公:优秀的科学家如何成长?
  4. 解决:删除文件时“文件正在使用”不能完成
  5. dnf 台服服务器pvf修改器,求教怎么用pvf修改器自制装备
  6. 基因组选择技术在农业动物育种中的应用
  7. 硬件设计28之RS422、RS485
  8. [日推荐]『识花草』做个辛勤的小园丁
  9. fatal: couldn‘t find remote ref develop-XXXX fatal: the remote end hung up unexpectedly
  10. 中移动入侵防御设备集采,总限价1.6亿;爱立信斩获95个5G商用合同