DOGS VS CATS문제에서 흑백사진사용시
393
작성한 질문수 19
선생님 안녕하세요.. 덕분에 파이터치문법에 대해서 이해할수 잇게 되엇습니다 ㅎㅎ
다른 여러가지강의도 들어봣는데, 가장이해하기 쉽게설명해주셔서 드디어 이해햇다라고 느끼게 해주는 강의엿습니다 ㅎㅎ
참고로 질문하나 드리겟습니다 ㅎ, 마지막강의 캐글문제 DOGS VS CATS문제인데요.. 제가 가지고 잇는 이미지파일이 흑백사진파일인데 이 흑백사진파일을 사용할때는 그냥cv2.cvtColor()로 컬러로 변환만 하고 그냥 사용하면 되는지요?
예를들어, 흑백사진을 그대로 사용하니 transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])에서는 에러가 나던데....
흑백사진을 사용할때의 코드상의 변경할 부분이 따로 있는지 알고싶습니다 ㅎ
답변 부탁드리겠습니다 ㅎ
답변 1
0
안녕하세요. 답변 도우미입니다.
파이토치를 사용하는데 도움이 되어 기쁩니다.
흑백 이미지라는 것이, 데이터 포멧등이 다 다르고, 코드도 관련 코드가 여러 코드를 제공해드려서요. 다음 부분을 한번 참고만 해보시면 어떠실까 해요.
우선, OpenCV의 cv2.cvtColor() 함수를 사용해 흑백 이미지를 컬러 이미지로 변환하는 것은 가능한 방법입니다. 다만, 이 경우에는 흑백 이미지가 컬러 이미지로 변환되었을 뿐 실제로는 원래의 컬러 정보가 없기 때문에, 이 변환된 이미지를 사용해 학습하는 것이 실제 컬러 이미지를 사용하는 것보다 성능이 떨어질 수 있습니다.
다음으로, 흑백 이미지의 경우에는 채널이 1개밖에 없기 때문에, transforms.Normalize에서 mean(평균)과 std(표준편차)의 값을 각각 1개만 사용해야 합니다. 예를 들어, ImageNet의 흑백 이미지에 대한 mean과 std를 사용한다면 다음과 같이 코드를 고민해볼 수 있을 것 같습니다.
transforms.Normalize([0.485], [0.229])
또는 흑백 이미지를 3 채널 RGB 이미지로 변환하는 함수를 작성하고, 이를 torchvision의 transforms에 추가하는 방법도 고민해볼 수 있을 것 같습니다. 이 때 transforms.Normalize에서 평균과 표준편차는 모든 채널이 동일하게 설정되어야 합니다.
다음은 변환 함수와 흑백 이미지에 대한 데이터 로딩 부분의 수정된 코드입니다:
from torchvision import transforms
from PIL import ImageOps
# New transform to convert grayscale images to RGB
def to_rgb(image):
return image.convert('RGB')
input_size = 224
transforms_for_train = transforms.Compose([
to_rgb, # Add this transform
transforms.RandomResizedCrop(input_size, scale=(0.5, 1.0)),
transforms.RandomHorizontalFlip(),
transforms.RandomVerticalFlip(),
transforms.RandomRotation(10),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.485, 0.485], [0.229, 0.229, 0.229]) # Change these values
])
transforms_for_val_test = transforms.Compose([
to_rgb, # Add this transform
transforms.Resize(input_size),
transforms.CenterCrop(input_size),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.485, 0.485], [0.229, 0.229, 0.229]) # Change these values
])
위의 코드에서 to_rgb 함수는 흑백 이미지를 3 채널 RGB 이미지로 변환하고, transforms.Normalize는 모든 채널에 대해 동일한 평균 및 표준편차를 사용합니다. 이렇게 하면 흑백 이미지를 사용할 수 있지만, 원본 데이터가 컬러 이미지로 훈련된 pretrained 모델과 같이 잘 작동할지는 보장할 수 없습니다. 가장 좋은 성능을 얻으려면 원본 데이터와 동일한 형식의 이미지를 사용하는 것이 좋습니다.
감사합니다.
import torch가 안되는 경우는 어떻게 하나요?
0
28
1
강의 필기는 어떻게 하나요?
0
87
1
섹션 5퀴즈 4번 문제 보기 오류로 보임
0
66
1
섹션17 81번이랑 82번 강의가 중복되는 것 같아서 질문드립니다.
0
91
2
강의교안이 안 옵니다
0
84
1
17-2강 Transfer learning 실습 관련 질문
0
137
2
13섹션 강의자료가 없네요^^
0
94
1
강의자료가 없네요.
0
110
2
LSTM 모델 학습 관련한 질문입니다.
0
130
1
MSE LOSS 관련
0
134
1
test시 minibatch 사용?
0
134
1
Average Test loss 계산식 문의
0
103
1
파이토치 설치
0
251
1
[Pytorch 기울기의 누적 곱? 누적 합?]
0
136
1
3d 텐서에서의 축 구분 질문
0
121
1
항상 tensor([0., 0., 0.]) 형식으로만 나오는 이유
0
114
1
강의자료 PDF 다운로드에 관하여
0
136
1
[실무에서 판다스 copy()메서드의 깊은복사 얕은복사 조정 소요가 생길까?]
0
118
1
섹션 다양한 Optimizer 정리하기 중 딥러닝으로 Regression 문제 적용해보기 (House Price Kaggle 문제) 강의에서 오류가 발생합니다.
0
152
1
마지막에 confusion matrix 작성할때
0
160
1
아나콘다를 사용하지 않고 파이토치 사용하는 방법
0
858
1
test data 의 loss 계산식 문의
0
291
1
차원 출력 관련 문의
0
250
1
섹션 7-4 당뇨병
0
390
3





