安装系统和ssh以及vnc的使用,去买树莓派的淘宝店要教程就行,这里默认你已经安好系统
1.备份源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak
2.更换软件更新源
sudo nano /etc/apt/sources.list
3.将第一行改为中科大的源,Ctrl+O」进行保存,然后回车,「Ctrl+X」退出。如图所示
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
4.修改系统更新源
sudo nano /etc/apt/sources.list.d/raspi.list
5.将第一行修改成中科大的系统源地址,「Ctrl+O」进行保存,然后回车,「Ctrl+X」退出。如图所示
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui
sudo vim /etc/pip.conf
在最后输入,如图所示(原来的可用#变为注释,防止以后改回来)
extra-index-url=https://mirrors.aliyun.com/pypi/simple/
7.更新
sudo apt-get update
sudo apt-get upgrade
pip install --upgrade pip
一些国内源
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣 http://pypi.douban.com/simple/
Python官方 https://pypi.python.org/simple/
v2ex http://pypi.v2ex.com/simple/
中国科学院 http://pypi.mirrors.opencas.cn/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
参考
pip换源
apt换源
1.安装python3.7.3
(1)安装所需依赖
sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev
(2)解压python安装包
先进入python安装包所在目录,再解压
cd mydownload
tar zxvf Python-3.7.3.tgz
(3)编译安装
sudo mkdir /usr/local/python373
sudo ./configure --prefix=/usr/local/python373
sudo make
sudo make install
(4)创建符号链接
sudo ln -s /usr/local/python373/bin/python3 /usr/bin/python3.7
sudo ln -s /usr/local/python373/bin/pip3 /usr/bin/pip3.7
PS:若pip没有安装,则是编译安装时有依赖没有安装,需要卸载后安装依赖再安装
参考
安装python3.7.0
2.安装模块和虚拟环境
sudo apt install libatlas-base-dev
sudo pip3.7 install -U virtualenv # 虚拟环境不用也行
3.创建虚拟环境
virtualenv abcd #abcd是虚拟环境的名字
4.进入虚拟环境
source abcd/bin/activate #此条命令为进入虚拟环境
deactivate #此条命令为退出虚拟环境
5.安装依赖包
(1)先给pip3.7换源,操作同上文
sudo vim /etc/pip3.7.conf #进入后修改文本,如上文
pip3.7 install --upgrade pip
(2)安装依赖
pip3.7 install keras_applications==1.0.8 --no-deps
pip3.7 install keras_preprocessing==1.1.0 --no-deps
pip3.7 install h5py==2.9.0
pip3.7 install -U six wheel mock
pip3.7 install pillow
若安装不上,可用whl文件安装,操作方法如下
cd wenjian #进入whl文件位置
pip3.7 install ./xxx/ #xxx为文件名
传文件教程
用filezilla传文件
参考
安装TensorFlow
1.安装TensorFlow
pip3.7 install tensorflow==2.0.0 #也可以用whl安装
2.在电脑上训练模型
import h5py
import tensorflow as tf
from tensorflow import keras
#载入mnist数据集,将样本从整数转换为浮点数
mnist = tf.keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
test_images = test_images.reshape((10000, 28, 28, 1))
train_images, test_images = train_images / 255.0, test_images / 255.0
#将模型的各层堆叠起来,以搭建 tf.keras.Sequential 模型。为训练选择优化器和损失函数
model = keras.models.Sequential()
# 第1层卷积,卷积核大小为3*3,32个,28*28为待训练图片的大小
model.add(keras.layers.Conv2D(
32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(keras.layers.MaxPooling2D((2, 2)))
# 第2层卷积,卷积核大小为3*3,64个
model.add(keras.layers.Conv2D(64, (3, 3), activation='relu'))
model.add(keras.layers.MaxPooling2D((2, 2)))
# 第3层卷积,卷积核大小为3*3,64个
model.add(keras.layers.Conv2D(64, (3, 3), activation='relu'))
model.add(keras.layers.Flatten()) # 数据变一维
model.add(keras.layers.Dense(64, activation='relu')) # 全连接64个
model.add(keras.layers.Dense(10, activation='softmax')) # 全连接10个输出
#优化器,损失函数,精度
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
#训练并验证模型
model.fit(train_images, train_labels, epochs=5) #重复5次
model.evaluate(test_images, test_labels, verbose=2)
# 保存模型
model.save("t2.h5") #模型和py文件在同一目录
import tensorflow as tf
from tensorflow import keras
from PIL import Image
import numpy as np
import h5py
#导入模型
shuzimodel = keras.models.load_model('t2.h5')
shuzimodel.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
#改变图片大小(非必需)
class Change():
def change(self,infile):
image = Image.open(infile) # 图片格式更改(原图片地址)
outfile = 'C:/Users/86159/Desktop/PYTHON/mnist/shuzi/xin.png'#改后地址
image.save(outfile, "PNG")#修改图片格式
im = Image.open(infile)
(x,y) = im.size #原图片尺寸
x_s = 28 #定义x
y_s = 28 #定义y
out = im.resize((x_s,y_s),Image.ANTIALIAS) #修改图片尺寸
out.save(outfile)
#图像识别
class Predict(object):
def __init__(self):
pass
def predict(self, image_path):
# 以黑白方式读取图片
img = Image.open(image_path).convert('L') #Image模块,convert将图片转换(L为彩色变黑白)
img = np.reshape(img, (28, 28, 1)) / 255.
x = np.array([1 - img]) #产生数组
y = shuzimodel.predict(x) #predict为预测函数,预测输出为数值
# 因为x只传入了一张图片,取y[0]即可
# np.argmax()取得最大值的(索引值)下标,即代表的数字
print('预测数字为:', np.argmax(y[0]))
a=Change() #a为改变图片大小类
app = Predict() #app为预测类
app.predict('C:/Users/86159/Desktop/PYTHON/mnist/0.png') #这里的地址为树莓派里图片地址
app.predict('C:/Users/86159/Desktop/PYTHON/mnist/1.png')
app.predict('C:/Users/86159/Desktop/PYTHON/mnist/4.png')
a.change('C:/Users/86159/Desktop/PYTHON/mnist/x5.jpg') #非必需
app.predict('C:/Users/86159/Desktop/PYTHON/mnist/shuzi/xin.png') #非必需
1.如果出现以下问题,中间步骤少做了,重装系统再来一遍吧,其他方法都没用,我试过了
2.若出现如下,解决也是重装系统再来一遍,其他办法没用
(把东西全卸了再来或许可以,我没试过)
libhdf5_serial.so.103: cannot open shared object file: No such file or directory
3.若模型使用出现下图,则是树莓派和电脑的TensorFlow版本不一致,需要在电脑上换个版本训练模型(虚拟环境安个python3.7.3和TensorFlow2.0就行)