본문 바로가기
Computer Science/Error Code

[Error Code] RuntimeError: Dataset 'data.yaml' error

by Henry Cho 2023. 11. 14.
728x90

RuntimeError: Dataset 'data.yaml' error


# RuntimeError, 데이터셋 경로를 찾지 못할 때

모델링에 학습할 데이터셋을 만들고 해당 데이터셋에 대한 경로를 입력해서 학습을 시키려고 하는데 에러가 발생하는 경우가 있다. yaml 파일 안에 각 학습할 데이터셋의 경로를 제대로 지정해 두었는데도 불구하고 지속적으로 RuntimeError가 뜨면서 경로를 찾을 수 없다고 나온다면 미치고 팔짝 뛸 노릇이다. 글쓴이가 개인적으로 싫어하는 에러코드가 바로 간단하면서 분명히 문제가 없는데 문제가 있다고 할 때이다. 어렵거나 코드 안에 에러가 있으면 찾아서 고쳐나가면 되지만 이렇게 경로가 문제가 없는데 갑자기 안된다고 하면 스트레스를 받는다.

 

따라서 이번 에러코드 포스트에서는 데이터셋 경로를 못 찾는 RuntimeError를 해결하는 방법에 대해서 살펴보도록 하자. 참고로 같은 이름의 에러라도 에러가 발생하는 요인들은 각기 다르기 때문에 글쓴이의 상황과 동일한 지를 아래의 조건을 비교해서 확인 후에 따라 해보길 바란다. 괜히 경우가 다른데 이것저것 시도해보다보면 짜증만 더 나는걸 글쓴이도 잘 안다.


# 에러 조건

  • 발생했던 에러의 조건은 다음과 같다.
  • 예측 모델링에 사용할 .yaml 파일 경로 지정 후 머신러닝 학습을 진행함.
  • 경로 지정에 문제 없으나, 학습할 이미지 경로를 찾지 못한다고 나옴.
  • train, test, vaildation 중에서도 vaildation에 해당하는 이미지 폴더 경로를 찾지 못함.
  • 결국 RuntimeError가 발생하며 데이터셋 에러라고 뜸.

# 해결 방법

위와 같은 경우, 코드 자체에 문제가 없고 경로 자체에도 문제가 없을 가능성이 높다. 하지만 문제는 경로를 작성하는 방법에 차이가 있는데, 이때 에러가 발생할 수도 있다. yaml 파일에서 각 데이터셋의 경로를 지정할 때 보통 "data"나 "dataset"이라는 폴더 안의 구분하여 저장해 둔다. 그렇기에 우리는 공통적인 경로에 대해서는 path: function을 사용해서 경로를 작성해 주고 뒤에 달라지는 데이터셋의 경로를 각기 다르게 입력해 준다.


path: /...
train: /...
val: /...
test: /...

nc: ...
names: ['...'], ...

위의 코드를 살펴보면 문제가 없고 실제로 사용이 되지만 아무 이유 없이 데이터셋 경로를 못 찾는 에러가 지속적으로 발생한다면 공통으로 사용된 path function에 대해서 코드가 인식하는데 에러가 발생했을 가능성이 있다. 이럴 경우 path funciton을 사용하지 말고 각기 다른 데이터셋의 모든 경로를 작성해 주면 문제가 쉽게 해결될 수 있다.


train: /...
val: /...
test: /...

nc: ...
names: ['...'], ...

위와 같이 path function을 굳이 삭제해주지 않더라도 전체 경로를 각기 입력해 주었다면 문제없이 모델링 학습이 진행되는 걸 확인할 수 있다. 위와 같은 방법으로 문제가 해결되길 바란다.


 

728x90

댓글