반응형

프로그래밍/데이터 사이언스 공부 39

클래스 명은 같고 클래스 개수는 다른 두 데이터셋으로 모델 훈련 시 성능 저하 해결 과정

클래스 명이 같은 두 데이터셋으로 모델을 훈련시켰는데 하나의 모델만으로 훈련시킬 때가 성능이 더 괜찮다. 해당 데이터셋들을 자세히 뜯어보니 원인으로 추정되는 것을 발견했다. 위 사진을 보면 car 클래스의 인덱스는 0, large bus 클래스의 인덱스는 1, small truck 클래스의 인덱스는 4이다. 위 사진으로는 어느 인덱스가 car인지 small truck인지 구분이 가지 않지만 다른 이미지들의 라벨을 살펴보고 나온 인덱스의 결과는 다음과 같다. 클래스명\데이터셋 이름 데이터셋 P1 데이터셋 P2 car 0 0 large_bus 1 1 large_truck 2 2 medium_truck 3 3 small_bus 4 자료 없음 small_truck 5 4 small_bus, small_truck..

Training yolo model with multiple datasets

여러 데이터셋으로 한 모델을 학습시킬 때 한 데이터셋만으로 학습시킬 때보다 성능이 저하하는 현상을 겪고 있다. 게시글의 제목처럼 구글에 검색했고 참고할만한 자료를 아래에 정리해둔다. 곧 이를 참고해 해결법을 모색할 생각이다. https://github.com/ultralytics/yolov5/issues/6781 What is the recommended way to train 2 new datasets with different classes via transfer learning in YOLOv5? · Issue #6781 · ul Search before asking I have searched the YOLOv5 issues and discussions and found no similar que..

Yolov8 'closing dataloader mosaic' issue

모델을 학습 시킬 때마다 40에폭을 넘어갈 때면 Closing dataloader mosaic 라는 오류문구가 출력되었다. 훈련 지표야 매번 들쑥날쑥하니 지금까지 신경을 쓰진 않았는데 항상 해당 오류가 출력되고나서 mAP 값이 낮아지는 것이 마음에 걸려서 한번 찾아보았다. https://github.com/ultralytics/ultralytics/issues/372 Closing dataloader mosaic · Issue #372 · ultralytics/ultralytics Search before asking I have searched the YOLOv8 issues and discussions and found no similar questions. Question I'm trying to ..

Yolov8은 두개 이상의 데이터셋으로 학습시킬 때 오류가 발생한다

현재 Roboflow에 두개의 데이터셋을 제작 중이다. 영상 소스가 많아서 이것들을 프로젝트에 집어넣다보니 계정 플랜을 업그레이드하지 않으면 영상 소스를 더 넣을 수 없게 되어 분리하였었다. 현재 차종 6가지에 대한 분류와 추적을 위해 yolov8 모델을 파인튜닝 중인데 그동안 두개의 데이터셋으로 학습시킨 것이 결과가 너무 안좋았다. 내가 알기로는 데이터셋이 달라도 이름만 같다면 같은 이름의 클래스에 대해 추가학습을 하는 것으로 아는데 성능이 전혀 개선되지 않고 학습을 하면 할수록 오히려 퇴보되는 것 같아 모델을 새로 한 데이터셋으로만 학습시켜보았다. 결과가 오히려 좋았다. 한 데이터셋을 200에폭 정도 학습시켰는데 지금까지 두가지 데이터셋으로 수백에폭은 학습시킨 모델보다 성능이 좋았다. 그리고 그 모델..

라벨링 툴 CVAT 사용기

https://www.cvat.ai/ CVAT Powerfull and efficient open source data annotation platform for computer vision datasets www.cvat.ai 데이터 라벨링을 하여 데이터셋을 제작할 수 있다는 CVAT을 사용해봤다. 프로젝트 메뉴에서 Create a new project로 프로젝트를 생성 가능하고 프로젝트 내에서 각 task를 생성하고 어노테이션 하고 싶은 이미지나 영상을 업로드할 수 있다. 어노테이션 환경은 다른 라벨링 툴과 비슷하다. 화면 좌측의 마법막대 같은 것으로 auto labeling이 가능한 것도 지금 사용중인 roboflow와 유사하다. 한 영상의 이미지들을 전부 autovatic annotation으로 ..

ImportError: cannot import name 'bbox_overlaps' from 'cython_bbox'

하루 종일 고민한 문제다. 이건 구글링 해도 제대로 뭐가 안나왔는데 참 쉽게 해결되서 허탈하다. 또 경로 문제다. 위 오류를 보면 matching.py에서 코드를 실행하는데 오류가 나온다. 위 코드에서 7번줄이 오류가 발생하는 코드이고 cython_bbox는 pip3로 안받아지는 것 같아서 직접 git clone으로 받아둔 상태였다. 여기서 문제는 아래의 사진이다. 오류의 원인이 된 코드가 import 하고싶어 하는 bbox_overlaps이고 이는 cython_bbox.pyx 파일에 정의되어 있다. 그리고 패키지 폴더명도 cython_bbox이다. 이게 pip3로 정상적으로 import되는 코랩 환경과는 다르게 나는 직접 패키지를 다운 받아서 위 코드에 폴더명을 추가로 명시해야 했다. 이렇게 기존 코드..

AttributeError: module 'numpy' has no attribute 'float'

넘파이 1.24.0부터는 numpy.float, numpy.int를 삭제하여 그렇다고 한다 !pip3 uninstall numpy --yes !pip3 install numpy==1.19.5 그래서 넘파이 1.19.5 버전을 설치했다. uninstall문의 yes 옵션은 uninstall이 끝나지 않아서 권한 문제 같아서 추가한 옵션이다. 이를 추가하면 관리자 권한을 얻게 된다. 이제 넘파이 버전도 낮췄으니 되겠지 했는데 ImportError: numpy.core.multiarray failed to import 이런 에러가 나타난다. 넘파이 버전이 낮아서 생기는 문제라고 한다. !pip3 install numpy==1.23.5 1.23.5를 했더니 더이상 오류가 나타나지 않는다. 1.24부터 완전히 n..

cython_bbox 패키지 설치 오류

Collecting cython_bbox Using cached cython_bbox-0.1.3.tar.gz (41 kB) Installing build dependencies: started Installing build dependencies: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'error' error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [..

파이썬 커널과 인터프리터 버전 맞추기

분명 python-opencv 와 여타 패키지들을 설치했지만 Import "패키지" could not be resolved 라며 불러올 수 없었다. 문제점은 파이썬 커널과 인터프리터의 버전 차이였다. 커널은 3.9였지만 인터프리터는 3.11이었다. 인터프리터는 우하단에서 선택해 바꾸거나 vscode 상단 메뉴바에서 view - Command Palette - python: select interpreter로 선택이 가능하다

ByteTrack 패키지에서 import yolox 오류

import yolox print("yolox.__version__:", yolox.__version__) from yolox.tracker.byte_tracker import BYTETracker, STrack from onemetric.cv.utils.iou import box_iou_batch from dataclasses import dataclass @dataclass(frozen=True) class BYTETrackerArgs: track_thresh: float = 0.25 track_buffer: int = 30 match_thresh: float = 0.8 aspect_ratio_thresh: float = 3.0 min_box_area: float = 1.0 mot20: bool = ..

반응형