酝酿学习AI、Python和Github的想法已有半年,陆续买了一些书,真正开始动手有一个月了。万事开头难,一个多月真正花到学习本身的时间少得可怜,尽管已经尽力争取,但是由于工作、家庭和年龄的因素,使这个开头更显艰难。

每次学习完都想写写心得,一直没有动笔,今天月底了,Mark一下吧。主要是把一个月以来从零学习机器学习(ML)、Python过程中遇到的主要问题、安装使用软件的问题和解决方法做一个简要的总结,为下一步的学习做一个计划,也为其他和我情况类似的新手朋友提供一些参考,少走些弯路。

首先说一下我的学习目标,以Python和OpenCV作为主要软件工具,参考当前成熟的ML算法和TensorFlow框架,实现基于机器学习/深度学习的视频目标识别算法,并利用PC、摄像机搭建硬件环境,将算法工程化。

研究生期间做抗遮挡视频目标跟踪,毕业后在工作中做图像增强,从15年开始,基本每年都发表一篇论文,跟踪相关领域的论文,这样在图像处理方面有了一些积累,在研究问题的过程中也找到了一些乐趣,但是一直使用Matlab作为仿真工具,研究也只是停留在仿真层面。近几年AI进入高速发展时期,ML是AI的子集,DL是ML的子集,DL引入CNN、RNN等神经网络方法并加深加宽其隐藏层后,对图像目标、语音信息识别准确率得到了质的飞跃,引起了广泛关注,2015年底谷歌开源了其实现深度学习的TensorFlow框架,更是在全球掀起了一股AI学习和讨论的热潮。实现相关的程序语言很多,使用Python的最为广泛,就像Bruce Eckel说的那样,“Life is short, you need Python”,对于我这样工作N年的人来说,体会更为深刻。

很久很久以前读本科时,学过C语言,工作期间为读懂C++源码,自学过半本《C++Primer》,算是有一点点基础吧,但是缺少工程实践经验。OpenCV是一个开源的计算机视觉库,具有很多成熟的图像处理分析算法实现,做图像处理的首选。HALCON是做MV领域的专业软件,但是因为是收费软件,比较小众。懒惰使人落后。由于没有持续学习使用OpenCV,一直处于一知半解的状态。

说多了,书归正传。

基于我的目标和现状,下一步算法方面主要学习ML、DL以及TensorFlow框架,软件主要学习Python、OpenCV和Github。这让我不禁想起蚊子打哈欠这句谚语来。

下面就结合近来读的书和网络资源,谈谈如何解决起步阶段遇到的问题和困惑,同时对读的书和具有较高参考价值的网络资源做一个梳理。

分软件和算法两条线。两条线不是一下找到的,是忙活了半个月后捋出来的。

一、关于Python和OpenCV的IDE搭建

1. Python。我是从范淼的《Python机器学习及实践——从零开始通往Kaggle竞赛之路,2016》[1]和Andreas C. Muller的《Python机器学习基础教程,2018》[2]两书乱入的,书中对Python环境搭建讲的相对完整和专业,而真正解决一些具体问题时,网络资源非常重要。我从网上下载了Python3、Anaconda3、Pycharm并安装使用,初步做了了解,总的来说,Pycharm虽然强大,但是需要另外安装,且开发web更好。对于初学者spider足够了。初学者适合使用Anaconda3,涵盖了常用的各种包以及Jupyter和Spider等实用的IDE,一次安装,省心省力。就Python语法学习来说,我用了李佳宇(小甲鱼)的《零基础入门学Python,2016》[3],作者叙述风格自成一体,实用,有趣,是菜鸟上手的一本比较理想的参考书。

