Compare commits
9 Commits
36b5720975
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 84b4437b76 | |||
| 4511cf46e8 | |||
| 30c95f3f39 | |||
| 7d70e994f9 | |||
| f3b18233a4 | |||
| d83a58952f | |||
| 098d331174 | |||
| 8b076c66c6 | |||
| 952709fa62 |
@ -9,9 +9,23 @@ jobs:
|
|||||||
- name: Check out repository code
|
- name: Check out repository code
|
||||||
uses: https://gitee.com/mirror-actions/checkout@v4
|
uses: https://gitee.com/mirror-actions/checkout@v4
|
||||||
- run: cd ${{ gitea.workspace }}
|
- run: cd ${{ gitea.workspace }}
|
||||||
|
- name: Insert post image
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
post_content="$(cat post.html)"
|
||||||
|
find . -type f -name "*.md" -print0 | while IFS= read -r -d '' file; do
|
||||||
|
{
|
||||||
|
printf '\n'
|
||||||
|
printf '%s\n' "$post_content"
|
||||||
|
} >> "$file"
|
||||||
|
done
|
||||||
- run: npx refs-cli
|
- run: npx refs-cli
|
||||||
|
- name: patch js path
|
||||||
|
run: |
|
||||||
|
find dist -type f -name "*.html" -exec sed -i 's|/js/|/qrh/js/|g' {} +
|
||||||
|
find dist -type f -name "*.html" -exec sed -i 's|/data\.js|/qrh/data.js|g' {} +
|
||||||
- name: copy exports to www
|
- name: copy exports to www
|
||||||
run: |
|
run: |
|
||||||
mv /var/www/qrh /var/www/qrh.bak
|
rm -rf /var/www/qrh
|
||||||
mv ${{ gitea.workspace }}/dist /var/www/qrh
|
mv ${{ gitea.workspace }}/dist /var/www/qrh
|
||||||
- run: echo "🍏 This job's status is ${{ job.status }}."
|
- run: echo "🍏 This job's status is ${{ job.status }}."
|
||||||
253
docs/智能化实验.md
Normal file
253
docs/智能化实验.md
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
自动滴定控制平台速查清单
|
||||||
|
===
|
||||||
|
|
||||||
|
这是一份面向最终用户的自动滴定控制平台操作速查表,帮助您零代码基础快速完成“采集-训练-滴定-分析”的完整实验闭环。
|
||||||
|
|
||||||
|
快速入门
|
||||||
|
---
|
||||||
|
|
||||||
|
### 启动软件
|
||||||
|
|
||||||
|
双击运行目录下的启动程序(如 `run_ui.bat`),软件会自动在浏览器中打开操作界面。
|
||||||
|
软件左侧为**导航栏**,用于切换页面;右侧为**主操作区**。
|
||||||
|
|
||||||
|
### 核心工作流
|
||||||
|
<!--rehype:wrap-class=col-span-2-->
|
||||||
|
|
||||||
|
- **第一步:数据采集** -> 组装并控制泵和相机,收集滴定过程中不同颜色/状态的照片。
|
||||||
|
- **第二步:人工整理** -> 将照片按状态分别放入不同名称的文件夹中。
|
||||||
|
- **第三步:模型训练** -> 调整“学习计划”,让 AI 认识这些颜色/状态。
|
||||||
|
- **第四步:自动滴定** -> 设置“终点规则”,让 AI 接管设备自动完成滴定并停止。
|
||||||
|
- **第五步:滴定回放** -> 事后查看历史视频和数据曲线。
|
||||||
|
|
||||||
|
第一步:数据采集
|
||||||
|
---
|
||||||
|
<!--rehype:body-class=cols-3-->
|
||||||
|
|
||||||
|
### 1. 硬件准备
|
||||||
|
|
||||||
|
| 检查项 | 状态说明 |
|
||||||
|
| ---- | ---- |
|
||||||
|
| `注射泵` | 确保电源开启,用 USB 数据线连接电脑。 |
|
||||||
|
| `摄像头` | 确保对准滴定瓶,且环境光线充足、稳定。 |
|
||||||
|
<!--rehype:className=show-header-->
|
||||||
|
|
||||||
|
*注意:如果未连接硬件,软件会自动隐藏“数据采集”和“自动滴定”菜单。*
|
||||||
|
### 2. 采集图像
|
||||||
|
<!--rehype:wrap-class=col-span-2-->
|
||||||
|
|
||||||
|
- 点击左侧导航栏进入 **【数据采集】** 页面
|
||||||
|
- **设置参数**:输入注射泵的`推注速度`和`体积`,以及相机的`抓拍间隔`。
|
||||||
|
- **启动**:点击【滴液】按钮。泵开始推进设定的体积,相机自动连续拍照。
|
||||||
|
- **结束**:完成后点击【关闭相机】。**注意不是【停止】**
|
||||||
|
- **查看**:点击【打开目录】即可查看刚刚拍摄的照片。(也许窗口被最小化了)
|
||||||
|
- **重置**:点击【更换目录】将不同批次滴定过程分开。
|
||||||
|
<!--rehype:className=style-timeline-->
|
||||||
|
|
||||||
|
|
||||||
|
### 如果右侧没有显示目标摄像头
|
||||||
|
|
||||||
|
- 拖动`采集参数配置`处`摄像头编号`
|
||||||
|
- 点击`启动相机`和`关闭相机`,观察右侧预览。
|
||||||
|
<!--rehype:className=style-timeline-->
|
||||||
|
|
||||||
|
### 如果设置错了想停止
|
||||||
|
<!--rehype:className=style-arrow-->
|
||||||
|
|
||||||
|
- 点击【停止】,这不会关闭摄像头
|
||||||
|
<!--rehype:className=style-timeline-->
|
||||||
|
|
||||||
|
### 如果软件意外退出了,注射泵里还有溶液
|
||||||
|
|
||||||
|
- 点击【重置体积目录】
|
||||||
|
- 输入注射泵读数
|
||||||
|
<!--rehype:className=style-timeline-->
|
||||||
|
|
||||||
|
|
||||||
|
第二步:人工整理数据
|
||||||
|
---
|
||||||
|
<!--rehype:body-class=cols-1-->
|
||||||
|
|
||||||
|
AI 需要您亲自告诉它什么是“起点”,什么是“终点”。这是最重要的一步!
|
||||||
|
|
||||||
|
### 整理数据
|
||||||
|
- 打开您电脑上的项目文件夹,找到与启动程序在同一个文件夹内的 `data/` 目录。(如果不存在则创建)
|
||||||
|
- 在里面创建几个文件夹,用滴定状态命名(建议用英文,例如:`red` 代表红色起点,`blue` 代表蓝色终点)。
|
||||||
|
*注意:请直接在 `data/` 下创建文件夹,千万不要在 `clear` 或 `pink` 等分类文件夹里再创建子文件夹。*
|
||||||
|
- 打开刚才采集保存在 `Input/` 下的照片,根据实际颜色挑出来,分别复制放入您刚建好的对应状态文件夹中。
|
||||||
|
*提示:每个文件夹里的照片数量尽量差不多,不要有的放了几千张,有的只有几张,这样 AI 会“偏科”。*
|
||||||
|
<!--rehype:className=style-timeline-->
|
||||||
|
|
||||||
|
第三步:AI 模型训练
|
||||||
|
---
|
||||||
|
<!--rehype:body-class=cols-2-->
|
||||||
|
|
||||||
|
准备好照片后,点击进入 **【模型训练】** 页面,告诉 AI 怎么学习。这些参数就像是给 AI 安排的“课程表”。
|
||||||
|
|
||||||
|
### 基础训练参数
|
||||||
|
|
||||||
|
| 参数名称 | 白话解释 |
|
||||||
|
| ---- | ---- |
|
||||||
|
| **模型文件名** | 模型名。如果输入以前用过的名字,AI 会在原来基础上继续学。 |
|
||||||
|
| **训练轮数** | 数字越大(比如 100)学得越细,但耗时越长。 |
|
||||||
|
| **数据批大小** | 同时看几张照片。显卡好可以填大点(如 128),普通电脑填小点(如 32),填太大电脑容易卡死。**<red>一定小于总照片数的四分之一</red>** |
|
||||||
|
| **学习率** | AI 纠正错误的步伐大小。太大容易“学偏”,太小学得慢,保持默认就好。 |
|
||||||
|
| **日志/保存间隔** | 每学多少次就在屏幕上打印一下成绩,或者把模型保存一下。 |
|
||||||
|
<!--rehype:className=show-header-->
|
||||||
|
|
||||||
|
### 高级训练参数
|
||||||
|
|
||||||
|
| 参数名称 | 白话解释 |
|
||||||
|
| ---- | ---- |
|
||||||
|
| **验证集比例** | 建议留 20% (0.2),如果数据集很小可以适度降低。 |
|
||||||
|
| **随机种子** | 一个魔法数字。只要这个数字不变,每次训练抽取的考试题都是同一批。 |
|
||||||
|
| **特征/隐藏层维度** | 决定 AI 大脑的复杂程度。一般不用改,除非你觉得 AI 实在学不会太复杂的图片。 |
|
||||||
|
| **加载到显卡** | 将训练集加载到显存。如果有独显,请勾选。 |
|
||||||
|
| **工作线程数** | CPU 越好数字可以越大,如果报错就改回 0。 |
|
||||||
|
<!--rehype:className=show-header-->
|
||||||
|
|
||||||
|
### loss值长期卡在0.6~0.7
|
||||||
|
|
||||||
|
loss值长期卡在0.6~0.7代表着模型完全没能学习到任何信息
|
||||||
|
|
||||||
|
- 检查图片分类是否有误。
|
||||||
|
|
||||||
|
### 最小训练参数
|
||||||
|
|
||||||
|
您至少需要填写以下内容
|
||||||
|
- 训练集路径
|
||||||
|
- 模型名称
|
||||||
|
|
||||||
|
### 是不是训练越久越好
|
||||||
|
|
||||||
|
不是,在loss显著降低后再训练10轮左右就可以停止了。
|
||||||
|
|
||||||
|
### 训练的时挺好,实际完全离谱
|
||||||
|
|
||||||
|
这种情况被称为【过拟合】。可能由于以下原因
|
||||||
|
|
||||||
|
- 训练轮数过多
|
||||||
|
- 训练数据过少
|
||||||
|
- 训练数据偏置(一个类别很多,另一个很少)
|
||||||
|
- 单纯运气不好,修改种子再试试
|
||||||
|
|
||||||
|
### loss值反复严重波动
|
||||||
|
|
||||||
|
训练不稳定。
|
||||||
|
|
||||||
|
- 如loss已经显著降低,停止训练
|
||||||
|
- 降低`学习率`
|
||||||
|
- 降低`数据批大小`
|
||||||
|
- 训练数据过少
|
||||||
|
|
||||||
|
|
||||||
|
第四步:全自动滴定
|
||||||
|
---
|
||||||
|
<!--rehype:body-class=cols-2-->
|
||||||
|
|
||||||
|
点击进入 **【自动滴定】** 页面。
|
||||||
|
|
||||||
|
### 推注控制参数 (左侧)
|
||||||
|
|
||||||
|
控制注射泵怎么滴液的参数:
|
||||||
|
|
||||||
|
| 参数名称 | 白话解释 |
|
||||||
|
| ---- | ---- |
|
||||||
|
| **滴定速度** | 注射泵推进的快慢,单位是 mL/min。越快滴得越猛。 |
|
||||||
|
| **单次时间** | 每次让泵推进几秒钟。 |
|
||||||
|
| **滑窗时长** | 告诉 AI:“你不要看一眼就下结论,往前倒带回忆过去 X 秒的画面一起综合判断”。可以防止短时间变色褪色导致误判。 |
|
||||||
|
| **保存图像** | 勾选后,不仅会让 AI 看,还会把每一滴过程的照片都存下来。 |
|
||||||
|
<!--rehype:className=show-header-->
|
||||||
|
|
||||||
|
### 终点判定参数 (右侧)
|
||||||
|
|
||||||
|
控制 AI 如何判断“滴定结束”的参数:
|
||||||
|
|
||||||
|
| 参数名称 | 白话解释 |
|
||||||
|
| ---- | ---- |
|
||||||
|
| **稳定判定时长** | 当 AI 认为到了终点时,必须持续盯着看 X 秒,确认颜色不再退回去,才真正叫停。 |
|
||||||
|
| **终点判定比例** | 在上面的“滑窗时长”内,如果超过这个比例(比如 60%)的画面都被认作是终点颜色,AI 才会进入判定倒计时。 |
|
||||||
|
| **滴液-检测间隔** | 滴进一滴液体后,等几秒钟再让 AI 去看画面。主要是给液体搅匀、反应变色的时间。 |
|
||||||
|
| **初始累计体积** | 设为注射器上的读数。 |
|
||||||
|
<!--rehype:className=show-header-->
|
||||||
|
|
||||||
|
## 自动滴定异常检查单
|
||||||
|
|
||||||
|
依次执行,如不满足则查下一条。
|
||||||
|
|
||||||
|
### 未能开始
|
||||||
|
|
||||||
|
**当 <red>运行程序后完全没变色就停止了</red> 查**
|
||||||
|
|
||||||
|
|1|2|
|
||||||
|
|-|-|
|
||||||
|
|当前帧|未显示溶液|
|
||||||
|
|
||||||
|
修改`摄像头编号`
|
||||||
|
|
||||||
|
|1|2|
|
||||||
|
|-|-|
|
||||||
|
|最近预测结果|终点类别|
|
||||||
|
|训练时loss |< 0.1|
|
||||||
|
|
||||||
|
查[过拟合](#训练的时挺好实际完全离谱)
|
||||||
|
|
||||||
|
|1|2|
|
||||||
|
|-|-|
|
||||||
|
|如第2条不满足||
|
||||||
|
|
||||||
|
模型不好,重新训练。
|
||||||
|
|
||||||
|
|1|2|
|
||||||
|
|-|-|
|
||||||
|
|如第1条不满足,且||
|
||||||
|
|
||||||
|
|现象|可能原因|
|
||||||
|
|-|-|
|
||||||
|
|当前状态|wait|
|
||||||
|
|
||||||
|
【终点类别】设错了
|
||||||
|
|
||||||
|
|
||||||
|
### 误判严重
|
||||||
|
如果滴液入水瞬间变色后就停下了。
|
||||||
|
- 加大【滑窗时长】(如 10 秒)
|
||||||
|
- 加大【稳定判定时长】(如 5 秒)
|
||||||
|
- 提高【终点判定比例】(如 80%)
|
||||||
|
|
||||||
|
### 严重过量
|
||||||
|
**当 <red>如果溶液显著过量,但程序没能停下</red> 查**
|
||||||
|
|
||||||
|
|1|2|
|
||||||
|
|-|-|
|
||||||
|
|`单批体积`|大于1mL|
|
||||||
|
|
||||||
|
减小`单次时间`或`速度`
|
||||||
|
|
||||||
|
|1|2|
|
||||||
|
|-|-|
|
||||||
|
|`最近预测结果`|非终点类别|
|
||||||
|
|`近期分类结果分布`|非终点主导|
|
||||||
|
|
||||||
|
模型不好
|
||||||
|
|
||||||
|
|1|2|
|
||||||
|
|-|-|
|
||||||
|
|第二条不满足|
|
||||||
|
|最近预测结果|反复改变|
|
||||||
|
|
||||||
|
模型不好
|
||||||
|
|
||||||
|
|
||||||
|
第五步:结果回放与分析
|
||||||
|
---
|
||||||
|
<!--rehype:body-class=cols-2-->
|
||||||
|
|
||||||
|
### 滴定回放
|
||||||
|
- 选择您刚做完的实验
|
||||||
|
- 您将会看到滴定过程每一秒AI的状态和决策。
|
||||||
|
|
||||||
|
### 曲线分析
|
||||||
|
|
||||||
|
软件会自动为您画出一张图。横坐标是“体积”,纵坐标是“颜色状态的概率”。
|
||||||
|
|
||||||
23
post.html
Normal file
23
post.html
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
## END
|
||||||
|
|
||||||
|
<!--rehype:wrap-style=text-align:center;-->
|
||||||
|
<img
|
||||||
|
src="https://flt6.top/today"
|
||||||
|
class="responsive-img"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.responsive-img {
|
||||||
|
width: 50%;
|
||||||
|
height: auto;
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px), (orientation: portrait) {
|
||||||
|
.responsive-img {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -2,4 +2,5 @@ flt QRH
|
|||||||
===
|
===
|
||||||
|
|
||||||
[实验](./docs/实验.md) <!--rehype:style=background:rgb(79 91 147);-->
|
[实验](./docs/实验.md) <!--rehype:style=background:rgb(79 91 147);-->
|
||||||
|
[智能化实验](./docs/智能化实验.md) <!--rehype:style=background: #0F4954;-->
|
||||||
<!--rehype:class=home-card-->
|
<!--rehype:class=home-card-->
|
||||||
Reference in New Issue
Block a user