首页 游戏 软件 资讯 排行榜 专题
首页
AI资讯
【AI达人创造营第二期】电机异音AI诊断

【AI达人创造营第二期】电机异音AI诊断

热心网友
16
转载
2025-07-23
本项目针对电机异音AI诊断,利用飞桨平台构建模型。因人工质检易误判,项目基于振动信号,用机器学习技术实现智能检验,要求故障电机零漏检。通过复制正样本解决数据不平衡,修改损失函数,用全连接层训练。结果显示正样本全对,负样本准确率91%,可改进为卷积层并设验证集。

【ai达人创造营第二期】电机异音ai诊断 - 游乐网

电机异音AI诊断

本项目为飞桨领航团AI达人创造营第二期作业。

项目背景

在电机生产线上普遍采用人工听音的方法分辨良、次品,不仅成本高,而且重复、单调的听音工作极易引起人员疲劳,容易出现误判,若个别不良品混入整批成品中,会给工厂带来严重经济损失,甚至严重影响产品声誉。

(数据对应的比赛)本次大赛要求参赛者基于加速度传感器采集的振动信号,利用机器学习、深度学习等人工智能技术,设计智能检验的算法,要求算法对故障电机不能有漏识别,在召回100%的情况下,尽量提高预测准确率,以达到替代人工质检的目的。

数据说明

文件清单:

Motor_tain.zip:用于训练的采集数据,其中,文件夹“正样本”包含30个异常电机的数据样本,文件夹“负样本”包含500个正常电机的数据样本;Motor_testP.zip:用于测试的采集数据,包含500个电机的数据样本;
文件说明:采集数据时是分别对电机正转、反转时的振动信号进行采集。也就是说每台电机有两条数据,其中F代表正转,B代表反转。每条数据包含两路振动信号,数据文件命名规则:编号_旋转方向.csv。比赛链接:https://jingsai.julyedu.com/v/25820185621432447/dataset.jhtml

项目方案

每个样本包含F和B两份csv,每个csv文件包含79999×2个数据。使用多个全连接层进行预测。使用的损失函数为交叉熵。

模型如下:

【AI达人创造营第二期】电机异音AI诊断 - 游乐网        

处理方案

重采样:针对数据不平衡,复制多份正向样本,从而训练时达到类别均衡采样的效果修改损失:针对题目要求的保证TP最大,尽可能减小FP的问题,将label==1的损失权重设定为1.1。

代码

预处理

In [1]
! unzip -oq data/data31822/Motor_tain.zip! unzip -oq data/data31822/Motor_testP.zip
登录后复制    In [31]
import ostrain_pos_dir='Motor_tain/╒¤╤∙▒╛/'train_neg_dir='Motor_tain/╕║╤∙▒╛/'# 生成三份文件便于按照类别比例划分with open('train_pos.txt','w') as f:    for item in list(set([item[:len(item)-6] for item in os.listdir(train_pos_dir)])):        if '.ipynb' not in item:            f.write(train_pos_dir+item+'\t1\n')with open('train_neg.txt','w') as f:    for item in list(set([item[:len(item)-6] for item in os.listdir(train_neg_dir)])):        if '.ipynb' not in item:            f.write(train_neg_dir+item+'\t0\n')with open('train.txt','w') as f:    for item in list(set([item[:len(item)-6] for item in os.listdir(train_pos_dir)])):        if '.ipynb' not in item:            for i in range(int(500/30)):                f.write(train_pos_dir+item+'\t1\n')    for item in list(set([item[:len(item)-6] for item in os.listdir(train_neg_dir)])):        if '.ipynb' not in item:            f.write(train_neg_dir+item+'\t0\n')
登录后复制    

构造读取器

