Open EP000 opened 3 years ago
class 변경하다가 생긴 문제인걸로 예상.
Traceback (most recent call last):
File "baseline.py", line 166, in <module>
main()
File "baseline.py", line 106, in main
train_loss, train_acc = train_epoch(dataloaders['train'], model, criterion, optimizer, scheduler, epoch, void=Dataset.voidClass, args=args)
File "/home/ag/semantic-segmentation-tutorial-pytorch-ag/learning/learner.py", line 41, in train_epoch
for epoch_step, (inputs, labels, _) in enumerate(dataloader):
File "/home/ag/venv_capstone2/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 345, in __next__
data = self._next_data()
File "/home/ag/venv_capstone2/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 856, in _next_data
return self._process_data(data)
File "/home/ag/venv_capstone2/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 881, in _process_data
data.reraise()
File "/home/ag/venv_capstone2/lib/python3.7/site-packages/torch/_utils.py", line 394, in reraise
raise self.exc_type(msg)
IndexError: Caught IndexError in DataLoader worker process 0.
Original Traceback (most recent call last):
File "/home/ag/venv_capstone2/lib/python3.7/site-packages/torch/utils/data/_utils/worker.py", line 178, in _worker_loop
data = fetcher.fetch(index)
File "/home/ag/venv_capstone2/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/home/ag/venv_capstone2/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp>
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/home/ag/semantic-segmentation-tutorial-pytorch-ag/learning/minicity.py", line 93, in __getitem__
target = self.id2trainid[target]
IndexError: index 255 is out of bounds for axis 0 with size 28
IndexError 그대로 읽어보면 x축 크기가 28?인데 코드 어떤 부분에서 255를 불러서 오류가 난 거라는 이야기일까요,,?
앗 그런데 혹시 #4 해결한 결과물 (픽셀값 class로 변경한 코드) 공유 가능할까요?!! 오늘 중으로 저도 해당 데이터 만드려고 했는데, 동일한 class num으로 통일하는 게 좋을 것 같아서요!
이제 확인했네요,,ㅠ
class num으로 만드는 코드는 DL3_v1 branch semantic-segmentation-tutorial-pytorch-ag/minicity/data_refactoring.ipynb
입니다!
void를 255로 지정했는데, 이거 때문인지,, 아직 해결중입니다!
255 찾았습니다...!
void 값을 255로 지정해서 발생한 문제가 맞았어요,,,!
epoch 2 일때 validation 성능 결과입니다!
Mean Iou 47.5 확인했습니다 :)
코드 올려둘게요!
python baseline.py --save_path baseline_run_deeplabv3_resnet50 --crop_size 576 1152 --batch_size 2 --epochs 50
위 코드 실행결과입니다.
cpu 사용 시 최대로 키울 수 있는 batch size : 10 gpu 사용시 최대로 키울 수 있는 batch size : 2
cpu는 10까지 올릴 수 있는데 느리고, gpu는 2 밖에 안되지만 속도는 봐줄만한,,,
ㅠㅠㅠㅠㅠㅠ
제가 사용하는 서버 cpu 메모리는 90기가 gpu 메모리는 11기가정도 됩니다...
file : RUN.ipynb GPU 사용 epoch 1 batch 2 train miou : 48.43 / accuracy : 84.34 test miou : 51.64 / accuracy : 85.51 소요시간 : train 약 5분 test 약 15초
classes IoU
---------------------
Pole : 0.002
SignSymbol : 0.233
Bicyclist : 0.251
Pedestrian : 0.188
Building : 0.784
Fence : 0.382
Pavement : 0.676
Road : 0.909
Car : 0.684
Sky : 0.860
Tree : 0.711
---------------------
Mean IoU : 0.516
---------------------
loss : 0.4775 acc : 0.8551 miou : 0.5164
file : RUN_01_resnet101.ipynb GPU 메모리 부족으로 사용 불가. 어쩔 수 없이 CPU 사용 (epoch1, batch1에서 메모리 부족했음) epoch 1 batch 10 train miou : 35.00 / 코드 에러나서 기록 못함... 한시간 반 다시 기다릴 자신 없어서 넘어감 test miou : 23.98 / accuracy : 45.53 소요시간 : train 1시간 30분 test 11분
classes IoU
---------------------
Pole : 0.000
SignSymbol : 0.043
Bicyclist : 0.003
Pedestrian : 0.131
Building : 0.696
Fence : 0.000
Pavement : 0.127
Road : 0.000
Car : 0.055
Sky : 0.872
Tree : 0.710
---------------------
Mean IoU : 0.240
---------------------
loss : 2.9336 acc : 0.4553 miou : 0.2398
참고사항) deeplabv3_resnet50 : 사전학습 모델 지원 안함. #8 참고해서 라벨 값 수정 후 학습한 결과임
file : RUN_02_resnet50.ipynb GPU 사용. class 비율에 따라 loss 함수에 가중치 추가 epoch 5 batch 2 train miou : 75.13 / accuracy : 91.10 test miou : 72.78 / accuracy : 90.42
classes IoU
---------------------
Pole : 0.374
SignSymbol : 0.492
Bicyclist : 0.688
Pedestrian : 0.575
Building : 0.839
Fence : 0.702
Pavement : 0.819
Road : 0.949
Car : 0.854
Sky : 0.905
Tree : 0.810
---------------------
Mean IoU : 0.728
---------------------
loss : 0.3141 acc : 0.9042 miou : 0.7278
epoch 10 batch 2 train miou : 79.82 / accuracy : 93.25 test miou : 78.76 / accuracy : 92.92
classes IoU
---------------------
Pole : 0.444
SignSymbol : 0.655
Bicyclist : 0.749
Pedestrian : 0.642
Building : 0.887
Fence : 0.800
Pavement : 0.866
Road : 0.965
Car : 0.896
Sky : 0.914
Tree : 0.846
---------------------
Mean IoU : 0.788
---------------------
loss : 0.2247 acc : 0.9292 miou : 0.7876
file : RUN_03_resnet50.ipynb GPU 사용. epoch 20 batch 2 train miou : 84.93 / accuracy : 95.17 test miou : 83.84 / accuracy : 94.77
classes IoU
---------------------
Pole : 0.527
SignSymbol : 0.758
Bicyclist : 0.815
Pedestrian : 0.729
Building : 0.922
Fence : 0.869
Pavement : 0.901
Road : 0.974
Car : 0.921
Sky : 0.925
Tree : 0.882
---------------------
Mean IoU : 0.838
---------------------
loss : 0.1774 acc : 0.9477 miou : 0.8384
file : RUN_04_resnet101.ipynb (현재 돌아가고있어서 업로드 안함) CPU 사용 1 epoch 에 약 1시간 30분 소요. 오늘 저녁부터 돌리기 시작함 epoch 15까지 돌릴거임. 내일 오후 4시쯤 끝날 예정. 현재 epoch 4 돌아가는 중 아래는 epoch 3 train
classes IoU
---------------------
Pole : 0.264
SignSymbol : 0.506
Bicyclist : 0.669
Pedestrian : 0.588
Building : 0.791
Fence : 0.635
Pavement : 0.759
Road : 0.933
Car : 0.868
Sky : 0.887
Tree : 0.784
---------------------
Mean IoU : 0.698
---------------------
train epoch 3
loss : 0.3599 acc : 0.8831 miou : 0.6985
file : RUN_04_resnet101.ipynb CPU 사용. class weight 추가 epoch 15 batch 10 train miou : 82.17 / accuracy : 94.06 test miou : 76.71 / accuracy : 92.22 소요시간 : 22시간 30분
classes IoU
---------------------
Pole : 0.374
SignSymbol : 0.552
Bicyclist : 0.777
Pedestrian : 0.673
Building : 0.891
Fence : 0.739
Pavement : 0.826
Road : 0.959
Car : 0.892
Sky : 0.927
Tree : 0.830
---------------------
Mean IoU : 0.767
---------------------
loss : 0.3698 acc : 0.9222 miou : 0.7671
file : RUN_05_resnet50.ipynb GPU 사용. class weight 추가. *cut mix 추가 (랜덤하게 100장 선택해서 200200 사이즈의 이미지 cut mix 진행. 학습 데이터가 추가된 형태)** epoch 40 batch 2 train miou 88.14 / accuracy 96.33 test miou 80.43 / accuracy 93.65 소요시간 : 3시간 20분
classes IoU
---------------------
Pole : 0.492
SignSymbol : 0.657
Bicyclist : 0.799
Pedestrian : 0.696
Building : 0.918
Fence : 0.772
Pavement : 0.865
Road : 0.971
Car : 0.902
Sky : 0.929
Tree : 0.848
---------------------
Mean IoU : 0.804
---------------------
loss : 0.4920 acc : 0.9365 miou : 0.8043
file : RUN_06_resnet50.ipynb CPU 사용. class weight, cut mix train 70% val 10% test 20% epoch 100 batch 2 train miou : 90.99 / accuracy : 97.18 val miou : 90.79 / accuracy : 97.13 test miou : 81.02 / accuracy : 93.82 소요시간 : 약 8시간 30분 (epoch 1 : 5min) train miou는 90까지 올랐지만, test miou는 81.02 아래 validation 봐도 과적합은 보이지 않음.
validataion result
train/val 비교 -> 과적합 X
classes IoU
---------------------
Pole : 0.501
SignSymbol : 0.664
Bicyclist : 0.811
Pedestrian : 0.709
Building : 0.922
Fence : 0.774
Pavement : 0.874
Road : 0.973
Car : 0.904
Sky : 0.931
Tree : 0.848
---------------------
Mean IoU : 0.810
---------------------
loss : 0.6782 acc : 0.9382 miou : 0.8102
file : RUN_07_resnet50.ipynb CPU 사용. class weight, cut mix 안함 train 70% val 10% test 20% epoch 100 batch 2 train miou : 90.45 / accuracy : 97.03 val miou : 90.34 / accuracy : 97.03 test miou : 80.99 / accuracy : 93.73 소요시간 : 약 8시간 30분 (epoch 1 : 5min) cut mix 안해도 성능차이 별로 없음.
validation result
train/val 비교 -> 과적합 X
classes IoU
---------------------
Pole : 0.500
SignSymbol : 0.647
Bicyclist : 0.827
Pedestrian : 0.711
Building : 0.921
Fence : 0.789
Pavement : 0.859
Road : 0.970
Car : 0.907
Sky : 0.931
Tree : 0.847
---------------------
Mean IoU : 0.810
---------------------
loss : 0.6262 acc : 0.9373 miou : 0.8099
file : RUN_08_resnet50.ipynb CPU 사용. class weight, cut mix 안함 val 제거 train 80% test 20% epoch 80 batch 2 train miou : 89.94 / accuracy : 96.89 test miou : 88.29 / accuracy : 96.29 소요시간 : 약 7시간 30분 (epoch 1 : 5min) _RUN_03resnet50.ipynb 파일에서 test 83.8 이였는데, cut mix랑 val 추가하면 80 이상 오르지 않아서 class weight만 추가하고 epoch 많이 올렸는데 88.29 나왔음. cut mix를 잘못한건지,,, val 따로 빼서 train 데이터가 부족한건지,,, 부족했다면 cut mix가 제 역할을 다 하지 못한건지,,, 의문,,,!
classes IoU
---------------------
Pole : 0.622
SignSymbol : 0.840
Bicyclist : 0.871
Pedestrian : 0.797
Building : 0.950
Fence : 0.917
Pavement : 0.934
Road : 0.983
Car : 0.947
Sky : 0.937
Tree : 0.916
---------------------
Mean IoU : 0.883
---------------------
loss : 0.1769 acc : 0.9629 miou : 0.8829
저도 이슈로 정리하겠습니다!
참고 사이트
https://github.com/hoya012/semantic-segmentation-tutorial-pytorch
위 사이트를 그대로 가져와서 저희가 쓰는 데이터에 맞게 수정하는게 목표입니다!