卫星图像识别实例
- 数据预处理
- tf.data相关处理方法
- 卷积神经网络(CNN)
识别卫星图像中的飞机和湖泊,所以实际是个二分类问题。
import tensorflow as tf
print('TensorFlow version:{}'.format(tf.__version__))
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
# 面向对象路径管理工具
import pathlib
路径处理
data_dir = './dataset/2_class'
# 构建路径对象
data_root = pathlib.Path(data_dir)
data_root
# iterdir:对目录进行迭代
for item in data_root.iterdir():
print(item)
# 提取所有路径
all_image_path = list(data_root.glob('*/*')) # 所有目录中的所有文件
# 查看前三张
all_image_path[0:3]
# 查看最后三张
all_image_path[-3:]
# 将WindowsPath格式的地址转为str类型的
all_image_path = [str(path) for path in all_image_path]
数据预处理
import random
# 将图片路径乱序处理
random.shuffle(all_image_path)
# 获取图片总数
image_count = len(all_image_path)
# 获取分类名称
label_names = sorted(item.name for item in data_root.glob('*/')) # 提取所有目录名
# 为分类进行自动编码
label_to_index =dict((name,index) for index,name in enumerate(label_names))
# 取出图片的上一级路径名为它的label
pathlib.Path