In [33]
import paddleimport numpy as npimport paddle.vision.transforms as Tfrom PIL import Imageimport pandas as pdclass MyDateset(paddle.io.Dataset):    def __init__(self,txt_dir):        super(MyDateset, self).__init__()                self.path=[]        self.label=[]        with open(txt_dir,'r') as f:            for line in f.readlines():                self.path.append(line.split('\t')[0])                self.label.append(line.split('\t')[1][0])    def __getitem__(self, index):        path = self.path[index]        label = int(self.label[index])        F=pd.read_csv(path+'_F.csv')        B=pd.read_csv(path+'_B.csv')        F=paddle.to_tensor(F.values).flatten(0).astype('float32')        B=paddle.to_tensor(B.values).flatten(0).astype('float32')        label = np.array(label).astype('int64')        return F,B,label    def __len__(self):        return len(self.label)
登录后复制    In [34]
train_dataset=MyDateset('train.txt')train_dataloader = paddle.io.DataLoader(    train_dataset,    batch_size=16,    shuffle=True,    drop_last=False)for step, data in enumerate(train_dataloader):    F, B, label = data    print(step, F.shape, B.shape, label.shape)    break
登录后复制        
0 [16, 159998] [16, 159998] [16]
登录后复制        

构造网络模型

In [35]
class MyNet(paddle.nn.Layer):    def __init__(self):        super(MyNet,self).__init__()        self.fc_F = paddle.nn.Linear(in_features=159998, out_features=2000)        self.fc_B = paddle.nn.Linear(in_features=159998, out_features=2000)        self.fc_1  = paddle.nn.Linear(in_features=4000, out_features=1000)        self.fc_2  = paddle.nn.Linear(in_features=1000, out_features=200)        self.fc_3  = paddle.nn.Linear(in_features=200, out_features=2)    def forward(self,F,B):        F = self.fc_F(F)        B = self.fc_B(B)        x = paddle.concat([F,B],axis=-1)        x = self.fc_1(x)        # x = paddle.nn.functional.relu(x)        x = self.fc_2(x)        # x = paddle.nn.functional.relu(x)        x = self.fc_3(x)        return x
登录后复制    

训练

In [38]
model = MyNet()model.train()max_epoch=10opt = paddle.optimizer.SGD(learning_rate=0.001, parameters=model.parameters())now_step=0for epoch in range(max_epoch):    for step, data in enumerate(train_dataloader):        now_step+=1        F, B, label = data        pre = model(F,B)        loss = paddle.nn.functional.cross_entropy(pre,label,weight=paddle.to_tensor([1,1.1]),reduction='mean')        loss.backward()        opt.step()        opt.clear_gradients()        if now_step%100==0:            print("epoch: {}, batch: {}, loss is: {}".format(epoch, step, loss.mean().numpy()))paddle.save(model.state_dict(), 'model.pdparams')
登录后复制        
epoch: 1, batch: 37, loss is: [0.631444]epoch: 3, batch: 13, loss is: [0.63104683]epoch: 4, batch: 51, loss is: [0.63319224]epoch: 6, batch: 27, loss is: [0.5660453]epoch: 8, batch: 3, loss is: [0.5968682]epoch: 9, batch: 41, loss is: [0.5927209]
登录后复制        

查看混淆矩阵

格式为

In [39]
# mydict = paddle.load("model_1.pdparams")# model.set_state_dict(mydict)record=np.zeros([2,2])for i in range(len(train_dataset)):    F,B,label=train_dataset[i]    pre=model(F,B)    # print(f'real label: {label} pre label: {np.argmax(pre.numpy())}')    record[label.tolist()][np.argmax(pre.numpy())]+=1record
登录后复制        
array([[455.,  45.],       [  0., 480.]])
登录后复制                

总结

本项目使用了极简方式构造了一个电机异音AI诊断模型,最终结果表明模型可以将全部正样本(异常)都判断正确,并且负样本的占比为9%。除去模型效果的因素外,本项目有以下不足,可以继续改进:

本项目构造了一个简单的全连接层网络模型,但由于数据量较大,需要在第一个全连接层尽可能地压缩节点数。可以尝试使用卷积替换全连接层。由于样本量较少(正向样本仅30个),仅设置了训练集,没有设定验证集。
来源:https://www.php.cn/faq/1423613.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Excel身份证信息高效录入方法与实用技巧详解
AI教程
Excel身份证信息高效录入方法与实用技巧详解

Excel中输入身份证号码易出错且格式难控制。可采用直接输入并仔细核对、使用数据验证功能限制位数、利用公式提取出生日期信息,以及批量复制粘贴时确保号码独立分列等方法,以提高录入效率和准确性。

热心网友
05.23
Excel快速删除空白行技巧高效整理数据
AI教程
Excel快速删除空白行技巧高效整理数据

