"AI转型"这个词在制造业已经喊了至少五年,但当我真正想把它落地到产线时,却发现连开发环境都搭不起来。上周试着跑通一个简单的缺陷检测模型,光是CUDA版本和PyTorch的兼容问题就折腾了两天——这还是在没考虑产线数据安全协议的前提下。
我们车间里价值千万的数控机床每天产生20GB的加工日志,质量检测工位的高清相机每分钟产生300张图像。理论上这些都是AI的黄金训练数据,但现实是:日志字段没有统一规范,图像命名规则随班组交接变化,更别提那些存在本地Excel里的工艺参数表。
在注塑车间的试点项目中,我们用了三个土办法解决数据混乱:
<设备ID>_<时间戳>_<振动值/电流值/温度值>三元组<批次号>_<缺陷类型>_<严重程度>.jpg命名,并同步填写MES系统中的对应表单关键点:不要追求完美数据中台,先确保字段可追溯。我们甚至允许初期存在10%的脏数据,但强制要求所有数据必须带时间戳和操作员ID。
车间办公电脑配置有限,我们摸索出一套低成本方案:
bash复制# 使用conda避免污染系统环境
conda create -n factory_ai python=3.8
conda install pytorch==1.12.1 torchvision==0.13.1 cudatoolkit=11.3 -c pytorch
pip install albumentations==1.2.1 # 工业图像增强必备库
这套配置在轴承缺陷检测任务中,batch_size=16时训练速度达到18it/s,比我们IT部门提供的云环境还快30%。
初期我们训练的注塑件毛刺检测模型测试集准确率98%,上线后实际漏检率却高达40%。后来发现测试集都是理想光照下的样品,而真实产线存在:
解决方案:用生成对抗网络模拟脏数据。在数据增强阶段加入:
python复制import cv2
def add_industrial_noise(img):
# 模拟油渍
img = cv2.circle(img, (random_x, random_y), radius=5, color=(180,180,50), thickness=-1)
# 添加运动模糊
kernel_size = random.randint(3,7)
kernel = np.ones((kernel_size, kernel_size)) / (kernel_size**2)
return cv2.filter2D(img, -1, kernel)
某冲压件检测项目要求200ms内完成推理,但原始模型需要500ms。通过以下优化达标:
| 周数 | 任务 | 交付物 |
|---|---|---|
| 1-2 | 选取高价值痛点工序 | 3个候选工序的ROI分析表 |
| 3-4 | 搭建数据采集原型 | 带时间戳的标准化数据集 |
| 5-6 | 开发第一个POC模型 | 可演示的Jupyter Notebook |
| 7-8 | 部署到车间测试机台 | 带报警功能的推理服务 |
| 9-12 | 收集反馈迭代模型 | V2.0模型及部署手册 |
在齿轮箱异响诊断项目中,我们做了个实验:
关键发现:老师傅关注的"振动节奏感"对应着频域的谐波分量,我们后来在特征工程中专门加入了FFT谐波能量比特征。
现在我的工作台放着三本书:《PyTorch实战》《数控机床维修手册》《工厂物理学》,这大概就是制造业AI工程师的生存现状——左手拿万用表,右手调学习率。上周终于有个缺陷检测模型稳定运行超过30天,车间主任说:"这玩意比新来的大学生眼神好",这就是最好的验收报告。