利用假期好好充实自己吧,找到了一套关于《计算机视觉与深度学习的书籍》准备认真啃一啃,同时写好学习总结博客。研二这一年应该要出一些成果,虽然导师还是以理论为主,但是为了以后能去大厂,还是要多下功夫啊,女生在这方面好难。
这本书分为三个bundle:
- Starter Bundle - 这部分的内容比较基础,包括从零开始实现回归算法、深度神经网络和卷积神经网络。对于完全没有机器学习基础的人而言,可以从实例中学习到深度学习的基础知识。如果有一定的深度学习知识背景,也可以学习到在实际中如果应用深度学习(主要是图像分类),加深对深度学习的理解。
- Practition Bundle - 这部分的内容在Starter Bundle基础上更进一步,探讨的是在实际中可能会碰到的问题及解决之道,比如提高识别的精度、模型选择、超大数据集,最后引入了几个大型的、复杂的网络模型。
- ImageNet Bundle - 这部分更多的关注于实战,前半部分是在ImageNet数据集上训练各种复杂的网络,后半部分则是解决实际生活中的问题,包括表情检测、车辆识别、年龄预测等等。完成这部分的学习之后,想必你的实战能力会提高一大截。
链接:https://pan.baidu.com/s/10EWiaHY2SqP2ITiq2OqSAw
提取码:45hb
复制这段内容后打开百度网盘手机App,操作更方便哦
链接放在这里,有需要的同学自取,有问题一起讨论呀!!!
书中涉及的code部分,我在github上找到了一个总结好的内容,供大家参考https://github.com/shengqishi8787/Starter_Bundle
3. Image Fundamentals
像素如何形成图像,如何用numpy数组表示像素
- 像素是图像的原始构建块,每一个图像都由一组像素组成
- 灰度图像中,每个像素都是0到255之间的标量值,其中0表示“黑色”,255表示“白色”,0到255之间是不同深浅的灰色,接近0较暗,255较亮
- - RGB颜色通道:a list of three values: one for red component;one for green and another for blue
要在RGB颜色模型中定义颜色,我们需要做的就是定义单个像素中包含的红色、绿色和蓝色的数量
每个通道至定义在[0,255]之间,我们通常使用8位无符号整数来表示强度。
例如:“白色”——(255, 255, 255):红绿蓝三个通道全部填满
“黑色”——(0, 0, 0)
“红色”——(255, 0, 0)
- 为什么在图像处理中,表示图像通常是numpy数组(height,width,depth)height为什么在width前面?
矩阵表示法:当定义矩阵的维数时,我们总是把它写成行x列。图像中的行数是其高度,而列数是图像的宽度。
- 图像的长宽比:ratio
常见的卷积神经网络的图像尺寸包括:3232, 6464, 224224, 227227, 256256, and
299299.
4. Image Classification Basics
语义鸿沟(semantic gap)问题:计算机显示的是像素矩阵,而人类视觉看到的是图片
利用特征提取量化图像内容
- Supervised Learning:
给定训练数据,创建一个训练过程,当模型预测出现错误时,进行修正,当满足停止条件:低错误率或训练的最大迭代次数
常见的监督学习算法:逻辑回归,支持向量机,随机森林,ANN - Unsupervised learning:
没有与输入数据相关的标签,当模型做出错误的预测时,无法进行修正
常见的无监督学习算法:PCA主成分分析和K-means聚类
针对于神经网络,还有 Autoencoders,Self organizing Maps(SOMS). Adaptive resonance theory(自适应共振理论) - Semi supervised learning
半监督学习的流行选择包括标签传播、标签传播、梯形网络和联合学习/联合培训。
小放松:菲波那切数列的实现
- 训练集和测试集的选择
- 模型评估; 准确率和召回率
5. Datasets for Image Classification
很有意思的MNIST数据集,Hinton把它称作“机器学习中的果蝇”
6. Configuring your development Enviroment
本书用到的计算机视觉的主要编程语言为python ,主要库包括Keras ,Mxnet, OpenCV, scikit-image, scikit-learn, and more
**Keras:**支持TensorFlow 和Theano
Mxnet: a deep learning library that specializes in distributed , multi-machine learning
OpenCV: 对实时图像数据进行处理
Scikit-learn: a collection of algorithms for image processing
scik it-image: an open-sorce python library for machine learning ,cross-validation,and visualization
7. Your First Image Classifier
KNN-分类器:针对“Animals Dataset”,动物数据集包含三个classes: dogs,cats, and panadas with 1000 example images per class. 3000个images
该算法直接依赖于特征向量的距离(在图像例子中,即RGB的像素强度)
基本假设:在n为空间中,具有相似视觉概念的图像紧密排列在一起
常见的距离度量函数:
- 欧式距离(L2)
- Manhattan 距离(L1)