2. OpenCV。关于在Python3(我是在Anaconda3)中安装OpenCV3,张平的《OpenCV算法精解:基于Python与C++,2017》[4]一书很合适,基本够用了。另外《Python各类图像库的图片读写方式总结》(链接地址http://www.cnblogs.com/skyfsm/p/8276501.html)对于初学者,尤其是用Python调用cv2的基础图像处理函数做了很好的总结。软件是在(链接地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/)下载的OpenCV3(opencv_python-3.4.1-cp36-cp36m-win32.whl),我的配置是Windows7+Python3.6.0(Anaconda3.5.1)+OpenCV3.4.1,安装过程附在文末。

3.Github。社会化编程的有力工具,可以与全世界程序员分享代码,其优点尚未亲自体验,目前正在学习,觉得大塚弘记的《Github入门与实践》[13]应该够了,[14,15]感觉是更进一步时再看。

二、关于AI、ML、DL和TensorFlow的概念和学习

自从AI掀起第三次浪潮,很多媒体铺天盖地的宣传,不乏一些错误概念和误解。我查阅了相关资料,把几个重要的概念定义搬运过来,与大家分享。

人类智慧[5]是指人类认识世界和改造世界并在改造客观世界的过程中改造主观世界的能力,是隐性智慧和显性智慧两者相互作用、相辅相成、相互促进的结果。

人类智能[5]是人类根据初始信息来生成和调度知识,进而在目标引导下由初始信息和知识生成求解问题的策略并把智能策略转换为智能行为从而解决问题的能力。为推动显性智慧的模拟研究,将显性智慧特称为“人类智能”。

人工智能[5]与机器智能等效,是人类智能的人工实现。人工智能的定义的歧义和认识误区较多,是我等今后学习重点理解的概念。

机器学习[6,7,8,9]在学术界一个非常专业的定义是,如果一个程序可以在任务T上,随着经验E的增加,效果P也可以随之增加,则称这个程序可以从经验中学习。人工智能是一类非常广泛的问题,机器学习是解决这类问题的一个重要手段,深度学习则是机器学习的一个分支[9]。

深度学习的定义[8,9]不断发展,可以参考维基百科。深度学习的基础是机器学习中的分散表示,分散表示假定观测值是由不同因子相互作用生成。在此基础上,深度学习进一步假定这一相互作用的过程可分为多个层次,代表对观测值的多层抽象。不同的层数和层的规模可用于不同程度的抽象。深度学习运用了这种分层次抽象的思想,更高层次的概念从低层次的概念学习得到。自动地将简单的特征组合成更加复杂的特征,或者说使用通用学习方法自动学到好的特征,是深度学习的核心优势。

TensorFlow是谷歌开源的一个计算框架,该框架可以很好地实现各种深度学习算法[9]。据说Pytorch比TF更易上手,不过前者适合工业应用落地,后者更适合建模型搞科研,先学TF吧。TensorFlow的书比较多[9,10,11,12],各有千秋,学完再做评价。

scikit-learn[2]也是一个开源项目,也是很有名的Python机器学习库,包含许多目前最先进的机器学习算法,并有详细文档和用户指南,参考书[2]以Jupyter Notebook形式写完,是一本很好的学习材料,对初学者比较合适。

先总结这些。

手头一堆书,要学的很多,面对一堆书,经常不知道该拿那一本,还是得分个轻重缓急。

第一阶段:学习和模仿。

第一步,先用参考书[3]熟悉Python编程环境spider和学习Python语法;

第二步,通过参考书[4]学习python调用cv2的程序,动手模仿CV算法精解中的算法;

第三步,阅读参考书和参考文献,了解AI简史,学习ML和DL中的基本概念,重点是CNN系列,这方面钱青在CSDN的文章对重要文献做了很好的梳理并翻译了重要章节,附上了下载链接,可以参考(https://blog.csdn.net/qianqing13579/article/details/71076261),还有[8]的中、英文电子PDF。

第二阶段:搭建硬件平台,动手做一个简单的DEMO。

第三阶段:根据需求,分别在scikit-learn和在TF框架下,尝试用不同模型完成目标。

提及的参考书的作者有业内牛人,老教授,也有年轻的博士,总的感觉是,像那碗毒鸡汤,比你聪明的人还比你努力,你还有什么理由不学习呢?

同时看到很多网友在网上分享解决问题的方法、对知识的梳理,有的细致到恨不得手把手教你的程度,很是感动,正是有了这些不求名利,只为学问的精神,使互联网成为了我们最好的老师,既提升了自己,又为后来者提供了帮助。为此我也加入了这一行列,只是作为一个反面教材,让大家少走点弯路。

先写这些吧,欢迎拍砖,也欢迎有共同志趣的朋友一起交流。

附录一

Anaconda3下怎样安装opencv3

步骤:

1.  确保安装了Anaconda3,在命令行输入Python有正确信息,我的配置是Windows7+Python3.6.0(Anaconda3.5.1)+OpenCV3.4.1安装配置匹配;

2.  在(https://www.lfd.uci.edu/~gohlke/pythonlibs/)下载OpenCV(opencv_python-3.4.1-cp36-cp36m-win32.whl),之后把文件复制到Anaconda3\Lib\site-packages文件夹下

3.  按Win+R 输入cmd打开命令提示符窗口,输入“d:”,再输入“cd D:\SWinstall\Anaconda351\Lib\site-packages”进入到Anaconda3\Lib\site-packages文件夹下

4.       执行命令pip install opencv_python‑3.4.1‑cp36‑cp36m‑win32.whl ,显示成功安装信息;

5.       测试:输python进入python,输入import cv2回车,不报错就说明安装配置成功。

参考文献

[1] 范淼,李超.Python机器学习及实践——从零开始通往Kaggle竞赛之路[M].北京:清华大学出版社,2016.

[2] Andreas C. Muller,SarahGuido.Python机器学习基础教程[M].北京:人民邮电出版社,2018.

[3]李佳宇.零基础入门学Python[M].北京:清华大学出版社,2016.

[4]张平. OpenCV算法精解:基于Python与C++[M].北京:电子工业出版社,2017.

[5]钟义信.人工智能历史研究需要的共同语言:术语的规范.

[6]Mitchell T M,Carbonell J G,Michalski RS.Machine Learning[M].McGraw-Hill,2003.

[7]邓力,俞栋.深度学习:方法及应用[M].北京:机械工业出版社,2015.

[8] IanGoodfellowYoshuaBengio,AaronCourville.深度学习[M].北京:人民邮电出版社,2017.

[9]郑泽宇,梁博文,顾思宇. TensorFlow实战Google深度学习框架[M].北京:电子工业出版社,2018.

[10]罗冬日.TensorFlow入门与实战[M].北京:人民邮电出版社,2018.

[11]黄文坚,唐源.TensorFlow实战[M].中国中信出版社.

[12]李嘉璇.TenserFlow技术解析与实战[M].北京:人民邮电出版社,2017.

[13]大塚弘记.Github入门与实践[M].北京:人民邮电出版社,2018.

[14]Peter Bell,Brent Beer. Github入门[M].北京:中国电力出版社,2015.

[15] ChrisDawson.Github实践[M]. 北京:人民邮电出版社,2016.

版权声明:本文为博主原创文章,转载需注明出处。

初学AI(ML、DL、TensorFlow)与python、OpenCV的一些体会相关推荐

  1. AI, ML, DL的区别

    人工智能(Artificial Intelligence).机器学习(Machine Learning).深度学习(Deep Learning)经常混叫,虽然没有非常准确的定义,但基本上是下面这些图所 ...

  2. Python+OpenCv实现AI人脸识别身份认证系统(2)——人脸数据采集、存储

    原 Python+OpenCv实现AI人脸识别身份认证系统(2)--人脸数据采集.存储 2019年07月02日 08:47:52 不脱发的程序猿 阅读数 602更多 所属专栏: 人脸识别身份认证系统设 ...

  3. python/ML/DL学习目录

    第一部分:python语法学习 . /*******环境搭建************/ 1. Anaconda安装 2. Anaconda的使用 3. Spyder的使用中遇到的问题 4. Jupyt ...

  4. python搭建ai_搭建一个新手学习AI/ML的Python环境

    不知不觉消失了好久,公众号也很久没有更新了.因为跑去学习微软AI方向的MPP课程了.MPP是目前微软最先提供关于AI的培训课程,关于MPP的学习体系,我后面会再写一篇简单的介绍. MPP包含了很多的内 ...

  5. Python科学计算库核心知识点总结_代码篇(ML/DL依赖语法)

    Python科学计算库核心知识点总结_代码篇(ML/DL依赖语法)                                                                    ...

  6. Python+OpenCv实现AI人脸识别身份认证系统(1)——人脸识别原理

    原 Python+OpenCv实现AI人脸识别身份认证系统(1)--人脸识别原理 置顶 2019年07月02日 08:47:40 不脱发的程序猿 阅读数 1255更多 所属专栏: 人脸识别身份认证系统 ...

  7. Python+OpenCV实现AI人脸识别身份认证系统(4)—人脸识别

    本篇博文是Python+OpenCV实现AI人脸识别身份认证系统的收官之作,在人脸识别原理到数据采集.存储和训练识别模型基础上,实现人脸识别,废话少说,上效果图: 案例引入 在Python+OpenC ...

  8. Python+OpenCv实现AI人脸识别身份认证系统(3)——训练人脸识别模型

    目录 案例引入 本节项目 最近有小伙伴们一直在催本项目的进度,好吧,今晚熬夜加班编写,在上一节中,实现了人脸数据的采集,在本节中将对采集的人脸数据进行训练,生成识别模型. 案例引入 首先简要讲解数据集 ...

  9. AI新时代-大神教你使用python+Opencv完成人脸解锁(附源码)

    摘要: 好吧,伙计们,我回来了.说我拖更不写文章的可以过来用你的小拳拳狠命地捶我胸口.... 那么今天我们来讲关于使用python+opencv+face++来实现人脸验证及人脸解锁.代码量同样不多, ...

  10. 年度回顾:2018年的AI/ML惊喜及预测19年的走势(一)...

    考虑到技术变革的速度,我认为让专业IT人士分享他们对2018年最大惊喜及2019年预测的看法会很有趣.以下是他们对人工智能(AI),机器学习( ML)和其他数据科学迭代的看法: CLARA分析公司首席 ...

最新文章

  1. Logstash(四)插件Output详解
  2. 独家 | 高季尧:定制化优化算法的应用与威力(附PPT)
  3. Memcache面试题
  4. 信号相参性(相干性)(转)
  5. binary_search函数
  6. [云炬商业计划书阅读分享]
  7. C++ : STL常用算法: inner_product , sort ,itoa
  8. android集合优化,android-性能优化之集合类优化
  9. Swift - 数组排序方法(附样例)
  10. mybatis-generator插件使用 批量插入、更新
  11. Tomcat可以实现Session共享方案
  12. 【java学习之路】(java SE篇)(练习)关于常用类的心血来潮小练习
  13. 本计算机无法加入家庭组,win10系统无法加入家庭组是怎么回事?
  14. HW 静态路由实现PC间互通
  15. Java Class的文件结构
  16. 数据解读 | 川菜出圈只靠辣?你太小瞧川菜了
  17. 金山毒霸系统清理专家
  18. 2dpca matlab程序,[转载]人脸识别-2dpca之Matlab程序
  19. vant Webapp 快速使用
  20. 【BZOJ3940】[USACO2015 Feb] Censoring (AC自动机的小应用)

热门文章

  1. IEC61850开发流程
  2. 2021 csp-s
  3. 2020曼彻斯特大学计算机2020,2020年曼彻斯特大学申请要求完整版
  4. loopback address 回送地址
  5. jq实现多开关效果互不影响
  6. linux开机自动执行命令
  7. 如何让CFree5.0支持C++11
  8. Emgucv使用中常用函数总结
  9. 机械臂示教轨迹参数化方法 DMP, Dynamic Movement Primitive (一)
  10. 免安装版(解压缩版)MySQL安装