토치로 yolov5모델을 로드하려고 하는데
model = torch.hub.load('ultralytics/yolov5', 'custom', path='D:/best.pt', force_reload=True)
hub가 아닌 로컬에서 하는 방법이 없을까요?ㅠㅠ
토치로 yolov5모델을 로드하려고 하는데
model = torch.hub.load('ultralytics/yolov5', 'custom', path='D:/best.pt', force_reload=True)
hub가 아닌 로컬에서 하는 방법이 없을까요?ㅠㅠ
안녕하세요, @1112 님.
글에서 적어주신 코드는 PyTorch Hub를 사용(torch.hub.load()
)하여 불러오는 것을 말씀해주신 것 같은데요, 맞으실까요?
(yolov5의 아래 예시처럼 사용하시기 위해 가져오신 것처럼 보입니다. )
import torch
# Model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
# Image
img = 'https://ultralytics.com/images/zidane.jpg'
# Inference
results = model(img)
다만 질문해주신 것은 이해가 잘 안되었는데요,
로컬에서 가져오신다는 말씀은 위와 같이 가져온 yolov5 모델을 로컬에 저장하고 불러오는 방법이 궁금하신 것일까요?
혹시 torch.save()
등을 사용하여 일반적인 모델 저장 / 불러오기 방법을 사용하지 못하시는 상황이신지 궁금합니다.
감사합니다~
네 맞습니다!! yolov5 모델을 로컬에 저장하고 불러오는 방법이 궁금합니다ㅠㅠ
네, PyTorch Hub에서 불러온 yolov5s 모델을 로컬에 저장한 뒤에,
일반적인 모델을 저장하고 불러오는 방법과 동일하게 모델을 저장하는 방식으로는 원하시는 것을 진행하시기 어려우신지 궁금했습니다. ^^;
일반적인 모델의 저장 / 불러오기는 torch.save()
문서와 아래 튜토리얼을 참고하시면 좋을 것 같습니다.
아....토치에 대한 이해가 없었네요ㅠㅠ 감사합니다~!!!
네, 혹시나 진행하시면서 다른 궁금하신게 있으시면 알려주세요
ModuleNotFoundError: No module named 'models
이라는 이슈가 발생했는데 YOLOv5는 .save를 사용하려면
.state_dict()를 사용해야 하나요??
pkl로 저장을 해야 하나요??
안녕하세요, @1112 님.
남겨주신 에러 메시지는 models
라는 모듈이 없다는 것인데요, 어떤 코드를 사용하셨을까요?
저장하는 방식은 모델의 구조(YOLOv5 등)보다는 프레임워크에 따라서 달라지는 것이고,
PyTorch에서는 위 튜토리얼처럼 다양한 방식으로 모델을 저장하고 불러오는 방식을 제공하고 있습니다.
불러오기 단계가 아니라 저장하는 단계에서 위와 같은 에러를 보셨다면
사용하시는 코드의 오류를 먼저 살펴보시는 것이 좋을 것 같습니다.
import torch
model = torch.hub.load('ultralytics/yolov5', 'custom', path='/content/drive/MyDrive/dataset2/best.pt', force_reload=True)
yolov5모델을 커스텀 한후에
torch.save(model, './best.pth')
모델을 저장 후
model = torch.load('/content/drive/MyDrive/tmp.pth')
모델을 로드하려고 했을 때 발생한 문제였습니다ㅜㅜ
안녕하세요, @1112 님.
작성해주신 코드에는 models
가 보이지 않는데요,
혹시 전체 에러 메시지도 함께 공유해주실 수 있으실까요?
yolov5 모델을 로컬로 저장한 뒤 같은 환경의 다른 노트북으로 옮기려면 어떻게 해야 하나요? 도움 부탁드립니다..
안녕하세요, @misoace 님.
학습한 모델을 다른 장치에서 불러오고 싶으시다는 말씀으로 이해했습니다. 맞으실까요?
모델을 저장하고 불러오는 것이 익숙하지 않으시다면, 먼저 아래 튜토리얼을 보시면 도움이 되실 것 같습니다.
모델을 이동하시는 목적이 (1) 단순히 추론을 위해서인지, 아니면 (2) 추가적인 학습도 하기 위해서인지에 따라 저장을 어디까지 해야 하는지가 달라질 것 같습니다.
위 튜토리얼의 내용 중, 위 튜토리얼의 앞 부분과 함께, 아래 3개 섹션 정도를 읽어보시고 따라해보시면 이해가 되실 것 같습니다.
더불어, 새로운 질문은 덧글보다는 새 글로 남겨주시는 것이 다른 분들도 함께 보시고 답변해주시기 좋을 것 같습니다.
감사합니다.
빠른 답변 감사합니다~ 저는 추론을 위해서 모델을 저장하고 불러오기가 필요합니다. 알려주신 내용 중에서 모델 초기화는 어떻게 해야 할지 도움 부탁드립니다. yolov5을 이용하고 있는데요..
위 튜토리얼의 모델 초기화는 사용하고 계신 yolov5 모델의 인스턴스를 만드는 것을 뜻합니다. 현재 장치에서 yolov5 모델 객체를 어떻게 생성하시고 학습하셨는지를 참고하시면 될 것 같습니다.
위 튜토리얼에 있는 아래와 같은 코드를 기준으로 말씀드리면, model
객체는 TheModelClass
클래스의 인스턴스입니다.
model = TheModelClass()
TheModelClass
가 정의된 코드(class TheModelClass(nn.Module): ...
와 같은)를 새로운 장치로 복사하신 뒤 동일하게 model
객체를 생성하시고, 기존에 저장하셨던 가중치 등(state_dict
라고 불리는)을 불러오시면 될 것 같습니다.
(클래스, 객체에 대한 더 자세한 설명이 필요하시다면 아래 링크를 참고해주시면 좋을 것 같습니다.)
혹시 다른 초기화를 뜻하셨거나, 이해가 잘 안되시면 알려주세요~
현재 장치에서 사용하고 계신 코드(모델을 정의하거나 선언하는 부분) 또는 에러가 발생하셨다면 에러 메시지와 함께 이해가 잘 안되시는 부분을 알려주시면 도움이 될 것 같습니다.
감사합니다~ Model Class 찾아서 객체 생성하고 있네요. 아직 에러가 많지만^^ 해결하면서 특이한 내용있으면 또 여쭤볼께요. pytorch를 사용한 모델링에 대해 좋은 정보가 있나 자주 방문드리겠습니다. 다시 한번 감사드립니다.
잘 되신다니 다행이네요.
축하드립니다~
관련 해결 방법을 블로그에 정리 해보았습니다.
혹시나 이런 외부 링크를 첨부하여 답글을 다는 것이 금지되어 있다면 답변을 삭제하도록 하겠습니다.