일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로그래머스 72410번
- pytorch 이미지 확인
- 프로그래머스 67256번
- os 확인 명령어
- MMdetection
- YOLO detection
- 프로그래머스 42885번
- 가상환경 제거
- 카카오 보석 쇼핑
- DeepLabv3+
- zip 압축해제 명령어
- 가상환경 확인
- 프로그래머스 42839번
- 프로그래머스 67258번
- 프로그래머스 43164번
- object detection
- vscode sftp
- augmentation 이후 이미지 확인
- gradient descent optimization
- 프로그래머스 보석 쇼핑
- Optimization algorithms
- 백준 효율적인 해킹
- 원격서버 로컬 동기화
- jupyter 명령어 모드 단축키
- jupyter 셀 추가 단축키
- 프로그래머스 67257번
- Kullback-Leibler Divergence
- 백준 1325번
- 백준 3190번
- 프로그래머스 42883번
- Today
- Total
소소한 블로그
[6주차 - Day27] Augmentation 적용 결과 시각화하기 본문
Train datasets은 실제 데이터 분포를 설명하기에는 너무 제한적입니다.
Augmentation은 Train datasets의 분포를 더 dense하게 만드는 효과를 낼 수 있습니다.
여기서는 다른 것이 아닌 Augmentation이 적용된 이후의 이미지를
확인하는 방법에 대해서 알아보겠습니다.
코드는 아래와 같습니다.
import matplotlib.pyplot as plt
import torchvision
import random
# 시각화할 데이터
img, label = next(iter(qd_train_dataloader))
# 랜덤으로 8개 시각화할 예정
idx = random.randint(0, 55)
inverse_class_dict = {value:key for key,value in class_dict.items()}
# 시각화 start
visualized_img = torchvision.utils.make_grid(img[idx:idx+8], nrow=4)
visualized_img = visualized_img.cpu().numpy()
visualized_img = visualized_img.transpose((1,2,0))
plt.figure(figsize=(15,20))
plt.title([inverse_class_dict[int(label[i])] for i in range(idx, idx+8)])
plt.imshow(visualized_img)
plt.show()
# 시각화 end
하나씩 살펴보겠습니다.
1. torchvision.utils.make_grid 사용
한번에 여러개의 사진을 보고 싶어서 해당 함수를 사용하였습니다.
2. visualized_img.cpu().numpy()
이 코드를 작성한 이유는 tensor형태의 변수를 시각화를 위해서는 transpose함수를 사용해야 하는데,
(transpose를 사용해야하는 이유는 아래 3번째 항목에서 설명하겠습니다.)
transpose는 numpy에 적용되는 함수이기 때문입니다.
만약 시각화를 하고 싶은 tensor가 gpu에 올라가있다면,
numpy로 바로 변환하지 못하므로
tensor를 cpu로 옮긴 후 numpy 형태로 변환하였습니다.
3. visualized_img.transpose((1, 2, 0))
이와 같이 transpose를 하는 이유는
PyTorch는 기본 Tensor 형태가 (batch, channel, height, width)이고,
PILLow와 Matplotlib의 기본 이미지 array 형태는 (batch, height, width, channel)이기 때문입니다.
+ 참고
https://stackoverflow.com/questions/53623472/how-do-i-display-a-single-image-in-pytorch
항상 이미지 확인할 때마다 구글링을 하는 것이 아쉬워
이렇게 글로 정리해봤습니다ㅎㅎ
그럼 이만~
'부스트캠프 AI Tech' 카테고리의 다른 글
[11주차 - Day48] 정리안된 기록 (0) | 2021.10.19 |
---|---|
[8주차 - Day36] VSCode에서 로컬과 원격서버 동기화하기 (4) | 2021.09.24 |
[4주차 - Day17] 간단한 multi-class 이미지 분류기 구현(end-to-end) (0) | 2021.08.25 |
[4주차 - Day15] F1 Score (0) | 2021.08.23 |
[4주차 - Day15] VSCode ssh 접속 (0) | 2021.08.23 |