Thanks to visit codestin.com
Credit goes to github.com

Skip to content

nonese/OnlineTraining

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

187 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

在线训练与预测平台

本仓库提供一个简易的图片分类训练与预测系统, 可用于学校学生上课体验项目中的图像收集与分析。 后端基于 Python Flask,提供 JSON API; 前端位于 frontend 目录,采用 Vue 的 VitePress 构建。

虚拟化环境

python -m venv .venv
source .venv/bin/activate  # Windows 使用 .venv\Scripts\activate

项目部署

  1. 准备 Python 3.8+ 环境,安装 Flask、TensorFlow 等依赖。 若需更准确的人脸比对效果,可额外安装 face_recognition 库: pip install face_recognition。 安装前会遇到cmake、dlib和numpy==1.26.9版本的环境问题。 pip install "numpy==1.26.4可以解决numpy问题;cmake和dlib安装包已经在项目中给出直接安装即可。 翻译功能依赖 argostranslate 以及对应的中英离线语言包,请预先安装: pip install argostranslate,并通过运行install_en_zh_translate.py完成导入中英互译数据。
  2. 在项目根目录执行 python app.py 启动后端服务。
  3. 安装 Node.js 后进入 frontend 目录,执行 npm install
  4. 通过 npx vitepress dev docs 启动前端开发服务器。
  5. 打开前端页面后可在首页按需配置后端地址,随后即可使用各功能。
  6. pip install的库比较多,除了上述内容以外还有flask_sock、tensorflow

SSO/OIDC 配置(兼容 OpenWebUI 变量)

后端 SSO 现在同时支持两套变量:

  • 旧变量(优先级更高):SCHOOL_SSO_*
  • OpenWebUI 风格变量:OPENID_PROVIDER_URLOAUTH_CLIENT_IDOAUTH_CLIENT_SECRETOAUTH_SCOPESOPENID_REDIRECT_URI

推荐使用 OpenWebUI 风格最小配置:

export OPENID_PROVIDER_URL="https://your-idp.example.com/realms/main"
export OAUTH_CLIENT_ID="your-client-id"
export OAUTH_CLIENT_SECRET="your-client-secret"
export OAUTH_SCOPES="openid profile email"
export OPENID_REDIRECT_URI="https://your-backend.example.com/api/sso/callback"

说明:

  • 当只设置 OPENID_PROVIDER_URL 时,后端会自动尝试读取 /.well-known/openid-configuration 并补全授权、令牌、用户信息端点。
  • 如果你同时设置了 SCHOOL_SSO_AUTH_URL/SCHOOL_SSO_TOKEN_URL/SCHOOL_SSO_USERINFO_URL,会优先使用这些显式值。

Docker 一键运行

  1. 在项目根目录构建镜像:
    docker build -t online-training:latest .
  2. 启动容器:
    docker run --rm -p 5001:5001 --name online-training online-training:latest
  3. 访问后端:
    • http://127.0.0.1:5001

说明:

  • Docker 镜像会尝试安装 face_recognition/dlib,并在构建阶段准备 C/C++ 编译环境。
  • 若目标机器资源较小,dlib 编译可能耗时较长;如构建失败,建议优先使用本机 Python/Windows EXE 运行。

使用方法

  1. 打开前端页面,先在“上传训练图片”处按类别上传样本。
  2. 在“开始训练”页面点击按钮,等待模型训练完成。
  3. 训练结束后,在“上传图片进行预测”页面选择图片即可得到分类结果。
  4. 如需连接不同的后端服务,可在前端首页调整 API 地址。

注意事项

  • train_data 目录下需按类别建立子文件夹,每个类别至少包含一张图片。
  • 模型训练在 CPU 上进行,数据量较大时耗时可能较长。
  • 若部署在不同服务器,请修改 frontend/docs/apiConfig.js 中的 API_BASE

无法访问 Google 时的 MobileNet 处理

MobileNetV2(weights='imagenet') 默认会联网下载权重。项目已支持本地权重优先加载:

  1. 准备权重文件(建议文件名):
    • mobilenet_v2_weights_tf_dim_ordering_tf_kernels_1.0_224_no_top.h5
  2. 放到项目目录:
    • models/mobilenet_v2_no_top.h5
  3. 或者通过环境变量指定任意路径:
    export MOBILENET_WEIGHTS_PATH=/abs/path/mobilenet_v2_no_top.h5
    python app.py

说明:

  • 人脸比对分支如果拿不到有效预训练权重会自动禁用(避免随机权重导致误判)。
  • 训练分支在无预训练权重时会退化到 weights=None,可以训练但效果通常会变差。

待添加功能

  1. 语音对话功能(Zipformer)模型待研究
  2. yolo-world相关支持

About

在线训练平台

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors