一、数据集读取部分
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