新版测试工程构建记录


一、数据集读取部分

1.NUAA_SIRST

  • 参数的问题:

这个受到Arg的影响

self.crop_size = args.crop_size
self.base_size = args.base_size

这个不受到Arg的影响

self.mode = mode

  • 官方直接提供了训练集和测试集的分割

2.IRDST

  • image用的是单通道的
  • mask用的是二值的

现在先用3通道的读取进来,先快速迭代,不纠结

  • 第三方训练集和测试集的分割

3. NUDT_SIRST

  • 这个最后没有ToTensor了,直接就转numpy/255

  • 第三方训练集和测试集的分割

4. IRSTD_1k

  • 这个多添加了Compose的数据增强模式

  • 官方直接提供了训练集和测试集的分割

5. NUDT-SIRST-Sea

  • 这个多添加了CRRP的数据增强模式,但随机数种子必须得想办法固定

  • 粘贴的时候,不能粘贴到太右下角了

  • 训练时指定尺寸为1024*1024

  • 官方直接提供了训练集和测试集的分割

6. SIRST3

  • 全部都缩放到了255*255

  • 这个是把NUAA-SIRST, NUDT-SIRST, IRSTD-1k的数据集都整合到一个数据集了

  • 官方直接提供了训练集和测试集的分割

7. SIRSTv2

  • 官方直接提供了训练接合测试集的分割

8. NUST-SIRST

  • 有以下图片是损坏的
  • 官方直接提供了训练集和测试集的分割

9. SIRST-Aug

  • 全部统一到256x256的分辨率了
  • 不用单独再进行图像增强
  • 官方直接提供了训练集和测试集的分割

二、数据处理部分

  • 各个数据集中,mean和std分别是以下情况:
(Research) hrm@02:/data1/hrm/Experiment/ACM_Practice/data$ python cal_mean_std.py 
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10000/10000 [00:08<00:00, 1238.75it/s]
cal_NUST_SIRST
mean: [0.41022339 0.41022339 0.41022339]
std: [0.10534038 0.10534038 0.10534038]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 341/341 [00:00<00:00, 584.14it/s]
cal_NUAA_SIRST
mean: [0.44208519 0.44158229 0.44273354]
std: [0.11077873 0.11070194 0.11091114]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 800/800 [00:06<00:00, 128.36it/s]
cal_IRSTD_1k
mean: [0.34256154 0.34256152 0.34256152]
std: [0.1573148  0.15731486 0.15731486]
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 8525/8525 [00:12<00:00, 671.56it/s]
SIRST_Aug
mean: [0.29023109 0.29023109 0.29023109]
std: [0.19364614 0.19364614 0.19364614]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 768/768 [00:10<00:00, 75.21it/s]
cal_SIRST_V2
mean: [0.39918842 0.39905016 0.39971   ]
std: [0.15290678 0.15289166 0.15295853]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 663/663 [00:01<00:00, 436.60it/s]
cal_NUDT_SIRST
mean: [0.42359084 0.423618   0.42373287]
std: [0.13024786 0.13025371 0.13025806]
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1676/1676 [00:08<00:00, 207.24it/s]
cal_SIRST3
mean: [0.38625646 0.3862149  0.38645584]
std: [0.14125108 0.14123742 0.14127061]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4961/4961 [01:56<00:00, 42.61it/s]
cal_NUDT_SIRST_Sea
mean: [0.15856523 0.15856523 0.15856523]
std: [0.07371927 0.07371927 0.07371927]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32523/32523 [04:40<00:00, 115.92it/s]
cal_IRDST
mean: [0.39834052 0.39834052 0.39834052]
std: [0.22157959 0.22157959 0.22157959]
(Research) hrm@02:/data1/hrm/Experiment/ACM_Practice/data$
  • 现有的数据预处理存在很多不合理,比如随机偏移,往往会把很多目标偏移没了

  • 以及很多图片中,压根就不存在小目标的标签


三、数据可视化

  • tensorboard数据可视化命令,且确保能大量传输数据,即最多显示10w张图片
tensorboard --logdir=./logs/dev --samples_per_plugin=images=100000
  • 后台运行
nohup python train_SC_TransNet.py > output0.log 2>&1 &
  • 看准端口,然后采用MobaXterm内网穿透

