# industrial-bigdata **Repository Path**: chanchongleong/industrial-bigdata ## Basic Information - **Project Name**: industrial-bigdata - **Description**: A repo for 2024 industrial-bigdata fault diagnosis challenge - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2024-01-31 - **Last Updated**: 2024-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # **先进制造-制造关键装置故障诊断**[比赛](https://www.industrial-bigdata.com/Title)![bg](./pics/bg.jpg) ## Important dates 初赛阶段:2024-1-10~2024-3-10 决赛阶段:2024-3-12~2024-3-15 答辩阶段:2024-3-26~2024-3-30 本人报名日期:2024-1-16 ## Task description 本赛题,希望在不提供轴承参数的情况下,考验选手运用数据方法解决滚动轴承故障预测和分类的能力,提升工业设备智能运维的发展。 请选手构建模型,根据滚动轴承**振动波形**数据,判断轴承是否有故障及故障类别。 ## Dataset description 1. **train** 数据涵盖了**正常状态、内圈故障、外圈故障、滚动体故障**四种常见的状态类型的数据,在train文件夹中以数值0至3对样本进行标注。每类状态中包含**1000个样本**(样本以txt格式提供),每个样本的振动波形数据包括4096个数据点,共计4000个样本。 2. **test1** 自不同设备的混合了正常状态、内圈故障、外圈故障、滚动体故障四种状态类型的连续运行的振动波形,样本随机打乱顺序进行编号,共有**2000个**待分析样本(样本以txt格式提供),每个样本中包含4096个数据点 3. **test2** **3000**个待分析样本 ## Metrics ![acc](./pics/acc.png) ## Evaluation 答案构成方式:将测试集中待分析样本的分类结果(以数值0~3表示),按照样本顺序依次写入csv文件中(**形成一列,每行表示单个样本结果**),提交csv文件。 初赛阶段,选手每日全天(0时至24时)可提交3次答案。选手提交答案后,实时评分,选手只能在答案提交页面看到自己的得分以及最后一次答案的成绩排名。初赛成绩不带入决赛,也不影响总成绩。 决赛阶段,选手在决赛的每个比赛日均可以提交3次答案。提交后,不会返回即时结果。决赛成绩以最后一次提交的答案为准。决赛成绩靠前的选手,组委会将通知提交算法验证材料,并进行专家审核。决赛成绩在有效性审核完成后公布。 ## Reference ZLab baseline [lb 0.6107](https://github.com/zui0711/Z-Lab/blob/main/2024%20%E5%B7%A5%E4%B8%9A%E5%A4%A7%E6%95%B0%E6%8D%AE/%E5%88%B6%E9%80%A0%E5%85%B3%E9%94%AE%E8%A3%85%E7%BD%AE%E6%95%85%E9%9A%9C%E8%AF%8A%E6%96%ADbaseline_lgb.ipynb) ## Supported ## 1. Model: STgram-MFN-Arcface(Yes/No), Sgram-MFN-Arcface(Yes/No)(Adaptator/No Adaptator), STgram-ResNet18-Arcface(Yes/No) 2. Lr scheduler: Cosine, Step, Expoential (update by epoch/batch) Optimizer: Adam/SGD 3. Augmentation: Speed perturb, random chunk, specmask, audiomask, mixup 4. Label smoothing 5. Normalization: 0-1, -1-1, z-score 6. Distribution loss: Cosine, MMD(linear/rbf), CMDLoss, CORALloss 7. 3 layers' distribution loss: YES/NO 7. AdvLoss: AdversarialLoss(CE)/DAANLoss 7. Distributed training: YES 8. Early freezing TgramNet: YES/NO 9. Compare sota difference: YES 10. Tsne: YES 11. Ensemble: YES/NO e.g. Sgram means spectrogram of vibration signal. ## Methods ***2024-1-16*** --- 17个epoch, lb 0.712, rank 33/97 初步思路:利用stgram来进行分类,sgram部分采用spec,sr=4096(每个样本为1秒,每类有1k个样本)![structure](./pics/structure.png) ```python n_fft=256, win_len=128, hop_len=64 ``` ***2024-1-17*** --- 20个epoch,lb 0.7327,rank 17/100 **23**个epoch,lb 0.7558,rank 11/100 ```python n_fft=256, win_length=256, hop_length=128 ``` **批次更新学习率** ***2024-1-18*** --- 1. 换了mfn的original backbone。 23个epoch,lb 0.7526 rank 13/100 2. 使用mobilenetv2的settings 23个epoch,lb 0.644 rank 44/100 **应继续沿用MFN**。 ***2024-1-19*** --- 使用了数据翻倍策略,效果没有提升。 ***2024-1-20*** --- 1. ```python n_fft=512, win_length=256, hop_length=128 ``` 效果没有提升。 2. ```python m=0.5, m=0.9,s=30 ``` 前者下降,后者变化不大。 3. 0-1归一化 ```python m=0.9,s=30 ``` **lb 0.7674 rank 11/100** 4. -1-1归一化 ```python m=0.9,s=30 ``` lb 0.7619 rank 13/100 5. ```python m=0.9,s=25,35 ``` 前者lb 0.7672 rank 12/100 6. ```python m=0.9,s=25 ``` **random chunk** **lb 0.7778 rank 10/100** ***2024-1-21*** --- 1. **random chunk with m=0.9,s=30 lb 0.792 rank 9/100** 2. speed perturb 没效果? 3. 尝试用cosine距离来对embd进行拉近,提交分数只有0.6x。主要原因在于,分布损失的收敛非常慢,400个epoch后还是只有0.4x。 用-log()收敛会比-()收敛更快; 先用大的权重训练Dloss,后面使用小的权重去训练,结果发现CEloss根本降不下来。 一定要注意过拟合问题!不能训练太多轮数! 现在存在的问题是:过拟合的时候,Dloss还是很大,很难收敛。 m减小? ***2024-1-23*** --- 更改了代码,使得训练变得更加规范与简洁,人机友好。 load from last: 还未能实现,随机种子上有问题。 ***2024-1-24*** --- 1. LS0.1 epoch 115 lb 0.728 rank 12/100 2. m=1 训练不动 3. Cosine 效果很烂 4. sp效果烂 ***2024-1-25*** --- STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.1 epoch 95 lb 0.725 lbdiff 0.0220 - **epoch 220 lb 0.731 lbdiff 0.03** STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.05 epoch 95 lb 0.727 lbdiff 0.0215 - epoch 190 lb 0.7305 lbdiff 0.0265 ***2024-1-26*** --- STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.15 **epoch 295 lb 0.735 lbdiff 0.0245** STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.2 epoch 300 lb 0.7225 lbdiff 0.0190 STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.25 epoch 285 lb 0.725 lbdiff 0.0330 STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.3 epoch 295 lb 0.7265 lbdiff 0.0295 STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.2_ef50 **epoch 300 lb 0.736 lbdiff 0.0165** STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.2_ef100 epoch 295 lb 0.72 lbdiff 0.0295 STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.2_ef150 epoch 300 lb 0.7235 lbdiff 0.029 ***2024-1-27*** --- STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.15_ef50 epoch 400 lb 0.7315 lbdiff 0.0215 rank 10 STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.15_ef100 epoch 225 lb 0.6815 lbdiff 0.0815 rank 30 epoch 400 lb 0.7355 lbdiff 0.0220 rank 11 **epoch 350 b 0.742 lbdiff 0.0335 rank 7** sp not perform better. ***2024-1-28*** --- STgram-MFN_arcface_m0.9_s64_rc1_norm01_sp0_LS0.15_ef150 epoch 400 lb 0.7295 ***2024-1-29*** --- Sgram-MFN_arcface_m0.9_s30_rc1-3_norm01_sp0_LS0.1_MMD_linear_2stage_1e-4_epoch_ada-128_lr5e-4_Cosine epoch 300 lb 0.694 lbdiff 0.1810 rank 26 Sgram-MFN_arcface_m0.9_s30_rc1-3_norm01_sp0_LS0.1_MMD_linear_2stage_1e-4_epoch_ada-128_lr5e-4_Cosine epoch 425 lb 0.684 lbdiff 0.1570 Sgram-MFN_arcface_m0.7_s30_rc1-3_norm01_sp0_LS0.2_MMD_linear_2stage_5e-5_batch_ada-1024_lr5e-4_Cosine epoch 610 lb 0.728 lbdiff 0.1300 rank 9 ***2024-1-30*** --- 使用arcface,CELoss难以收敛。 STgram-MFN-mel_64_arcface_m0.9_s64_rc1-3_norm01_sp0_LS0.15_ef100_batch_lr1e-4_Cosine lb 0.7065 epoch_lbdiff 325_0.0960 ***2024-1-31*** --- STgram-MFN_arcface_m0.9_s64_rc1-3_norm01_sp0_LS0.15_MMD_rbf-2-3_ef100_batch_lr1e-4_Cosine lb 0.682 epoch_diff 40_0.1730 STgram-MFN_arcface_m0.9_s64_rc1-3_norm01_sp0_LS0.15_MMD_rbf-1-3_ef100_batch_lr1e-4_Cosine lb 0.678 epoch_diff 25_0.1745 ***2024-2-2*** --- CMD1, CMD2 lb 0.68 CMD3 lb 0.69 ***2024-2-3*** --- STgram-MFN_arcface_m0.9_s64_rc1-3_normz_sp0_LS0.15_ef100_batch_lr1e-4_Cosine lb 0.723 epoch_diff 145_0.0830 ***2024-2-4*** --- CMD4 CMD5 lb 0.63 ***2024-2-8*** --- STgram-ResNet18_rc1-3_norm01_sp0_LS0.15_CMD2_batch_lr1e-4_Cosine lb 0.7210 STgram-ResNet18_arcface_m0.9_s64_rc1-3_norm01_sp0_LS0.15_CMD2_batch_lr1e-4_Cosine lb 0.7200 STgram-ResNet18_arcface_m0.9_s64_rc1-3_norm01_sp0_LS0.15_CMD1_batch_lr1e-4_Cosine lb 0.7215 ***2024-2-9*** --- STgram-ResNet18_arcface_m0.9_s64_rc1-3_norm01_sp0_LS0.2_CMD3_ef50_batch_lr1e-4_Cosine lb 0.727 ***2024-2-11*** --- STgram-ResNet18_arcface_m0.3_s30_rc1-3_norm01_sp0_LS0.2_ef50_CMD7_batch_lr1e-4_Cosine epoch 710 **lb 0.733** ***2024-2-13*** --- cmd8 + arcface m0.7 s30, celoss cannot converge ***2024-2-14*** --- cmd6 + audioaug/specaug + arcface m0.7 s30, cannot converge STgram-ResNet18_arcface_m0.7_s30_rc1-3_norm01_sp0_LS0.2_CMD6_batch_lr1e-4_Cosine lb 0.7065 epoch 410 lb 0.708 epoch 285 CMD5 bad lb, aug total epochs not enough. arcface false, use aug cannot converge. ***2024-2-15*** --- STgram-ResNet18_rc1-3_norm01_sp0_audioaug_specaug_LS0.2_CMD7_batch_lr1e-4_Cosine lb 0.7185 log domain loss bad lb. ***2024-2-16*** --- STgram-ResNet18_arcface_m0.9_s64_rc1-3_norm01_sp0_specaug_LS0.2_dm_batch_lr1e-4_Cosine_ef30_embd1024 lb 0.7305 优化不平衡,没有优化celoss都在优化domainloss STgram-ResNet18_arcface_m0.9_s64_rc1-3_norm01_sp0_specaug_LS0_dm_batch_lr1e-4_Cosine_ef20_embd1024 **lb 0.7355 epoch 27** ***2024-2-20*** --- STgram-ResNet18_arcface_m0.9_s64_rc1-3_norm01_sp0_specaug_LS0.05_dm_cmd2_batch_lr1e-4_Cosine_ef10_embd1024_w1e-1 epoch 59 lb 0.742 ***2024-2-29*** --- STgram-ResNet18_rc1-3_norm01_specaug_LS0_mmd_rbf-2_5_embd1024 epoch 19 lb 0.750 epoch 24 lb 0.7535 epoch 31 lb **0.762** ***2024-3-1*** --- STgram-ResNet18_rc1-3_norm01_specaug_LS0_cmd1_embd1024 0.743 STgram-ResNet18_rc1-3_norm01_specaug_LS0_cmd2_embd1024 0.7205 sepcaug cannot remove MFN worse, num=7 worse num=3 lb 0.7465 num=1 lb 0.744 epoch lb 0.7475 ***2024-3-3*** --- STgram-ResNet18_rc1-3_norm01_specaug_LS0_mmd_rbf-2_5_embd1024 ensmble_top_5 lb **0.765 rank 10** embd 256 w0.5 lb 0.735 embd 512 w1.0 lb 0.723 ***2024-3-4*** --- STgram-ResNet18_rc1-3_norm01_specaug0.5_LS0_mmd_rbf-2_5_embd1024 5_ensemble lb 0.7395 ***2024-3-5*** --- 3layers worse lb 0.7260 ***2024-3-8*** --- ls 0.2, only mixup worse. ***2024-3-9*** --- CORALLoss worse. ## Next plan 1. CANNOT choose a big lbdiff result to submit! Its a waste of submission. ## Roadmap **ddl:2024/3/10 23:59:59** Notice:23号之前评分规则不一样 | Date | LB | Rank | | :---: | :---: | :---: | | 2024/1/16 | 0.712 | 33 | | 2024/1/17 | 0.7558 | 11 | | 2024/1/20 | 0.7778 | 11 | | 2024/1/21 | 0.792 | 9 | | 2024/1/24 | 0.728 | 12 | | 2024/1/25 | 0.731 | 9 | | 2024/1/26 | 0.736 | 9 | | 2024/1/28 | 0.742 | 7 | | 2024/2/20 | 0.742 | 14 | | 2024/2/29 | 0.7620 | 12 | | 2024/3/3 | 0.7650 | 10 | ## SKILLs STgram-ResNet18_rc1-3_norm01_specaug_LS0_mmd_rbf-2_5_embd1024 ensmble_top_5 1. STGRAM-ResNet18, only spectrogram. 2. Update learning rate by each batch. 3. Zero one norm with no arcface 4. Random chunk with secs=3 5. Specmask helps 6. Use MMDLoss(DCTLN) 7. Ensemble always helps(top_n=5)