PyTorchKorea / tutorials-kr

🇰🇷파이토치에서 제공하는 튜토리얼의 한국어 번역을 위한 저장소입니다. (Translate PyTorch tutorials in Korean🇰🇷)
http://tutorials.pytorch.kr
BSD 3-Clause "New" or "Revised" License
339 stars 225 forks source link

TorchVision 객체 검출 미세조정(Finetuning) 튜토리얼에 제시된 소스코드 에러 #792

Open yundaehyuck opened 9 months ago

yundaehyuck commented 9 months ago

문서 URL

수정이 필요한 URL을 남겨주세요. (예. https://tutorials.pytorch.kr/beginner/basics/intro.html)

변경 사항

(1)어떤 단어 / 문장 / 내용이 (2)어떻게 변경되어야 한다고 생각하세요?

1)

문서 초반에

class PennFudanDataset(torch.utils.data.Dataset)을 만드는 소스코드에서

    # 모든 것을 torch.Tensor 타입으로 변환합니다
    boxes = torch.as_tensor(boxes, dtype=torch.float32)
    # 객체 종류는 한 종류만 존재합니다(역자주: 예제에서는 사람만이 대상입니다)
    labels = torch.ones((num_objs,), dtype=torch.int64)
    masks = torch.as_tensor(masks, dtype=torch.uint8)

    image_id = torch.tensor([idx])
    area = (boxes[:, 3] - boxes[:, 1]) * (boxes[:, 2] - boxes[:, 0])
    # 모든 인스턴스는 군중(crowd) 상태가 아님을 가정합니다
    iscrowd = torch.zeros((num_objs,), dtype=torch.int64)

image_id = torch.tensor([idx])가 image_id = idx로 바뀌어야 합니다.

이 부분으로 인해 마지막 training시

# 10 에포크만큼 학습해봅시다
num_epochs = 10

for epoch in range(num_epochs):
    # 1 에포크동안 학습하고, 10회 마다 출력합니다
    train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=10)
    # 학습률을 업데이트 합니다
    lr_scheduler.step()
    # 테스트 데이터셋에서 평가를 합니다
    evaluate(model, data_loader_test, device=device)

print("That's it!")

AssertionError: Results do not correspond to current coco set 에러가 납니다.

image_id = idx으로 고쳤을때 해결됨을 확인했습니다.

2)

문서 중간에 transform을 만드는 코드에서

import transforms as T

def get_transform(train):
    transforms = []
    transforms.append(T.PILToTensor())
    transforms.append(T.ConvertImageDtype(torch.float))
    if train:
        # (역자주: 학습시 50% 확률로 학습 영상을 좌우 반전 변환합니다)
        transforms.append(T.RandomHorizontalFlip(0.5))
    return T.Compose(transforms)

transforms.append(T.ConvertImageDtype(torch.float))이 transforms.append(T.ToDtype(torch.float, scale = True))으로 바뀌어야합니다.

T.ConvertImageDtype(torch.float)이 존재하지 않는다는 attribute error가 납니다.

추가 정보

위와 같이 생각하신 이유 또는 다른 참고할 정보가 있다면 알려주세요.

1)

image

2)

image