Use wechaty to apply pytorch model via WeChat.
想法
在跑深度学习模型时,我时常会感觉调用一个模型好复杂,需要写好长好长的代码,而我又没有学过小程序开发,于是想到做一个用微信快速调用模型的小玩意儿。
本项目即是通过wechaty与微信通讯,利用fastapi中转数据并调用pytorch模型的实践。
同时,目前该项目仅仅作为一个MVP(最小可行产品),功能可能并不完善,在未来或许会加入模型训练完毕提醒/模型训练意外终止提醒等功能,敬请期待~
完整代码见https://github.com/lyleshaw/WeChaty-Torch
原理
- 用户在微信发送图片–>
- –>wechaty收到图片并进行base64后post请求到后端–>
- –>使用fastapi开发的后端收到图片的base64编码后调用模型–>
- –>模型给与预测与置信度表传给后端–>
- –>后端收到后向wechaty响应–>
- –>wechaty收到数据后发送给用户.
文件结构
wechaty-torch.ts
typescript文件,使用wechaty与微信通讯;main.py
后端文件,基于fastapi开发,中转图片数据;model.py
模型调用文件,给出预测和置信度;model.pth
**(由于模型文件过大,请按快速开始的说明手动下载)**模型文件(二进制),使用WideResNet在CIFAR-10数据集上进行训练,测试集准确率91.22%.
依赖库
typescript:请按照wechaty文档安装.
python:fastapi,uvicorn,torch,numpy,PIL
快速开始
请确保您已将所有依赖环境安装成功
- 点击这里 下载
model.pth
,并将model.pth
放到项目文件夹下 - 在
wechaty-torch.ts
文件的const token = 'YOUR_TOKEN_HERE'
处填入您的token(获取方式见wechaty文档); - 在
model.py
文件的os.chdir("Your PATH")
处修改为您的文件路径; - 运行
main.py
后运行wechaty-torch.ts
.
开发过程
wechaty部分
首先创建一个名叫wechaty-torch的bot;
import {
Message, Wechaty } from 'wechaty'
import {
ScanStatus } from 'wechaty-puppet'
import {
PuppetPadplus } from 'wechaty-puppet-padplus'
import QrcodeTerminal from 'qrcode-terminal'
var request = require('request')
const token = 'YOUR_TOKEN_HERE'
const puppet = new PuppetPadplus({
token,
})
const name = 'wechaty-torch'
const bot = new Wechaty({
name: name,
puppet,
})
然后扫码登录后,显示登录帐号;
bot.on('scan', (qrcode, status) => {
if (status === ScanStatus