11.1-11.10
图像识别。
一、搭建环境
基于python的TensorFlow实现
1.anaconda的安装
参考:https://jingyan.baidu.com/article/f0062228503d2afbd3f0c8fe.html
2.可视化工具:jupyter notebook文学编程 有利于数据分析
参考:https://www.jianshu.com/p/97fa4ed3edbc
打开方式:安装完anacoda之后在cmd中输入
jupyter notebook
在浏览器弹出的界面中点击new即可开始编写代码。
关闭方式:在notebook中点击shutdown即可。关闭整个服务:在原来的终端按Control+c两次
代码单元:这里是你编写代码的地方,通过按 Shift + Enter 运行代码,其结果显示在本单元下方。
代码单元左边有 In [1]: 这样的序列标记,方便人们查看代码的执行次序。
Markdown 单元:在这里对文本进行编辑,采用 markdown 的语法规范,可以设置文本格式、插入链接、图片甚至数学公式。
同样使用 Shift + Enter 运行 markdown 单元来显示格式化的文本。
类似于 Linux 的 Vim 编辑器,在 notebook 中也有两种模式:
编辑模式:编辑文本和代码。选中单元并按 Enter 键进入编辑模式,此时单元左侧显示绿色竖线。
命令模式:用于执行键盘输入的快捷命令。通过 Esc 键进入命令模式,此时单元左侧显示蓝色竖线。
如果要使用快捷键,首先按 Esc 键进入命令模式,然后按相应的键实现对文档的操作。
比如切换成代码单元(Y)或 markdown 单元(M),或者在本单元的下方增加一单元(B)。查看所有快捷命令可以按H。
二、使用keras进行图像识别
官方文档:https://keras.io/zh/
https://keras-cn.readthedocs.io/en/latest/other/optimizers/
1.python3.7退回到3.6
打开anaconda prompt-->输入conda install python=3.6-->y
2.安装tensorFlow2.0:
①下载安装好对应版本anaconda后,通过命令安装tensorflow2.0(等正式版本上线后需要替换):
pip install tensorflow==2.0.0-beta1
②python虚拟环境
创建一个新的虚拟环境:
conda create -n tensorflow python=3.6
查看已有的虚拟环境:
conda env list
切换虚拟环境(tensorflow为你自己创建时的名,在此为tensorflow):
activate tensorflow
在此打开jupyter notebook
在此打开jupyter notebook
③新建一个python3文件
import tensorflow as tf print(tf.__path__) print(tf.__version__) //注意是两条杠
④检测tensorflow是否安装成功
pip show tensorflow #ttributeError: module 'tensorflow' has no attribute '_version_'
解决方法没有?
#2.0.0-beta1
⑤安装opencv和keras的环境
pip install keras
pip install opencv-python
基于keras的图像分类CNN模型的搭建以及可视化(附详细代码)
https://blog.csdn.net/u011268787/article/details/79891284
三、keras框架学习开发
人工智能小例子(一)https://blog.csdn.net/xvshu/article/details/79026234
基于keras+openCV的人脸识别(二)https://blog.csdn.net/xvshu/article/details/78863430
人脸检测时候注意修改好data/haarcascade_frontalface_alt2.xml的路径
学习资料:python 深度学习【美】弗朗索瓦·肖莱 著 张亮 译
1.kaggle比赛(数据分析,数学建模)https://blog.csdn.net/lezaimemecha/article/details/78906337
2.基础线性代数子程序(BLAS,basic linear algebra subprograms)
四、
1.使用小工具激活windows
https://pan.baidu.com/s/1JJ39b6kk34J3wyATvPr7ZA
2.安装华文行楷字体(可以直接去华军软件搜也可以在我百度网盘里找)https://pan.baidu.com/s/1WW930cM6CeODdPRKEhVIDA
将.ttf文件拷贝到
五、模式识别
1.机器学习通用模板:
①定义问题,收集数据集
②选择衡量成功的指标
③确定评估方法
④准备数据
⑤开发比基准更好的模型
⑥扩大模型规模:开发过拟合的模型
⑦模型正则化与调节超参数
2.阿里云免费接口
①多媒体AI - 阿里云人工智能产品-多媒体AI(公测)发布
https://www.aliyun.com/product/news/detail?&msctype=email&mscareaid=cn&mscsiteid=cn&mscmsgid=2260119110502326459&id=14341&source_type=out_edm_feature_20191105
②图片不良场景识别
https://ai.aliyun.com/lvwang/imglive?spm=5176.12418109.h2v3icoap.229.4ecd29b3e40hpL
③openpose框架实现人体骨骼检测
https://github.com/tensorlayer/openpose-plus
六、人工智能小例子(一)keras模拟一元方程
https://blog.csdn.net/xvshu/article/details/79026234
from keras.models import Sequential from keras.layers import Dense import matplotlib.pyplot as plt import numpy as np #生成-1到1的200均匀分佈的數字 x= np.linspace(-1,1,200) np.random.shuffle(x) #利用x生成y,并随机加入0.05之内的扰动 y = 0.5*x + 2 + np.random.normal(0,0.05,(200,)) plt.scatter(x,y) plt.show() #截取160个数据作为训练数据 #截取40个数据作为测试数据 x_train = x[:160] x_test = x[160:] y_train = y[:160] y_test = y[160:] #新建一个流式网络 model = Sequential() #增加一个全连接层,输入一个参数,输出一个参数 model.add(Dense(output_dim=1,input_dim=1)) #编译网络,损失函数mse,优化函数 sgd model.compile(loss='mse',optimizer='sgd') #训练301次 for step in range(500): cost = model.train_on_batch(x_train,y_train) #每100次打印一次损失 if step%100==0: print("cost:",cost) #使用测试数据,测试损失 cost = model.evaluate(x_test,y_test,batch_size=40) print("test cost:",cost) #获取第一层网络的权重 W,b = model.layers[0].get_weights() print("w:",W," b:",b) #画图展示训练结果 y_pred = model.predict(x_test) plt.scatter(x_test,y_test) plt.plot(x_test,y_pred) plt.show()
二、人工智能小例子(二)-基于keras+openCV的人脸识别
https://blog.csdn.net/xvshu/article/details/78863430
1.识别人脸(OpenCV3)
import cv2 def CatchUsbVideo(window_name, camera_idx): cv2.namedWindow(window_name) #视频来源,可以来自一段已存好的视频,也可以直接来自USB摄像头 cap = cv2.VideoCapture(camera_idx) #告诉OpenCV使用人脸识别分类器 classfier = cv2.CascadeClassifier("D:/opencv/opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml") #识别出人脸后要画的边框的颜色,RGB格式 color = (0, 255, 0) while cap.isOpened(): ok, frame = cap.read() #读取一帧数据 if not ok: break #将当前帧转换成灰度图像 grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #人脸检测,1.2和2分别为图片缩放比例和需要检测的有效点数 faceRects = classfier.detectMultiScale(grey, scaleFactor = 1.2, minNeighbors = 3, minSize = (32, 32)) if len(faceRects) > 0: #大于0则检测到人脸 for faceRect in faceRects: #单独框出每一张人脸 x, y, w, h = faceRect cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2) #显示图像 cv2.imshow(window_name, frame) c = cv2.waitKey(10) if c & 0xFF == ord('q'): break #释放摄像头并销毁所有窗口 cap.release() cv2.destroyAllWindows() if __name__ == '__main__': CatchUsbVideo("find face", 0)