Yolov8로 커스텀 데이터 학습 및 실시간 객체 탐지하기 #2
Вставка
- Опубліковано 8 вер 2024
- #yolo #yolov8 #인공지능#ai #인공지능학습 #computervision #시각지능 #ai #객체탐지 #객체인식
#객체추적 #objectdetection #objectrecognition
Learning custom data training with Yolov8
Yolov8를 활용해서 커스텀 데이터 학습, 자동화 툴 구현! 데이터셋을 제대로 다루는 법에 대해서 공부해봅시다! 객체 탐지 서비스는 기본
좋아요/구독 : / @aidoer
source code : github.com/lee...
안녕하세요, aidoer님 덕분에 재밌는 실습 진행했습니다! 감사합니다.
혹시 참고하셨던 문헌이나 논문이 있을까요? 만약 있으시다면 알려주시면 감사하겠습니다. 정말 재미있어서 더 깊게 공부해보고 싶어서 부탁드립니다!
재미가 있다니 좋은일입니다. original paper는 arxiv.org/abs/1506.02640 여기를 참고하시면 되고 버전마다 차이점은 공식 깃허브에서 공부하시면 도움이 될 듯합니다.
19:07 질문이 있습니다. 로컬에서 cpu로 돌리니 너무 느려서 코랩에서 돌리려고 합니다. 말씀하신 것처럼 새로 만든 정답지를 활용해야 한다는 건 알겠는데, 이걸 어떻게 활용해야 하는지 모르겠습니다.19:07 회면에 나오는 train\labels 안의 파일을 모두 지우고, 해당 위치에 새로 만든 정답지를 업로드해야 하는 건가요?
로컬경로를 참조해서 진행하는 거라서 코랩상에서 따로 파일을 건들 필요는 없을 것 같은데, 그냥 브이에스코드에서 적은 코드를 코랩애서 복붙하면 되려나요
# train 폴더와 test 폴더 생성 확인
from glob import glob
train_img_list = glob('C:\\Users\\Hannibal\\Desktop\\HardHat\\train\\images\\*.jpg')
train_txt_list = glob('C:\\Users\\Hannibal\\Desktop\\HardHat\\train\\labels\\*.txt')
test_img_list = glob('C:\\Users\\Hannibal\\Desktop\\HardHat\\test\\images\\*.jpg')
test_txt_list = glob('C:\\Users\\Hannibal\\Desktop\\HardHat\\test\\labels\\*.txt')
print(len(train_img_list), len(test_img_list))
print(len(test_txt_list), len(test_img_list))
이렇게 진행했을 때 값이 0 0 0 0이 나오는 이유는 무엇일까요? 해당 경로에 파일들이 다 있는데
@@DaeSeung730 해당 이미지 파일에 정답지가 매칭되야 하니까, 로컬에서 수정한 파일을 코랩에 업로드해서 이미지랑 답안지가 매칭되면 학습이 완벽하게 되실겁니다!
@@aidoer 15:49 의 결과값이
5269 1766
6847 1766
4215 1054 라고 나오는데, 아마 merge시킨 정답지의 크기에서 문제가 생긴 것 같습니다. 혹시 어떤 문제일지 가늠이 가실까요?
또한 마지막에 에포크30으로 머신러닝 돌릴 때 문제가 있습니다. 브이에스코드상에서는 잘 됩니다. 하지만 코랩에서는 아래와 같은 오류코드가 뜹니다.
HandHat 폴더에 있는 data.yaml 파일을 코랩 상에 여러군데 업로드 해봤지만, 해결하지 못 했습니다. 코랩의 어디에 업로드해야 할까요? 아니면 코랩에서 가동할 때는 yaml을 수정하는 코드를 수정해야 할까요
Ultralytics YOLOv8.2.32 🚀 Python-3.10.12 torch-2.3.0+cu121 CUDA:0 (Tesla T4, 15102MiB)
engine/trainer: task=detect, mode=train, model=yolov8n.pt, data=data.yaml, epochs=30, time=None, patience=100, batch=16, imgsz=640, save=True, save_period=-1, cache=False, device=None, workers=8, project=None, name=train12, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, single_cls=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, freeze=None, multi_scale=False, overlap_mask=True, mask_ratio=4, dropout=0.0, val=True, split=val, save_json=False, save_hybrid=False, conf=None, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=None, vid_stride=1, stream_buffer=False, visualize=False, augment=False, agnostic_nms=False, classes=None, retina_masks=False, embed=None, show=False, save_frames=False, save_txt=False, save_conf=False, save_crop=False, show_labels=True, show_conf=True, show_boxes=True, line_width=None, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=False, opset=None, workspace=4, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, pose=12.0, kobj=1.0, label_smoothing=0.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, bgr=0.0, mosaic=1.0, mixup=0.0, copy_paste=0.0, auto_augment=randaugment, erasing=0.4, crop_fraction=1.0, cfg=None, tracker=botsort.yaml, save_dir=runs/detect/train12
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/ultralytics/engine/trainer.py", line 522, in get_dataset
data = check_det_dataset(self.args.data)
File "/usr/local/lib/python3.10/dist-packages/ultralytics/data/utils.py", line 329, in check_det_dataset
raise FileNotFoundError(m)
FileNotFoundError:
Dataset 'data.yaml' images not found ⚠, missing path '/content/datasets/valid/images'
Note dataset download directory is '/content/datasets'. You can update this in '/root/.config/Ultralytics/settings.yaml'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/bin/yolo", line 8, in
sys.exit(entrypoint())
File "/usr/local/lib/python3.10/dist-packages/ultralytics/cfg/__init__.py", line 591, in entrypoint
getattr(model, mode)(**overrides) # default args from model
File "/usr/local/lib/python3.10/dist-packages/ultralytics/engine/model.py", line 655, in train
self.trainer = (trainer or self._smart_load("trainer"))(overrides=args, _callbacks=self.callbacks)
File "/usr/local/lib/python3.10/dist-packages/ultralytics/engine/trainer.py", line 130, in __init__
self.trainset, self.testset = self.get_dataset()
File "/usr/local/lib/python3.10/dist-packages/ultralytics/engine/trainer.py", line 526, in get_dataset
raise RuntimeError(emojis(f"Dataset '{clean_url(self.args.data)}' error ❌ {e}")) from e
RuntimeError: Dataset 'data.yaml' error ❌
Dataset 'data.yaml' images not found ⚠, missing path '/content/datasets/valid/images'
Note dataset download directory is '/content/datasets'. You can update this in '/root/.config/Ultralytics/settings.yaml'
@@DaeSeung730 훈련셋과 검증셋 갯수, 이미지 파일 갯수와 정답지 갯수가 반드시 일치해야 하구요. data.yaml 파일은 코랩에 ultralytics의 루트 경로에 디폴트로 위치합니다. 영상은 데이터셋 타겟팅을 자동화 코드로 구현한 것이고. 직접 수정해도 상관없습니다(names, nc, 데이터셋 경로) 코랩에서 데이터셋 경로를 설정해주시면 됩니다.
댓글이 사라졌네요~