当前位置: 首页 > article >正文

深度学习-图像评分实验(TensorFlow框架运用、读取处理图片、模型建构)

目录

0、实验准备

①实验环境

②需要下载的安装包

③注意事项(很关键,否则后面内容看不懂)

④容易出现的问题

1、查看数据并读取数据。

2、PIL库里的Image包进行读取(.resize更改图片尺寸,并将原始数据归一化处理,用索引方式进行提取)

3、切分实验数据集(train_test_split进行切分)

4、线性回归构建模型。(Dense、Flatten、Input和Model模块。利用Model类方法构建模型)

5、模型编译。利用keras的compile实现编译过程

6、模型拟合。利用fit进行拟合,并观察循环过程中,参数的变化

7、模型预测。利用predict使用训练好的模型在未知的数据上做预测,得到一个预测值

8、绘制损失函数曲线变化图

9、完整代码


0、实验准备

①实验环境

python3.7.4

Spyder(anaconda3.7)

下载链接:anaconda3.7安装(清华开源软件镜像)

因为有些安装包有版本要求,最好直接下载anaconda3.7版本的Spyder直接使用。

②需要下载的安装包

一定下载安装包哈,不然运行会报错哦。

conda install pandas numpy pillow scikit-learn keras matplotlib

③注意事项(很关键,否则后面内容看不懂)

→本文提到的X变量代表各种美食图像,因变量Y表示每张图片的评分。(图片数据可以大家自己去网上找,也可以使用我给大家分享的图片材料哈,注意要改文件地址【最好全是英语命名,不要有中文,否则可能会有报错】)

→需要下载一个Y数据文件:

通过百度网盘分享的文件:实验数据(图片材料+Y数据csv文件)
链接:https://pan.baidu.com/s/1xksDeusttovDfs2ncMYOcA?pwd=6688 
提取码:6688 

④容易出现的问题

有些下载可能会出一点问题:版本不兼容(所以建议大家直接下载anaconda3.7,因为这个是兼容scikit-learn包的,大部分不兼容这个)、找不到文件(改文件路径!!!不要有中文!!!)

1、查看X、Y数据并读取X、Y数据。

2、针对X图片数据,利用PIL库里的Image包进行读取。利用.resize更改图片尺寸,并将原始数据归一化处理。针对Y数值数据,用索引方式进行提取。

3、切分实验数据集。利用train_test_split进行切分。

4、线性回归构建模型。用到的模块:Dense、Flatten、Input和Model模块。利用Model类方法构建模型。

5、模型编译。利用keras的compile实现编译过程。注意:三种参数值的设定。

6、模型拟合。利用fit进行拟合,并观察循环过程中,参数的变化。(这个最好多模拟几次,不低于六次,不然精确度不高)

7、模型预测。利用predict使用训练好的模型在未知的数据上做预测,得到一个预测值。

8、绘制损失函数曲线变化图。

9、完整代码


import pandas as pd
MasterFile=pd.read_csv("E:\All_demo\DEEp\FoodScore.csv")
print(MasterFile.shape)
MasterFile[0:5]
MasterFile.hist()

import numpy as np
FileNames=MasterFile['ID']
N=len(FileNames)
Y=np.array(MasterFile['score']).reshape([N,1])

from PIL import Image
IMSIZE=128
X=np.zeros([N,IMSIZE,IMSIZE,3])
for i in range(N):    
    MyFile=FileNames[i]
    Im=Image.open(r'E:\All_demo\DEEp\data_foodscore/'+MyFile+'.jpg')
    Im=Im.resize([IMSIZE,IMSIZE])
    Im=np.array(Im)/255
    X[i,]=Im

from matplotlib import pyplot as plt
plt.figure()
fig,ax=plt.subplots(2,5)
fig.set_figheight(7.5)
fig.set_figheight(15)
ax=ax.flatten()
for i in range(10):
    ax[i].imshow(X[i,:,:,:])
    ax[i].set_title(np.round(Y[i],2))

from sklearn.model_selection import train_test_split
X0,X1,Y0,Y1=train_test_split(X,Y,test_size=0.5,random_state=0)

from keras.layers import Dense,Flatten,Input
from keras import Model
input_layer=Input([IMSIZE,IMSIZE,3])
x=input_layer
x=Flatten()(x)
x=Dense(1)(x)
output_layer=x
model=Model(input_layer,output_layer)
model.summary()

from keras.optimizers import Adam
model.compile(loss='mse',optimizer=Adam(lr=0.001),metrics=['mse'])
 
history=model.fit(X0,Y0,
          validation_data=[X1,Y1],
          batch_size=100,
          epochs=100)
 
MyPic=Image.open("E:\All_demo\DEEp\data_foodscore\pic1.jpg")
MyPic
MyPic=MyPic.resize((IMSIZE,IMSIZE))
MyPic=np.array(MyPic)/255
MyPic=MyPic.reshape((1,IMSIZE,IMSIZE,3))
model.predict(MyPic)
 

import matplotlib.pyplot as plt
plt.plot(history.history['loss'], label='train loss')
plt.plot(history.history['val_loss'], label='validation loss')
plt.title('Model Loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend()
plt.show()


http://www.kler.cn/a/385499.html

相关文章:

  • 前端web
  • GFPS技术原理(四)GATT特征值
  • 怎么禁止Ubuntu自动更新升级
  • FFmpeg将mp4的文件转化为m4a
  • Linux数据管理初探
  • ElasticSearch的Python Client测试
  • 【数据结构】快慢指针探秘:理解链表与数组中的环结构
  • Leecode热题100-78.子集
  • 【AIGC探索】AI实现PPT生产全流程
  • 《Python使用sqlite3数据库》
  • Pytorch基本语法
  • 微软域名邮箱:如何设置管理烽火域名邮箱?
  • .NET6中WPF项目添加System.Windows.Forms引用
  • oracle数据坏块处理(三)-数据抽取插入到新表中
  • webWorker基本用法
  • 容器化技术入门:Docker详解
  • 微服务相关问题
  • Redis - Zset 有序集合
  • 停止的 Docker 容器占用的内存和其他资源
  • python3的基本数据类型: 元组的其他操作
  • 华宇TAS应用中间件入围鲲鹏应用创新大赛2024全国总决赛
  • 案例精选 | 河北省某检察院安全运营中异构日志数据融合的实践探索
  • FreeSWITCH 验证
  • 【主机游戏】艾尔登法环游戏攻略
  • 关于Dell r730xd 老服务器的阵列卡 配置系统盘RAID 1
  • 【物联网技术】ESP8266 WIFI模块在STA模式下作为TCP客户端上电自动进入透传数据模式