狗作为宠物与人类生活密切相关,日益成为一些家庭的重要一员。与此同时,与狗相关的伤害事件和不文明行为频繁见诸于新闻报道,对城市治理提出了新的挑战。这迫切需要采用现代视觉技术来识别狗以及细粒度的品种信息,以加强城市中狗的管理。
目前清华大学图形学实验室发布全球最大的狗细分类数据集已经上传至AI Studio,点击进入查看Tsinghua Dogs数据集
使用PaddleX的API训练代码,当然也可以使用PaddleX 图形化开发界面进行训练。 可以参考我在AI Studio的基于PaddleX的狗狗识别项目
# 环境变量配置,用于控制是否使用GPU
# 说明文档:https://paddlex.readthedocs.io/zh_CN/develop/appendix/parameters.html#gpu
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
from paddlex.cls import transforms
import paddlex as pdx
# 定义训练和验证时的transforms
# API说明https://paddlex.readthedocs.io/zh_CN/develop/apis/transforms/cls_transforms.html
train_transforms = transforms.Compose([
transforms.RandomCrop(crop_size=224), transforms.RandomHorizontalFlip(),
transforms.Normalize()
])
eval_transforms = transforms.Compose([
transforms.ResizeByShort(short_size=256),
transforms.CenterCrop(crop_size=224), transforms.Normalize()
])
# 定义训练和验证所用的数据集
# API说明:https://paddlex.readthedocs.io/zh_CN/develop/apis/datasets.html#paddlex-datasets-imagenet
train_dataset = pdx.datasets.ImageNet(
data_dir='dog_cls',
file_list='dog_cls/train_list.txt',
label_list='dog_cls/labels.txt',
transforms=train_transforms,
shuffle=True)
eval_dataset = pdx.datasets.ImageNet(
data_dir='dog_cls',
file_list='dog_cls/val_list.txt',
label_list='dog_cls/labels.txt',
transforms=eval_transforms)
# 初始化模型,并进行训练
# 可使用VisualDL查看训练指标,参考https://paddlex.readthedocs.io/zh_CN/develop/train/visualdl.html
num_classes = len(train_dataset.labels)
model = pdx.cls.ResNet101_vd_ssld(num_classes=num_classes)
# API说明:https://paddlex.readthedocs.io/zh_CN/develop/apis/models/classification.html#train
# 各参数介绍与调整说明:https://paddlex.readthedocs.io/zh_CN/develop/appendix/parameters.html
model.train(
num_epochs=100,
train_dataset=train_dataset,
train_batch_size=20,
eval_dataset=eval_dataset,
lr_decay_epochs=[4, 6, 8],
learning_rate=0.025,
save_dir='output/ResNet101_vd_ssld',
use_vdl=True)
# 预测
result = model.predict('./dog_cls/cairn/n107348.jpg', topk=5) #记得图片路径
print("Predict Result:", result)
由于PaddleX训练的效果不是特别好,因此选择了EasyDL进行训练
点击创建,进行数据集的创建 点击导入,可以以多种方式导入数据集,本文以本地导入压缩包 本文数据集可以前往AI studio下载,点击进入查看Tsinghua Dogs数据集
点击训练模型进入下图,选择公有云部署,选择AutoDL Transfer算法,添加数据集,增加识别结果为其他的默认分类,选择默认配置,点击开始训练 tips:当然上述的算法以及配置都可以根据自己的需求进行调整
点击进入: 基于EasyDL的130种狗狗识别分类
技术栈:Electron
官网:https://www.electronjs.org/ 使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序
node -v
npm -v
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm -v
mkdir dog_cls_win && cd dog_cls_win
cnpm init -y
cnpm i --save-dev electron
对package.json和main.js文件进行相关配置,之后进行打包
cnpm i electron-builder --dev
npm run dist
点击下载HBuilderX 下载App开发版 点击新建项目 填写相关参数创建项目 点击mainfest.json进行配置,点击发行->原生APP-云打包 填写相关参数进行打包 点击打开目录,查看打包后的apk,安装到安卓手机客户端
狗狗识别安卓端下载地址: https://leigang.lanzous.com/iL10kk05egf
注册微信小程序,下载微信小程序开发者工具,基于Color UI进行开发.
期待微信小程序上线!!!