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)

 

 

posted @ 2019-11-11 08:42  StarZhai  阅读(258)  评论(0编辑  收藏  举报