四、剩下来的任务

  • 均值方差的计算:已完成

  • 数据增强的方法:已完成

  • loss:已完成

  • metric:已完成

  • 不同threshold下的F1参数,以及metric整体测试一下:已完成

  • 设置随机数种子:已完成

  • 权重初始化:已完成

  • 学习率的变化: 已完成

  • 优化器:已完成

  • 添加模型:已完成

  • 编写训练和测试代码:已完成

  • 三件套:build_scheduler, build_optimizer, weight_init:已完成

五、实际训练的情况

  • 固定随机数种子为3407时的情况

    best_mIoU: 0.5967,best_nIoU: 0.6467
    此情况下性能下降太多

    2024-11-24 23:47:49,237 - INFO - Epoch: 290, train_loss: 0.4583, lr: 0.002336
    2024-11-24 23:48:09,150 - INFO - Epoch: 290, val_loss: 0.4062, mIoU: 0.5864, best_mIoU: 0.5967, nIoU: 0.6358, best_nIoU: 0.6467
    2024-11-24 23:49:31,126 - INFO - Epoch: 291, train_loss: 0.4480, lr: 0.002125
    2024-11-24 23:50:33,046 - INFO - Epoch: 291, val_loss: 0.4058, mIoU: 0.5823, best_mIoU: 0.5967, nIoU: 0.6324, best_nIoU: 0.6467
    2024-11-24 23:52:09,696 - INFO - Epoch: 292, train_loss: 0.4473, lr: 0.001911
    2024-11-24 23:52:32,062 - INFO - Epoch: 292, val_loss: 0.4072, mIoU: 0.5853, best_mIoU: 0.5967, nIoU: 0.6339, best_nIoU: 0.6467
    2024-11-24 23:53:56,329 - INFO - Epoch: 293, train_loss: 0.4406, lr: 0.001695
    2024-11-24 23:54:17,606 - INFO - Epoch: 293, val_loss: 0.4028, mIoU: 0.5876, best_mIoU: 0.5967, nIoU: 0.6354, best_nIoU: 0.6467
    2024-11-24 23:55:44,023 - INFO - Epoch: 294, train_loss: 0.4490, lr: 0.001475
    2024-11-24 23:56:04,794 - INFO - Epoch: 294, val_loss: 0.4025, mIoU: 0.5863, best_mIoU: 0.5967, nIoU: 0.6363, best_nIoU: 0.6467
    2024-11-24 23:57:30,883 - INFO - Epoch: 295, train_loss: 0.4435, lr: 0.001252
    2024-11-24 23:57:53,070 - INFO - Epoch: 295, val_loss: 0.4052, mIoU: 0.5884, best_mIoU: 0.5967, nIoU: 0.6352, best_nIoU: 0.6467
    2024-11-24 23:59:18,563 - INFO - Epoch: 296, train_loss: 0.4526, lr: 0.001025
    2024-11-24 23:59:41,157 - INFO - Epoch: 296, val_loss: 0.4040, mIoU: 0.5872, best_mIoU: 0.5967, nIoU: 0.6366, best_nIoU: 0.6467
    2024-11-25 00:01:08,590 - INFO - Epoch: 297, train_loss: 0.4492, lr: 0.000791
    2024-11-25 00:01:33,203 - INFO - Epoch: 297, val_loss: 0.4019, mIoU: 0.5894, best_mIoU: 0.5967, nIoU: 0.6373, best_nIoU: 0.6467
    2024-11-25 00:02:59,370 - INFO - Epoch: 298, train_loss: 0.4502, lr: 0.000550
    2024-11-25 00:03:21,111 - INFO - Epoch: 298, val_loss: 0.4036, mIoU: 0.5884, best_mIoU: 0.5967, nIoU: 0.6352, best_nIoU: 0.6467
    2024-11-25 00:04:48,072 - INFO - Epoch: 299, train_loss: 0.4612, lr: 0.000295
    2024-11-25 00:05:10,318 - INFO - Epoch: 299, val_loss: 0.4034, mIoU: 0.5874, best_mIoU: 0.5967, nIoU: 0.6359, best_nIoU: 0.6467
  • 不固定随机数种子时的情况

    best_mIoU: 0.7007,best_nIoU: 0.7110
    此情况和ACM作者的情况基本接近:

    2024-11-25 08:11:32,924 - INFO - Epoch: 290, train_loss: 0.3187, lr: 0.002336
    2024-11-25 08:11:43,965 - INFO - Epoch: 290, val_loss: 0.2922, mIoU: 0.6824, best_mIoU: 0.7007, nIoU: 0.7041, best_nIoU: 0.7110
    2024-11-25 08:12:25,941 - INFO - Epoch: 291, train_loss: 0.3242, lr: 0.002125
    2024-11-25 08:12:36,901 - INFO - Epoch: 291, val_loss: 0.2871, mIoU: 0.6933, best_mIoU: 0.7007, nIoU: 0.7090, best_nIoU: 0.7110
    2024-11-25 08:13:18,937 - INFO - Epoch: 292, train_loss: 0.3153, lr: 0.001911
    2024-11-25 08:13:29,852 - INFO - Epoch: 292, val_loss: 0.2908, mIoU: 0.6865, best_mIoU: 0.7007, nIoU: 0.7067, best_nIoU: 0.7110
    2024-11-25 08:14:11,835 - INFO - Epoch: 293, train_loss: 0.3192, lr: 0.001695
    2024-11-25 08:14:22,907 - INFO - Epoch: 293, val_loss: 0.2920, mIoU: 0.6812, best_mIoU: 0.7007, nIoU: 0.7069, best_nIoU: 0.7110
    2024-11-25 08:15:04,815 - INFO - Epoch: 294, train_loss: 0.3246, lr: 0.001475
    2024-11-25 08:15:15,711 - INFO - Epoch: 294, val_loss: 0.2890, mIoU: 0.6888, best_mIoU: 0.7007, nIoU: 0.7074, best_nIoU: 0.7110
    2024-11-25 08:15:57,783 - INFO - Epoch: 295, train_loss: 0.3087, lr: 0.001252
    2024-11-25 08:16:08,638 - INFO - Epoch: 295, val_loss: 0.2882, mIoU: 0.6868, best_mIoU: 0.7007, nIoU: 0.7080, best_nIoU: 0.7110
    2024-11-25 08:16:50,680 - INFO - Epoch: 296, train_loss: 0.3164, lr: 0.001025
    2024-11-25 08:17:01,592 - INFO - Epoch: 296, val_loss: 0.2903, mIoU: 0.6879, best_mIoU: 0.7007, nIoU: 0.7072, best_nIoU: 0.7110
    2024-11-25 08:17:43,572 - INFO - Epoch: 297, train_loss: 0.3228, lr: 0.000791
    2024-11-25 08:17:54,435 - INFO - Epoch: 297, val_loss: 0.2872, mIoU: 0.6928, best_mIoU: 0.7007, nIoU: 0.7099, best_nIoU: 0.7110
    2024-11-25 08:18:36,557 - INFO - Epoch: 298, train_loss: 0.3073, lr: 0.000550
    2024-11-25 08:18:47,343 - INFO - Epoch: 298, val_loss: 0.2879, mIoU: 0.6958, best_mIoU: 0.7007, nIoU: 0.7096, best_nIoU: 0.7110
    2024-11-25 08:19:29,246 - INFO - Epoch: 299, train_loss: 0.3104, lr: 0.000295
    2024-11-25 08:19:40,133 - INFO - Epoch: 299, val_loss: 0.2927, mIoU: 0.6850, best_mIoU: 0.7007, nIoU: 0.7058, best_nIoU: 0.7110
  • 官方原版+我们的数据集增强的情况

    best_mIoU: 0.6146,best_nIoU: 0.6676

