手势识别paddle2.1.2

import numpy as np
import paddle

print("当前paddle版本为{}".format(paddle.__version__))

import os

data_path = r"I:\数据集\手势识别\Dataset\Dataset"
character_folders = os.listdir(data_path)
if os.path.exists(r"I:\数据集\手势识别\Dataset\test_data.txt"):
    os.remove(r"I:\数据集\手势识别\Dataset\train_data.txt")
if os.path.exists(r"I:\数据集\手势识别\Dataset\test_data.txt"):
    os.remove(r"I:\数据集\手势识别\Dataset\test_data.txt")
for character_folder in character_folders:
    with open(r"I:\数据集\手势识别\Dataset\test_data.txt", 'a') as f_test:
        with open(r"I:\数据集\手势识别\Dataset\train_data.txt", 'a') as f_train:
            character_imgs = os.listdir(os.path.join(data_path, character_folder))
            count = 0
            for img in character_imgs:
                if count % 10 == 0:
                    f_test.write(os.path.join(data_path, character_folder, img) + '\t' + character_folder + '\n')
                else:
                    f_train.write(os.path.join(data_path, character_folder, img) + '\t' + character_folder + '\n')
                count += 1
print("列表已生成")

from PIL import Image


class FoodDataset(paddle.io.Dataset):
    def __init__(self, mode='train_data'):
        self.data = []
        with open(f'I:/数据集/手势识别/Dataset/{mode}.txt', 'r') as f:
            for line in f.readlines():
                info = line.strip().split('\t')
                if len(info) > 0:
                    self.data.append([info[0].strip(), info[1].strip()])

    def __getitem__(self, index):
        image_file, label = self.data[index]
        img = Image.open(image_file)
        img = img.resize((100, 100), Image.ANTIALIAS)
        img = np.array(img).astype('float32')
        img = img.transpose((2, 0, 1))
        img = img / 255.0
        return img, np.array(label, dtype='int64')

    def __len__(self):
        return len(self.data)


train_dataset = FoodDataset(mode='train_data')
eval_dataset = FoodDataset(mode='test_data')

print('train大小:', train_dataset.__len__())
print('eval大小:', eval_dataset.__len__())

from paddle.nn import Linear
import paddle.nn.functional as F
import paddle

Net = paddle.nn.Sequential(
    Linear(100, 100),
    paddle.nn.ReLU(),
    Linear(100, 100),
    paddle.nn.ReLU(),
    Linear(100, 100),
    paddle.nn.ReLU(),
    paddle.nn.Flatten(),
    Linear(3 * 100 * 100, 10),
    paddle.nn.Softmax()
)

paddle.summary(Net, (1, 3, 100, 100))

model = paddle.Model(Net)

model.prepare(paddle.optimizer.Adam(learning_rate=0.001, parameters=model.parameters()),
              paddle.nn.CrossEntropyLoss(),
              paddle.metric.Accuracy())

# visualdl = paddle.callbacks.VisualDL(log_dir='visualdl_log')

# 启动模型全流程训练
model.fit(train_dataset,  # 训练数据集
          eval_dataset,  # 评估数据集
          epochs=5,  # 训练的总轮次
          batch_size=64,  # 训练使用的批大小
          verbose=1,  # 日志展示形式
          # callbacks=[visualdl]
          )  # 设置可视化

result = model.evaluate(eval_dataset, verbose=1)

print(result)

# 保存模型
model.save(r'F:\PyCharm\PyCharm文件\手势识别')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值