TensorFlow 2.x 实战:利用自定义图片构建手势识别数据集并训练模型

一颗松果
一颗松果
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍如何使用 TensorFlow 2.x 构建自定义图像数据集以训练手势识别模型。内容涵盖从摄像头采集图片、整理目录结构、读取文件路径,到使用 tf.data 进行图像预处理和批量加载的全过程。通过具体代码示例,展示如何构建训练集与测试集,为后续模型训练奠定基础。

引言与背景

虽然 TensorFlow 内置了多种常用数据集,但在实际应用场景中,用户往往需要处理自己的私有数据。TensorFlow 官方文档提供了相关指导,本文将以手势识别为例,对整个数据准备流程进行总结。

数据收集与整理

第一步是收集手势图片。

获取数据集的方法多种多样。

笔者通过摄像头自行采集了一批手势图片,并将其保存为特定的目录结构,如图所示。

随后,以相同的形式建立测试集。当然,这一步并非强制,也可以在程序运行过程中动态处理。

数据集构建流程

第二步是构建数据集。

首先需要导入相关的依赖包。


import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics
from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2
import os
import pathlib
import random
import matplotlib.pyplot as plt

接下来读取文件路径。


data_root = pathlib.Path('D:\code\PYTHON\gesture_recognition\Dataset')
print(data_root)
for item in data_root.iterdir():
 print(item)

将图片的路径读取到列表中,以便后续处理。


all_image_paths = list(data_root.glob('*/*'))
all_image_paths = [str(path) for path in all_image_paths]
random.shuffle(all_image_paths)
image_count = len(all_image_paths)
print(image_count) ##统计共有多少图片
for i in range(10):
 print(all_image_paths[i])


label_names = sorted(item.name for item in data_root.glob('*/') if item.is_dir())
print(label_names) #其实就是文件夹的名字
label_to_index = dict((name, index) for index, name in enumerate(label_names))
print(label_to_index)
all_image_labels = [label_to_index[pathlib.Path(path).parent.name]
     for path in all_image_paths]

print("First 10 labels indices: ", all_image_labels[:10])

对图像进行预处理操作。


def preprocess_image(image):
 image = tf.image.decode_jpeg(image, channels=3)
 image = tf.image.resize(image, [100, 100])
 image /= 255.0 # normalize to [0,1] range
 # image = tf.reshape(image,[100*100*3])
 return image

def load_and_preprocess_image(path,label):
 image = tf.io.read_file(path)
 return preprocess_image(image),label

构建一个 tf.data.Dataset 对象来管理数据流。


ds = tf.data.Dataset.from_tensor_slices((all_image_paths, all_image_labels))
train_data = ds.map(load_and_preprocess_image).batch(16)

采用相同的方式制作测试集,即可得到可用于模型训练和评估的数据集。

总结。

至此,关于 TensorFlow 2.x 使用图片制作简单数据集并训练模型的介绍已完成。如需了解更多 TensorFlow 数据集训练相关内容,建议搜索本站往期文章或继续浏览后续文章,感谢大家的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。