六、增加对照组

6.0 tensorboard数据可视化命令

tensorboard --logdir=/data1/hrm/Experiment/ACM_Practice/logs/dev/train/20241124234923 --port=8009 --samples_per_plugin=images=100000

6.1 采用我们的代码的训练结果




  • 1.我们的代码取消随机数种子:显卡0
2024-11-26 05:18:16,925 - INFO - Epoch: 286, train_loss: 0.3092, lr: 0.003162
2024-11-26 05:18:27,894 - INFO - Epoch: 286, val_loss: 0.2809, mIoU: 0.7000, best_mIoU: 0.7120, nIoU: 0.7164, best_nIoU: 0.7214
2024-11-26 05:19:10,232 - INFO - Epoch: 287, train_loss: 0.3002, lr: 0.002958
2024-11-26 05:19:21,131 - INFO - Epoch: 287, val_loss: 0.2820, mIoU: 0.7025, best_mIoU: 0.7120, nIoU: 0.7176, best_nIoU: 0.7214
2024-11-26 05:20:03,380 - INFO - Epoch: 288, train_loss: 0.3070, lr: 0.002752
2024-11-26 05:20:14,364 - INFO - Epoch: 288, val_loss: 0.2824, mIoU: 0.7020, best_mIoU: 0.7120, nIoU: 0.7165, best_nIoU: 0.7214
2024-11-26 05:20:56,500 - INFO - Epoch: 289, train_loss: 0.2986, lr: 0.002545
2024-11-26 05:21:07,459 - INFO - Epoch: 289, val_loss: 0.2805, mIoU: 0.7042, best_mIoU: 0.7120, nIoU: 0.7177, best_nIoU: 0.7214
2024-11-26 05:21:49,838 - INFO - Epoch: 290, train_loss: 0.3029, lr: 0.002336
2024-11-26 05:22:00,835 - INFO - Epoch: 290, val_loss: 0.2800, mIoU: 0.7076, best_mIoU: 0.7120, nIoU: 0.7164, best_nIoU: 0.7214
2024-11-26 05:22:42,877 - INFO - Epoch: 291, train_loss: 0.3085, lr: 0.002125
2024-11-26 05:22:53,740 - INFO - Epoch: 291, val_loss: 0.2805, mIoU: 0.7097, best_mIoU: 0.7120, nIoU: 0.7178, best_nIoU: 0.7214
2024-11-26 05:23:36,021 - INFO - Epoch: 292, train_loss: 0.2979, lr: 0.001911
2024-11-26 05:23:46,916 - INFO - Epoch: 292, val_loss: 0.2802, mIoU: 0.7062, best_mIoU: 0.7120, nIoU: 0.7177, best_nIoU: 0.7214
2024-11-26 05:24:29,086 - INFO - Epoch: 293, train_loss: 0.3088, lr: 0.001695
2024-11-26 05:24:40,030 - INFO - Epoch: 293, val_loss: 0.2810, mIoU: 0.7010, best_mIoU: 0.7120, nIoU: 0.7153, best_nIoU: 0.7214
2024-11-26 05:25:22,422 - INFO - Epoch: 294, train_loss: 0.3092, lr: 0.001475
2024-11-26 05:25:33,408 - INFO - Epoch: 294, val_loss: 0.2803, mIoU: 0.7049, best_mIoU: 0.7120, nIoU: 0.7168, best_nIoU: 0.7214
2024-11-26 05:26:15,388 - INFO - Epoch: 295, train_loss: 0.2911, lr: 0.001252
2024-11-26 05:26:26,382 - INFO - Epoch: 295, val_loss: 0.2809, mIoU: 0.7065, best_mIoU: 0.7120, nIoU: 0.7170, best_nIoU: 0.7214
2024-11-26 05:27:08,503 - INFO - Epoch: 296, train_loss: 0.3127, lr: 0.001025
2024-11-26 05:27:19,502 - INFO - Epoch: 296, val_loss: 0.2811, mIoU: 0.7054, best_mIoU: 0.7120, nIoU: 0.7165, best_nIoU: 0.7214
2024-11-26 05:28:01,661 - INFO - Epoch: 297, train_loss: 0.3100, lr: 0.000791
2024-11-26 05:28:12,661 - INFO - Epoch: 297, val_loss: 0.2785, mIoU: 0.7079, best_mIoU: 0.7120, nIoU: 0.7174, best_nIoU: 0.7214
2024-11-26 05:28:54,903 - INFO - Epoch: 298, train_loss: 0.3006, lr: 0.000550
2024-11-26 05:29:05,789 - INFO - Epoch: 298, val_loss: 0.2819, mIoU: 0.7044, best_mIoU: 0.7120, nIoU: 0.7168, best_nIoU: 0.7214
2024-11-26 05:29:47,968 - INFO - Epoch: 299, train_loss: 0.3035, lr: 0.000295
2024-11-26 05:29:58,897 - INFO - Epoch: 299, val_loss: 0.2805, mIoU: 0.7058, best_mIoU: 0.7120, nIoU: 0.7167, best_nIoU: 0.7214
  • 2.官方代码用官方的数据增强:显卡1
Best IoU: 0.65325, best nIoU: 0.67298
  • 3.官方的代码用我们的数据增强:显卡2
Best IoU: 0.68095, best nIoU: 0.71277

结论:我们自己的代码没问题,并且,用我们自己的数据增强,效果会更好

6.2 验证固定随机数种子后,是否能够使得训练效果可复现


实际证明,这是不可复现的

6.3 查看GPU状态的命令

watch -n 1 nvidia-smi

ps -f -p 2570815 

gpustat -i

6.4 ViT


Author: Ruimin Huang
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Ruimin Huang !
  TOC