酝酿学习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
<http://www.cnblogs.com/skyfsm/p/8276501.html%EF%BC%89%E5%AF%B9%E4%BA%8E%E5%88%9D%E5%AD%A6%E8%80%85%EF%BC%8C%E5%B0%A4%E5%85%B6%E6%98%AF%E7%94%A8Python%E8%B0%83%E7%94%A8cv2>
的基础图像处理函数做了很好的总结。软件是在(链接地址: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系列,这方面钱青
<https://blog.csdn.net/qianqing13579>在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] Ian <https://book.jd.com/writer/Ian_1.html>Goodfellow
<https://book.jd.com/writer/Goodfellow_1.html>, Yoshua
<https://book.jd.com/writer/Yoshua_1.html>Bengio
<https://book.jd.com/writer/Bengio_1.html>,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] Chris <https://book.jd.com/writer/Chris_1.html>Dawson
<https://book.jd.com/writer/Dawson_1.html>.Github实践[M]. 北京:人民邮电出版社,2016.
版权声明:本文为博主原创文章,转载需注明出处。
热门工具 换一换