왕현성
코딩발자취
왕현성
전체 방문자
오늘
어제
  • 코딩 (277)
    • Python (71)
    • Java (16)
    • MySQL (34)
    • 인공지능 (48)
      • 머신러닝 (16)
      • 딥러닝 (32)
    • 영상처리 (4)
    • Rest API (21)
    • Android Studio (25)
    • streamlit (13)
    • DevOps (22)
      • AWS (9)
      • PuTTY (5)
      • Git (4)
      • Serverless (2)
      • Docker (2)
    • IT 기술 용어 (6)
    • 디버깅 ( 오류 해결 과정 ) (17)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • tune()
  • imageprocessing
  • PYTHON
  • unsupervised
  • yolov8
  • labelme
  • maskimage
  • get_long_description
  • OpenCV
  • 컴퓨터비전
  • matplotlib
  • encoding='utf-8'
  • 의료이미징
  • 기상탐사
  • numpy
  • pip install labelme
  • 영상처리역사
  • ComputerVision
  • pytorch
  • UnboundLocalError
  • PIL
  • labelme UnocodeDecodeError
  • TensorFlow
  • 영상기술
  • ckpt_file
  • 딥러닝
  • alibi-detection
  • 영상처리
  • 비지도학습
  • alibidetect

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
왕현성

코딩발자취

[Yolov8] 하이퍼파라미터 튜닝 UnboundLocalError 극복하기
디버깅 ( 오류 해결 과정 )

[Yolov8] 하이퍼파라미터 튜닝 UnboundLocalError 극복하기

2024. 4. 2. 17:56
728x90

 

 

"Ultralytics YOLO 모델을 사용하는 하이퍼파라미터 튜닝 과정에서 직면한 UnboundLocalError 해결 과정을 공유합니다.

 

위 오류는 .tune() 메소드 내에서 ckpt_file이 할당되기 전에 참조될 때 발생했습니다. 튜닝 반복 중 체크포인트 파일 경로가 올바르게 설정되지 않아 발생한 문제였죠.

 

위 문제를 해결하기 위해 ultralytics 라이브러리 재설치, 종속된 라이브러리들 재설치를 해보았지만 해결하지 못 했었습니다.

 

yolov8 공식 깃허브의 issue에서 https://github.com/ultralytics/ultralytics/pull/6614/commits/3a71f396759c7017275662556085212f8d53e6fe

 

`ultralytics 8.0.220` fix UnboundLocalError in tuner.py by mshamrai · Pull Request #6614 · ultralytics/ultralytics

Hi! I've experienced an error in tuner.py: Traceback (most recent call last): ...

github.com

위 해결 방법을 찾게 되었고, 이 방법을 참고하여 해결할 수 있었습니다.

 

문제의 핵심은 튜닝 과정에서 모델의 체크포인트 파일을 참조하기 전에 해당 파일이 존재하는지 또는 생성될 위치가 올바른지를 확인해야 했다는 것입니다. 수정 과정은 다음과 같습니다:

 

tuner.py 파일에서 ckpt_file의 위치를 결정하는 로직을 try-except 블록 바로 앞, 즉 모델 학습을 시도하기 전으로 이동시켰습니다.

 


이렇게 함으로써, 학습 실패 시 ckpt_file에 대한 참조가 시도되기 이전에 이미 해당 변수가 할당된 상태를 보장할 수 있었습니다.
이 수정을 통해, 하이퍼파라미터 튜닝 반복 과정이 원활하게 진행될 수 있도록 만들었습니다.
코드는 단순하지만, 이 과정을 통해 복잡한 디버깅 문제를 해결하는 데 큰 도움이 되었습니다. 이 경험을 통해 학습 프로세스가 중단되었을 때도 필요한 변수가 적절히 초기화되어 있어야 한다는 중요한 교훈을 얻었습니다. 이러한 접근법은 향후 유사한 문제에 직면했을 때 신속하게 대처하는 데 도움이 될 것입니다."

'디버깅 ( 오류 해결 과정 )' 카테고리의 다른 글

labelme 설치 중 UnocodeDecodeError 해결법  (0) 2023.08.25
Android - NotFoundException 에러 해결 과정  (0) 2023.01.27
MySQL - 테이블 이름과 MySQL의 키워드가 같을 때 오류 해결방법  (0) 2023.01.17
AWS Lambda Layer ModuleNotFoundError ( 라이브러리 종속성,dependency )  (0) 2023.01.12
Python DropNaN 이후 index 에러 해결과정  (0) 2022.12.21
    '디버깅 ( 오류 해결 과정 )' 카테고리의 다른 글
    • labelme 설치 중 UnocodeDecodeError 해결법
    • Android - NotFoundException 에러 해결 과정
    • MySQL - 테이블 이름과 MySQL의 키워드가 같을 때 오류 해결방법
    • AWS Lambda Layer ModuleNotFoundError ( 라이브러리 종속성,dependency )
    왕현성
    왕현성
    AI 머신비전 학습일지

    티스토리툴바