paddle_图像识别实战(一)----如何根据已有图片生成测试和训练信息并保存到文件

图像识别实战(一)----如何根据已有图片生成测试和训练信息并保存到文件

提前知道

本实验为手势识别,具体图片可以参考下图,经过训练我们得知,标签为5.

在这里插入图片描述

总体目标

Dataset文件夹下面有0-9十个文件,其中有几十张代表文件夹数值的手势图片。

我们的目标便是将Dataset文件夹下面的图片进行训练,最后得出模型进行预测。

本次目标

将Dataset下面的所有图片的路径及其标签保存到两个文件train.list&test.list中,便于模型训练时调用。

1、导入库

import os
import time
import random
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import paddle
import paddle.fluid as fluid
import paddle.fluid.layers as layers
from multiprocessing import cpu_count
from paddle.fluid.dygraph import Pool2D,Conv2D
from paddle.fluid.dygraph import Linear

导入库的时候可以导入多余的库,所以可以放心导入。

2、生成保存信息的文件

data_path = '/home/aistudio/data/data23668/Dataset'
#每个人的数据都可能保存在不同的路径,所以可以按需修改
character_folders = os.listdir(data_path)
#查询data_path下面的所有文件,本次程序中是0-9是个文件夹
if os.path.exists('./train_data.list'):
	os.remove('./train_data.list')
if(os.path.exists('./test_data.list')):
    os.remove('./test_data.list')

意义:查询我们需要生成用来保存信息的文件是否已经存在,如果已经存在则删除(后面我们会自行创建),如果不存在则不进行其他任何操作。

目的:为了防止已经存在目标文件,且文件中有数据,造成后续程序运行出错

3、保存图片路径和标签信息

for character_folder in character_folders:
	with open('./train_data.list','a') as f_train:
        with open('./test_data.list','a') as f_test:
        	if character_folder = 'DS.Store':
        	#在解压文件时会产生一些垃圾文件,遇见不处理就行
        		continue
        	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('文件已经从创建完成!')
        	

with open(’./train_data.list’,‘a’) as f_train:

‘a’,有不存在则创建的含义,和第二步对应。如果想具体了解的话可以点击’a’进行进一步学习。

4、数据提供器

train_reader = paddle.batch(reader = paddle.reader.shuffle(reader = 		    								data_reader('./train_data.list'),buf_size = 256),batch_size = 32)
test_reader = paddle.batch(reader = data_reader('./test_data.list'),batch_size = 32)

buf_size-------设置缓冲区大小

batch_size—一次训练所选取的样本数

那么

reader = data_reader('./train_data.list')

代表什么呢?

reader是一种迭代器,每次返回一条数据,本次实验为每次放回一张图片的地址及其对应的标签,however reader需要用户我们自己定义。

So, reader需要怎么定义呢?

请欣赏"图像识别实战(二)"!!!!!!博主会努力更新的,所以也请不要吝啬你们的点赞!!!

如果想了解图像识别实战的全过程,请务必点击博主名字,进入主页查看全部。

对了,老子爱你们!

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以按照以下步骤在uniapp中使用`@paddle-js-models/facedetect`实现摄像头人脸检测并生成全部代码: 1. 首先,确保你已经创建了一个uniapp项目。如果还没有创建,请先创建一个空的uniapp项目。 2. 打开命令行工具,进入你的uniapp项目目录。 3. 在命令行中运行以下命令来安装`@paddle-js-models/facedetect`: ``` npm install @paddlejs-mobilenet @paddle-js-models/facedetect ``` 4. 在你的uniapp项目中创建一个新的页面,命名为`FaceDetect`。 5. 在`FaceDetect`页面的vue文件中,引入所需的模块和组件: ```vue <template> <view> <camera :device-position="cameraPosition" @init="onCameraInit" @capture="onCameraCapture"></camera> <canvas id="canvas"></canvas> </view> </template> <script> import { createPaddlejsModel } from '@paddle-js-models/facedetect'; import { camera } from '@uni/apis'; export default { data() { return { cameraPosition: 'front', model: null, }; }, mounted() { this.initModel(); }, methods: { async initModel() { this.model = await createPaddlejsModel(); }, async onCameraInit() { await camera.startPreview(); }, async onCameraCapture({ tempImagePath }) { const result = await this.model.detect(tempImagePath); this.drawRect(result); }, drawRect(result) { const ctx = uni.createCanvasContext('canvas'); ctx.drawImage(result.tempImagePath, 0, 0, 300, 300); ctx.setStrokeStyle('red'); ctx.setLineWidth(2); result.boxes.forEach((box) => { ctx.strokeRect(box.x, box.y, box.width, box.height); }); ctx.draw(); }, }, }; </script> <style> canvas { width: 300px; height: 300px; } </style> ``` 6. 在`pages.json`文件中注册`FaceDetect`页面: ```json { "pages": [ { "path": "pages/FaceDetect/FaceDetect", "style": { "navigationBarTitleText": "人脸检测" } } ] } ``` 7. 运行uniapp项目,在手机上或模拟器中打开`FaceDetect`页面,即可进行摄像头人脸检测。 这样,你就可以在uniapp中使用`@paddle-js-models/facedetect`实现摄像头人脸检测并生成全部代码了。记得根据自己的需求进行样式和功能的修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值