Excel中的空白行会影响排序、筛选和数据分析。针对不同情况,可采用多种方法清理:手动删除适用于少量数据;筛选功能可处理散布的空白行;快捷键能快速定位空白单元格;VBA宏可自动删除大量无规律的完全空行。根据数据情况和操作习惯选择合适方法,能显著提升数据整理效率。

热心网友
05.23
PDF翻译方法详解:三种高效工具与技巧轻松搞定文档翻译
AI教程
PDF翻译方法详解:三种高效工具与技巧轻松搞定文档翻译

PDF翻译需求广泛,各行业侧重点不同:法律需精准合规,学术求准确可读,商业重快速贴合语境。当前工具如WPSAI提升效率,技术趋势向自动化、专业化发展。高效翻译应结合策略与工具,根据格式、质量、速度选择方案,并注重人机协作、人工校对及操作便捷与数据安全。

热心网友
05.23
免费PDF在线翻译工具推荐与高效选择指南
AI教程
免费PDF在线翻译工具推荐与高效选择指南

免费在线翻译PDF文件通常包含五个步骤:选择合适工具、上传文件、设定目标语言、开始翻译及下载结果。该服务广泛应用于教育、商务等领域,显著提升跨语言信息处理效率。选择工具时需权衡操作便捷性、翻译准确度及服务稳定性,以匹配不同场景下的核心需求。

热心网友
05.23
Excel时间差计算技巧详解,高效办公必备方法
AI教程
Excel时间差计算技巧详解,高效办公必备方法

Excel中计算时间差能有效提升工作效率。直接相减可得到时间格式差值,乘以24或1440可转换为小时或分钟数值,使用TEXT函数能自定义显示格式。掌握这些方法可灵活应对项目周期统计、工作时长计算等多种场景。

热心网友
05.23

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

比特币价格预测:Coinbase溢价113美元揭示机构买入,BTC能否突破历史新高
web3.0
比特币价格预测:Coinbase溢价113美元揭示机构买入,BTC能否突破历史新高

近期,比特币价格在突破12万美元大关后持续高位盘整,市场目光聚焦于其下一步走向。一个关键的链上指标——Coinbase溢价指数,正释放出强烈的看涨信号,暗示以美国为首的机构资金可能正在为新一轮行情蓄力。 Coinbase溢价飙升:机构买盘强势回归的明确信号 根据权威链上数据分析平台CryptoQua

热心网友
05.23
比特币金融复兴:重塑行业的变革者与被改变者是谁
web3.0
比特币金融复兴:重塑行业的变革者与被改变者是谁

比特币金融化浪潮:从数字黄金到生产性资产的范式革命 在经历了超过十五年的发展后,比特币(BTC)正站在一个历史性的十字路口。长期以来,其“数字黄金”的标签深入人心,主要被视为一种价值存储工具。然而,一场深刻的变革正在发生:比特币正从一种静态的储值资产,向具备生息能力和金融生产力的资本形态演进。这场被

热心网友
05.23
Metaplanet斥资6亿美元买入比特币 跻身全球企业BTC持仓前四
web3.0
Metaplanet斥资6亿美元买入比特币 跻身全球企业BTC持仓前四

目录 Metaplanet的比特币收益率在2024年底飙升至300% 上市公司持有比特币总量达100万枚 市场总是充满戏剧性。就在2024年底,日本上市公司Metaplanet的比特币收益率一度冲高至惊人的309 8%。这意味着,其每股对应的比特币持仓价值在短期内增长了超过三倍。进入2025年后,这

热心网友
05.23
Excel身份证信息高效录入方法与实用技巧详解
AI教程
Excel身份证信息高效录入方法与实用技巧详解

Excel中输入身份证号码易出错且格式难控制。可采用直接输入并仔细核对、使用数据验证功能限制位数、利用公式提取出生日期信息,以及批量复制粘贴时确保号码独立分列等方法,以提高录入效率和准确性。

热心网友
05.23
Excel快速删除空白行技巧高效整理数据
AI教程
Excel快速删除空白行技巧高效整理数据

Excel中的空白行会影响排序、筛选和数据分析。针对不同情况,可采用多种方法清理:手动删除适用于少量数据;筛选功能可处理散布的空白行;快捷键能快速定位空白单元格;VBA宏可自动删除大量无规律的完全空行。根据数据情况和操作习惯选择合适方法,能显著提升数据整理效率。

热心网友
05.23