YOLOv8 커스텀 데이터 학습하기

Поделиться
HTML-код
  • Опубликовано: 24 сен 2024
  • YOLOv8 커스텀 데이터 학습하기
    1. YOLOv8 개요
    2. YOLOv8 커스텀 데이터 학습 프로세스
    3. YAML 파일 만들기
    4. YOLOv8 학습 예제

Комментарии • 90

  • @NeoWizard
    @NeoWizard  Год назад +3

    강의에서 사용된 예제 소스는 아래의 YOLOv8_Object_Detection_Roboflow_Aquarium_Data.ipynb 이며 GitHub 에서 확인 할 수 있습니다. 그리고 YOLOv8 예제는 모두 Google Colab (colab.research.google.com/) 에서 실행되니 참고하시기 바랍니다
    github.com/neowizard2018/neowizard/tree/master/DeepLearningProject/

  • @Jamaphy
    @Jamaphy 5 месяцев назад +2

    강의 정말 너무너무 감사드립니다. 설명해주신 YOLO8 구현이 너무나 심플해서 정말 이게 전부인가 싶을 정도네요. 진행해야 할 과제가 있는데 설명해주신 대로 하면 수월하게 할 수 있을 것 같습니다.

    • @NeoWizard
      @NeoWizard  5 месяцев назад

      도움이 되셨다니 다행입니다. 부족한 강의임에도 봐주셔서 제가 더 감사드립니다

  • @chojin-ko3co
    @chojin-ko3co Год назад +4

    와.... 정말 감사합니다. 단계단계가 이해가 안되었는데 이제는 유기적으로 이해가 잘 되는 것 같습니다.

    • @NeoWizard
      @NeoWizard  Год назад

      공부하시는데 도움이 되셨으면 좋겠습니다. 감사합니다

  • @dhdnsnsk9922
    @dhdnsnsk9922 Год назад +6

    이런 양질의 강의를 올려주시다니... 감사할 따름입니다! 항상 많은 지식 얻어가고 있습니다. 감사합니다!!

    • @NeoWizard
      @NeoWizard  Год назад +1

      도움이 되셨다니 다행입니다. 감사합니다

  • @원격-j8u
    @원격-j8u 7 месяцев назад +2

    친절하고 명쾌한 강의 감사드립니다

    • @NeoWizard
      @NeoWizard  6 месяцев назад

      도움이 되셨다니 다행입니다.

  • @wonpaper
    @wonpaper 3 месяца назад +1

    와 차근차근 단계적으로 설명해주셔서 이해가 너무 잘되네요. 감사합니다.

    • @NeoWizard
      @NeoWizard  3 месяца назад

      저도 감사합니다

  • @lovetangTV
    @lovetangTV 8 месяцев назад +2

    너무 쉽게 전체 흐름을 탐구했습니다. 감사합니다.

    • @NeoWizard
      @NeoWizard  8 месяцев назад

      도움이 되셨다니 다행입니다. 감사합니다

  • @roboticsJBNU
    @roboticsJBNU 9 месяцев назад +2

    한글로 강의를 만들어주셔서 너무 감사합니다. 도움받고 갑니다!

    • @NeoWizard
      @NeoWizard  9 месяцев назад

      도움이 되셨다니 다행입니다. 감사합니다

  • @user-nb2un6cb3e
    @user-nb2un6cb3e Год назад +3

    와 커스텀데이터로 yolo학습하는 강의네요 열공해보겠습니다 감사합니다

    • @NeoWizard
      @NeoWizard  Год назад +2

      도움이 되셨다니 다행입니다.

  • @Junoflowww
    @Junoflowww Год назад +5

    양질의 강의 감사드립니다!! 하나 질문이 있는데 커스텀 이미지 데이터에서 이미지 normalization 과정을 추가하려는데 어느부분에 해야하는건가요??

    • @NeoWizard
      @NeoWizard  Год назад

      이미지 픽셀을 0~1 값으로 정규화시키는 normalization은 모델 학습전에 하시면 됩니다. 즉 model.fit() 전에 정규화를 하시면 되는데, 예제로사용한 roboflow 이미지는 이미 정규화를 포함한 데이터전처리가 된것으로 알고 있습니다, 참고하시기 바랍니다

  • @llliililili9538
    @llliililili9538 8 месяцев назад +2

    안녕하십니까
    우선 좋은 강의를 유튜브에 올려주셔서 잘 이해하여 yolo를 실행 할 수 있게 해주셔서 감사합니다!
    한 가지 궁금한 점들이 있어 질문합니다.
    test하고 싶은 이미지들을 test한 후에 결과를 알 수 있는 그래프를 생성하는 방법 또는 확인할 수 있는 방법을 알고 계십니까?
    ex) 이미지 train 시 mAP, 곡선 그래프 등과 같은 정보들

    • @NeoWizard
      @NeoWizard  8 месяцев назад

      Colab 에서 yolov8 학습(train)을 마치면, /content/runs/detect/train 디렉토리에 confusion_matrix.png, results.csv, results.png 파일이 자동으로 생성됩니다. 여기서 results.png 보시면 말씀하신 mAP, accuracy, recall, loss 등의 그래프가 나옵니다. 그런데 test 는 /content/runs/detect/predict 디렉토리에 말씀하신 mAP, accuracy 등의 graph 가 출력되지는 않는것 같습니다. 한번 확인해 보시면 좋을것 같습니다. 감사합니다

    • @llliililili9538
      @llliililili9538 7 месяцев назад +1

      ​@@NeoWizard 답변 해주셔서 감사합니다 !!
      라벨링 txt 파일과 라베링쳐진 jpg 이미지로만 저장이 되어있는걸 확인했습니다 !
      어떤 명령어를 사용해서 train처럼 그래프와 함께 사진을 저장할 수 있는 방법은 따로 없나요?

    • @NeoWizard
      @NeoWizard  7 месяцев назад

      말씀하신 mAP, accuracy 등은 학습할때 가중치와 바이어스가 최적화되는 과정을 보기위한 평가지표입니다. 그런데 test 라는것은 이미 학습이 완료(즉 가중치와 파라미터가 최적화) 되었다는 가정하에 실행하는것이기 때문에, mAP 나 accuracy 등의 평가지표는 사용하지 않는것이 맞고 의미도 없는 평가지표 입니다.
      즉 test 라는것은 이미 최적화된 시스템에 이미지를 주면, 그 이미지가 몇 % 확률로 detection 되는지를 알아내는 과정이므로 mAP, accuracy 등과는 전혀 다른 지표로 보시는게 맞습니다. mAP, accuracy 등은 학습데이터에 대해서 얼마나 정확하게 맞추어가는지를 나타내는 지표이기 때문입니다

  • @GyeWanKim-q3j
    @GyeWanKim-q3j 10 месяцев назад +1

    정말 많은 도움이 되었습니다. 감사합니다!! 앞으로도 더 많은 영상 올려주세요ㅎㅎ

    • @NeoWizard
      @NeoWizard  10 месяцев назад

      도움이 되셨다니 다행입니다. 조만간 최근 가장 핫한 허깅페이스의 Transformer 를 이용한 Computer Vision, 자연어처리 그리고 PyTorch 등의 강의를 올릴예정이니 공부하시는데 참고가 되면 좋겠습니다. 감사합니다

  • @TedKov
    @TedKov Год назад +4

    좋은 영상 감사합니다.!
    해당 학습된 pt를 이용해서
    안드로이드에 사용하기 위한 tflite 형태로 변환 하는 과정에 대해서도 한번 다루어 주실수있으실까요?

    • @NeoWizard
      @NeoWizard  Год назад +4

      학습된 pt 파일은 model.export(..) 등을 이용해 바로 변환시켜서 안드로이드폰으로 deploy 해서 App UI 만 만들어 주면 되는것 아닌가요 ? 제 생각엔 너무 간단해서 강의를 별도로 만들 필요는 없을것 같다는 생각이 드는데요. export 하는 방법은 다음의 공식 문서를 참조하시면 1 line 으로 가능하다고 생각되니 한번 참조해보시기 바랍니다. 감사합니다
      docs.ultralytics.com/modes/export/

    • @TedKov
      @TedKov Год назад +1

      @@NeoWizard 오! 답변 감사합니다.!!

    • @TedKov
      @TedKov Год назад

      @@NeoWizard yolov8을 이용한 커스텀 데이터 학습시에 학습 정확도를 높이기 위해서 필요한 사항이
      1. 정확하고 많은 Dataset
      2. 많은 학습 횟수
      이 두 가지 이외에 어떤게 필요한지 조언을 부탁드려도 될까요.

    • @NeoWizard
      @NeoWizard  Год назад +4

      yolov8n 모델 이외의 다양한 모델로 학습을 하는것이 필요하며, 딥러닝 필수라 할수 있는 하이퍼 파라미터 튜닝이 주어진 데이터에 맞게 다양한 조합을 만드는게 필요합니다.
      docs.ultralytics.com/modes/train/#usage-examples 에서 나온 Arguments 항목이 모두 하이퍼 파라미터 입니다. 데이터에 맞게 그리고 시스템에 맞게 최적의 하이퍼 파라미터 튜닝하는게 딥러닝의 핵심이니 다양한 조합을 찾아보시기 바랍니다

  • @woonghyeonpark7037
    @woonghyeonpark7037 10 месяцев назад +2

    강의 너무 감사합니다. 공개된 데이터 중에 annotation형식이 YOLO 형식이 아닌경우는 (예를 들어 json파일에 바운딩박스 좌표가 들어있는경우), YOLO 형식으로 바꿔주고 난 다음에 진행해야 하는게 맞겠죠?

    • @NeoWizard
      @NeoWizard  10 месяцев назад +1

      네 YOLO 는 txt 파일을 annotation 으로 사용하니, json 파일을 txt 파일로 변환해서 상용하셔야 합니다. json -> txt 변환 tool 도 있는것으로 알고있으니, 확인해보시고 YOLO 사용해보시면 더 좋을것 같습니다. 감사합니다

  • @twincolorful
    @twincolorful 4 месяца назад +2

    YAML의 파일에서 클래스의 이름을 한글로 만들어넣으면 한글이름으로 검출이 될까요? 그리고 프로그램이 아닌 일반 텍스트 편집기로 편집해도 되나요?

    • @NeoWizard
      @NeoWizard  4 месяца назад +2

      YAML 파일은 일반 텍스트 편집기로 작성해도 되지만, 한글은 지원하지 않습니다. 아니, 정확히 말하면 YAML 이 지원하지 않는게 아니라 인코딩 문제로 한글을 클래스 이름으로 사용할수 없습니다. 한글이 출력되도록 인코딩 변형하신 분들이 가끔 있는것 같던데, 구글 검색해보시면 아마 방법이 나올것 같습니다 (제가 직접 해본적은 없습니다)

  • @qosdino
    @qosdino Год назад +1

    좋은 강의영상 감사합니다! 훈련한 후에 모델을 저장하는 방법은 어떻게 할 수 있을까요?

    • @NeoWizard
      @NeoWizard  Год назад

      훈련된 모델은 자동으로 best.pt, last.pt 로 저장됩니다. 강의 영상 10페이지를 보시면 훈력모델은 runs/detect/train 에 best.pt, last.pt 자동저장된다고 설명해놓았으니 참고하시기 바랍니다. 다운 받으시려면 Colab 에서 해당 디렉토리에서 파일을 (우클릭으로) 다운받으시면 됩니다

  • @youngjoopark4221
    @youngjoopark4221 Год назад +2

    학습된 모델을 활용해서 영상 내에 오브젝트를 인식하고, 좌표를 트래킹 할 수도 있나요? 된다면 저장된 영상과 실시간 영상(캠)에 모두 가능한지도 궁금합니다

    • @NeoWizard
      @NeoWizard  Год назад

      실시간 영상 물론 가능합니다. predict 할때 source 부분에 video 주면 되는데, colab 이 아닌 개인 PC에서 해야합니다. 왜냐하면 colab 에서는 동영상 display 를 지원하지 않으니까 학습된 pt 파일을 다운받아 개인 PC에서 하면 됩니다. 입력소스를 video로 주시고요..제 기억으로는 predict에서 source=0 셋팅하면 될것 같은데 혹시 변경될수도 있으니 YOLOv8 Doc 찾아보시면 확인할수 있습니다

  • @최희정-l9b
    @최희정-l9b Год назад +1

    안녕하세요. 좋은 강의 감사합니다.
    제가 이미지파일과 이미지의 라벨링txt파일을 가지고 있는데, 이 경우에 로보플로우에 업로드해서 자동으로 labeling되도록 할 수 있는지 여쭤보고싶습니다!

    • @NeoWizard
      @NeoWizard  Год назад

      자동으로 라벨링 한다는게 무슨말씀 인가요 ? 이미지 라벨링 txt 파일을 이미 가지고 계신데, 굳이 또 자동 라벨링을 해서 정답파일을 만들 필요 있나요? 그냥 이미지와 정답 txt 파일을 입력으로 해서, YOLOv8 학습시키면 되는데요

  • @potato-t2w
    @potato-t2w Год назад +1

    yolov8n의 추론시간을 줄이려는데, 혹시 640x640보다 작은 사이즈로 학습시키는 방법은 없을까요? 흑백만 학습 시킨다던가..?

  • @이대규-d7v
    @이대규-d7v 7 месяцев назад

    좋은 강의 올려주셔서 감사합니다!! 그런데 질문이 한 가지 있습니다 혹시 모델 학습을 완료한 후에 테스트 이미지를 넣고 바운딩된 이미지를 저장하는데 이 때 이미지 말고 텍스트 파일, 즉 바운딩된 박스의 좌표와 폭 높이를 텍스트 파일로 알 수 있는 방법은 없을까요??

    • @NeoWizard
      @NeoWizard  7 месяцев назад

      현재 그런 기능은 없는걸로 알고 있습니다. 그리고 YOLO에서 바운딩 박스의 폭과 높이는 절대좌표가 아닌 이미지내에서 0~1 사이로 정규화된 상대좌표입니다. 즉 YOLO 아키텍처에서 inference 된 절대좌표를 자동으로 알수 있는 방법은 없습니다

  • @gogumadino
    @gogumadino Год назад +1

    안녕하세요. 강의영상 항상 잘 보고 있습니다.
    다름이 아니라 YOLOv8 오류 관한 질문으로 댓글을 작성해봅니다.
    FileNotFoundError: Image Not Found
    다음과 같은 오류가 계속 뜨는 데 혹시 왜 그런지 알 수 있을까요?
    현재 구글드라이브에 마운트해서 사용하고 있으며 드라이브 마운트와 파일 여부는 문제가 없는 것으로 확인됩니다

    • @NeoWizard
      @NeoWizard  Год назад +1

      오류내용을 보면 Image File 경로가 잘못설정된것인데, YOLO 에서 이미지 경로 설정하는곳은 YAML 파일입니다. 제 영상에서 Aquarium_Data.yaml 파일만들때 경로 어떻게 설정해주었는지 확인하시고, 본인 설정 경로에 맞게 수정하는게 필요할것 같습니다

  • @user-ms2zh8xf7o
    @user-ms2zh8xf7o 5 месяцев назад +1

    좋은 강의 감사드립니다! 궁금한 점이 있는데, 로보플로에 있는 이미지를 clone해서 사용하려고 하는데 이미지 데이터가 중복되어 들어가있는 경우가 있더라구요.
    몇 천 장의 이미지를 비교해보면서 삭제할 수는 없고, 동일하거나 비슷한 데이터들이 train과 test 양쪽에 들어가버리면 안 되니까 삭제를 해야할 것 같은데..
    관련 기능이 있는지 검색해보는데 안 나오네요. ㅠㅠ 좋은 방법이 있을까요?

    • @NeoWizard
      @NeoWizard  5 месяцев назад +1

      질문하신 그런 기능은 없는것으로 알고 있습니다. 만일 동일한 파일이름을 가진 파일이라면, 파이썬 listdir() 함수와 set 기능의 여집합을 이용해서 해당파일을 제거하는 코드를 파이썬으로 작성할수는 있지만, 파일이름이 아닌 이미지의 유사성을 자동으로 찾아주는 기능은 CNN 세그멘터에션을 이용해서 별도의 코드를 짜고 학습을 진행하는 부분인데, 이건 배보다 배꼽이 더 큰 상황입니다.

    • @user-ms2zh8xf7o
      @user-ms2zh8xf7o 5 месяцев назад +1

      @@NeoWizard 그렇군요!!! 여러 방법 알려주셔서 감사합니다😁
      train과 test에 겹치는 데이터는 안 들어가는 게 확실히 좋겠죠? 이걸 무시하고 진행하기에는 test 정확도의 신뢰성이 떨어질 것 같네요…

    • @NeoWizard
      @NeoWizard  5 месяцев назад

      네. train 과 test 는 분리해서 하는게 best 입니다. 대신 train + test 한후에 random 하게 train 과 test 를 분리해서 사용하는 방법도 있습니다. 즉 train 1000개, test 500 개라면 먼저 train+test 1500 개를 만든후에 (이때 동일한 이름의 파일이 train 과 test 에 있다면 overwrite 해주면 중복파일은 자동으로 없앨수 있습니다), 이렇게 합쳐진 파일을 train : test = 67:33 비율로 random 하게 나누면 파일의 다양성을 그나마 좀더 확보할수 있을거 같습니다

    • @user-ms2zh8xf7o
      @user-ms2zh8xf7o 5 месяцев назад

      @@NeoWizard 그렇군요 답변 감사합니다👍👍 일단 중복 이름 데이터를 제거해주는 게 핵심이네요! (동일 이름으로 데이터가 augmentation돼서 만들어진 사진이 여러 장 있더라구요)
      YOLO등을 사용한 object detection을 수행할 때 교차검증(k-fold cross validation)을 자주 사용하나요? 다른 태스크 수행의 경우 겨차검증은 test 정확도의 신뢰성에 있어 거의 반 필수적이라고 들었는데 object detection의 경우 교차검증은 비교적 잘 사용하지 않는 것 같아서요 !

    • @NeoWizard
      @NeoWizard  5 месяцев назад

      딥러닝, 특히 computer vision (classification, detection, segmentation)에서는 교차검증이 기본입니다. 당연히 교차검증을 사용합니다. 단지 제 강의를 포함해서 시중에 나와있는 서적들에서는 분량과 제작시간 문제등으로 언급을 하지 않을뿐입니다. 왜냐하면 detection 을 하려면 우선 classification 개념, 즉 data 부터 learning 까지 이미 알고 있다는 가정에서 YOLO 알고리즘과 NMS 등을 설명하기 때문입니다

  • @조혁준-k8m
    @조혁준-k8m Год назад +1

    안녕하세요 이번에 yolov8을 이용해서 custom data를 학습시켜보고싶은데 한 가지 의문점이 들어 댓글 남깁니다.
    .pt 파일을 만들 때, 꼭 yolov8n.pt같은 미리 학습되어있는 파일 위에 dump시키는 방법밖에 없을까요?
    dump하는 방법 말고 direct로 .pt파일을 만드는 방법은 없을까요?

    • @NeoWizard
      @NeoWizard  Год назад +1

      dump ? dump 라는 단어는 쓰지 않고 pre-trained 모델을 가져와서 fine-tuning 하는것이 일반적입니다. 질문내용처럼 당연히 밑바닥부터 모델을 생성하고 하이퍼파라미터 조정후 학습하는것도 100% 가능합니다. YOLOv8 백본이 PyTorch 이니까 모델 클래수 생성후에 아키텍처 구현하면 되는데, 아키텍처의 복잡도가 상상을 초월하고,, 이로 인해 학습시간은 GPU 이용해도 처음부터 밑바닥부터 학습시키면 수십시간 이상 소요됩니다
      YOLO 아키텍처가 얼마나 복잡한지, 그리고 그것을 처음부터 학습시키면 어느정도의 시간이 소요되는지 official paper 한번 읽어보시기를 추천드립니다.
      이렇게 아키텍처의 복잡도와 엄청난 소요시간으로 인해 기존 학습된 모델을 가져다가 fine-tuning 시키는 transfer learning 이 딥러닝의 기본임을 확인하시면 좋을것 같습니다

    • @조혁준-k8m
      @조혁준-k8m Год назад

      @@NeoWizard 이해 됐습니다. 답변 감사합니다. 어제 이것저것 해보면서 질문이 하나 더 생겼습니다. 코랩 gpu 할당량을 모두 사용한 바람에 스파이더 개발환경에서 학습시켜보려고 제공해주신 코드를 조금 수정해서 실행해봤습니다. 그러나 오류가 나서 디버깅을 해보니 model.train()에서 버그를 발견하였습니다.
      오류 내용은 FileNotFoundError: Image Not Found C:\Users\조혁준\AppData\Roaming\Python\Python39\site-packages\ultralytics\assets\bus.jpg
      이어서 저 디렉토리를 따라 bus.jpg 파일까지 열어봤는데 이상이 없었습니다.. 제 생각에는 yolov8n.pt가 잘 못 다운받아졌거나 pytorch와 cuda의 버전이 맞지 않거나 둘 중 하나일 것 같은데 선생님께서는 어떻게 생각하시나요? 아니면 제 코드를 이메일로 발송드려도 될까요?

    • @NeoWizard
      @NeoWizard  Год назад +3

      error 내용보면 FileNotFound 이므로 당연히 파일 경로가 본인 소스와 맞지않는것이지 yolo8n.pt 와cuda 버전과는 전혀 상관없습니다. 강의에서도 말했지만 YOLO 프로그래밍에서 제일 중요한것은 YAML 파일이라고 했습니다. 제 강의 영상에서 YAML 경로는 당연히 Colab 기준으로 작성된것이므로 YAML 파일 경로를 정확히 수정해주는것이 핵심입니다. 에러 내용이 무엇인지 그리고 어떤상황에서 발생하는지 분석을 먼저 해보시고 그에 맞게 스텝바이스텝으로 접근해 보는게 좋을것 같습니다.

  • @떼껄룩-k4n
    @떼껄룩-k4n Год назад +1

    실시간 영상 내지는 캠으로도 오브젝트를 탐지할 수 있는지 궁금합니다.

    • @NeoWizard
      @NeoWizard  Год назад +1

      실시간 영상 물론 가능합니다. predict 할때 source 부분에 video 주면 되는데, colab 이 아닌 개인 PC에서 해야합니다. 왜냐하면 colab 에서는 동영상 display 를 지원하지 않으니까 학습된 pt 파일을 다운받아 개인 PC에서 하면 됩니다. 입력소스를 video로 주시고요..제 기억으로는 predict에서 source=0 셋팅하면 될것 같은데 혹시 변경될수도 있으니 YOLOv8 Doc 찾아보시면 확인할수 있습니다

    • @떼껄룩-k4n
      @떼껄룩-k4n Год назад +2

      ​@@NeoWizard 감사합니다!!

  • @jws9871
    @jws9871 Год назад

    훈련시킨 후에 jpg 이미지의 예측된 바운딩 박스의 좌표도 출력할수 있나요?

    • @NeoWizard
      @NeoWizard  Год назад

      좌표는 절대좌표가 아닌 0~1 사이의 상대좌표이며, 출력 지원하지 않는걸로 알고 있습니다.

  • @영민킴-w6m
    @영민킴-w6m Год назад +1

    혹시 영상에 있는 물고기도 detection이 가능할까요?

    • @NeoWizard
      @NeoWizard  Год назад

      물론 가능합니다. 학습한후에, predict에서 source를 video 로 입력하면 충분히 가능합니다. 단 colab 에서는 video 출력을 지원하지 얺으니 학습된 pt 파일을 다운받아서 개인 pc 에서 video 입력주고 하면 됩니다.
      docs.ultralytics.com/modes/predict/ 들어가셔서 Sources 내용 참고하시면 됩니다

    • @영민킴-w6m
      @영민킴-w6m Год назад

      @@NeoWizard 혹시 학습된 pt 파일 다운받아서 주피터에서 실행하면 될까요?? 어떻게 하는지 혹시 알려주실수있나요?

    • @NeoWizard
      @NeoWizard  Год назад

      ruclips.net/video/IHbJcOex6dk/видео.html
      여기 들어가서 9분 8초 부터 보면, 단 3줄로 PC에서 실시간 detection 하는 예제 참고하실수 있습니다. 당연히 다운받은 pt 결로를 입력해주셔야 합니다.
      그리고 구글에서 yolov8 video detection 또는 object tracking 등으로 검색하면 자료가 많이 나오니 직접 검색해서 확인해보시기 바랍니다

    • @영민킴-w6m
      @영민킴-w6m Год назад

      @@NeoWizard 너무너무 감사합니다!

  • @sangjoongkim8571
    @sangjoongkim8571 6 месяцев назад

    안녕하세요. 우선 아주 좋은 영상을 공유해주셔서 감사합니다. roboflow에서 받은 Train, valid data를 사용하여 학습 및 검증을 하고 제가 별도로 roboflow의 test data가 아닌 저의 image file들을 CONTENTS 폴더에 업로드하여 결과를 확인했을때는 Object detection을 하지만 정확도가 현저히 떨어집니다. 결과적으로 Roboflow data로 학습한 뒤에 정답(lable)을 모르는 새로운 Image를 검증하는 방법이 따로 있을까요? 확인 부탁드립니다.

    • @NeoWizard
      @NeoWizard  6 месяцев назад

      예제로 제시한 roboflow data 로 학습하였다면, 질문자께서 임의로 올린 데이터도 당연히 roboflow data 에서 제시한 정답을 가져야 합니다. 즉 roboflow 에서 jellyfish, shark 등을 정답으로 가지고 있었다면 질문자님이 test 하고 싶은 데이터도 당연히 jellyfishm shark 등의 이미지여야 합니다. 이런것이 transfer learning 을 이용한 fine-tuning 원리이니까요
      그런데 질문하신 내용을 보면, '정답을 모르는 새로운 이미지' 라고 하셨는데 어떻게 정답을 모를수 있을까요 ? 우리는 정답을 이미 알고 있는 이미지여야 하고, yolo 는 그것을 오로지 정확히 detection 만 해내면 되는 것이니까요...

    • @sangjoongkim8571
      @sangjoongkim8571 6 месяцев назад

      @@NeoWizard 제가 질문을 어렵게 드린 것 같습니다. 저는 지금 차량 속도 표지판 인식 시스템을 연구하고있습니다. 예를들어 Roboflow에서 제공하는 Training, Valid set를 활용하여 YOLO를 학습시킵니다. 그 후에 제가 직접 촬영한 속도 표지판 사진(사람은 표지판에 해당하는 숫자를 알고있지만, YOLO는 아직 정답을 모르는...)을 가지고 TEST했을때에도 Roboflow의 TEST data 결과와 비슷한 결과를 가져야 한다고 생각했는데 인식률이 많이 떨어지는 상황입니다. 제 생각이 맞는 것인지 확인해주시면 감사하겠습니다.

    • @sangjoongkim8571
      @sangjoongkim8571 6 месяцев назад

      추가 설명드리자면 yaml file을 만들때 import yaml
      data = { 'train' : '/content/Traffic_Sign_Data/train/images/',
      'val' : '/content/Traffic_Sign_Data/valid/images/',
      'test' : '/content/Traffic_Sign_Data/test/images_Prescan',
      'names' : ['100', '120', '20', '30', '40', '50', '60', '70', '80', '90'],
      'nc' : 10 } --> 이렇게 test data를 colab의 '/content/Traffic_Sign_Data/test/images_Prescan' 경로에 폴더를 만든 뒤 TEST하고자 하는 Image들을 업로드 해주었고
      test 할때에는
      from glob import glob
      test_image_list = glob('/content/Traffic_Sign_Data/test/images_Prescan/*')
      print(len(test_image_list))
      test_image_list.sort()
      이런식으로 test 하고자하는 image들이 있는 경로를 지정해주어 진행했습니다. 그 결과가 상당히 안좋게 나옵니다. 어떻게하면 별도의 TEST image들을 정확하게 검증할 수 있는지 조언 부탁드립니다.

    • @sangjoongkim8571
      @sangjoongkim8571 6 месяцев назад

      @@NeoWizard 안녕하세요. 계속 문제가 풀리지 않아 조언 주시면 감사하겠습니다. 감사합니다.

    • @SLAM2ROS
      @SLAM2ROS 5 месяцев назад

      안녕하세요 일단 방법론적인 부분에 대해 조언을 할 수 있을 것 같아서 댓글남깁니다.
      우선, roboflow의 어떤 data set을 받으셨는지는 모르겠으나, 원하시는 목표를 구현하기 위해서는 custom data set을 직접 만드시는 게 유리해 보입니다.
      실제 표지판의 경우, 나라마다 그 형태가 다양하고, 카메라의 위치 역시 어떤 자동차에서 촬영하냐에 따라 매우 달라지니깐요.
      따라서 인위적으로 dataset을 만드시고, 실제 촬영데이터로 검증을 하시는 게 좋을 것 같습니다.
      이런 인위적인 dataset을 "Sysnthetic Data"라고 하며 Vision 분야에서는 Blender와 같은 3D Design Tool이 주로 쓰입니다.
      반면에, opencv에서도 간단하게 데이터 증강을 할 수 있는데요, 배경 이미지와, 원하시는 표지만 이미지를 합성하여 data augmentation을 하시면 됩니다.
      일단은 간단하게 opencv로 data augmentation을 하시는 것을 추천드리고, 그래도 잘 안된다면 반사도, 색상 등의 변수를 추가하여 Blender에서 데이터를 만드세요.
      Blender의 경우 Python Scripts를 지원하기 때문에, 추가로 공부하시면 되겠습니다.
      그리고 만드신 Dataset으로 YOLO 학습을 수행하시면 되겠습니다.

  • @콩이-p2n
    @콩이-p2n Год назад

    커스텀 셋을 robo를 사용하지 않고 라벨링 툴은 어떤것이 좋을까요
    (보안 사항 이미지를 다뤄야 하다 보니 생기는 문제네요,,)

    • @NeoWizard
      @NeoWizard  Год назад

      저는 개인적으로 labelImg 툴을 사용합니다. 시중에 나온 툴중에 가장 직관적이라고 생각하지만, 질문자님께서 보기에 좀더 직관적이고 상요하기 쉬운 툴이 있다면 그걸 바로 쓰시길 권장합니다

  • @sphyxiaa6547
    @sphyxiaa6547 Год назад

    커스텀 데이터 학습을 한번 한 후에 이전에 하던 학습내용을 이어서 학습할려고 할 때에는 어떻게 해야하나요??
    다시 학습할려고 하니 학습률이 초기화 되서 loss등 전부 초기화 되어 학습되네용...

    • @sphyxiaa6547
      @sphyxiaa6547 Год назад

      또 사진 한개만 예측해서 results를 window 모듈 써서 윈도우창에 출력할려면 어떻게 해야할까요??

    • @NeoWizard
      @NeoWizard  Год назад +2

      말씀하신 내용은 딥러닝에서의 학습이라는 개념을 정확히 이해하시지 못한 부분입니다. 딥러닝 학습이라는 개념자체가 주어진 데이터에 맞게 손실값을 최소화 시키면서 최적화 시키는 과정인데, 한번 학습이 끝났다면 당연히 현재 학습한 데이터에 맞게 손실값이 최소화 되었고, 가중치와 바이어스등의 학습 파리미터가 최적화 되었다는 것입니다.
      즉 다시 학습하면 당연히 모든것이 초기화 되어 새로운 데이터에 맞게 다시 학습하는 것입니다.
      학습이라는 것이 무엇이며 loss 를 최소화 하면서 어떤 파라미터들이 최적화되는것인징 대한 기본 개념을 좀더 이해하시는것이 좋을것 같습니다

  • @유여할샤
    @유여할샤 Год назад

    좋은 한국어 영상이네요! 감사합니다.
    처음 공부하다 보니 질문이 하나 있는데요..
    제가 찍은 이미지(물품)를 cvat 툴을 이용해서 하나하나 bounding box를 만들어 주고 학습을 시켰는데 input이 너무 적어서인지(각 라벨당 5개) pre-trained model을 사용해도 정확도가 낮더라구요.. 그래서 제가 생각해본 방법은
    1. 제가 갖고 있는 이미지를 각도를 변경시킨 것도 학습시키기.
    2. pre-trained model을 제 dataset과 유사한 것으로 학습시키기 인데요.
    제가 해결로 가고 있는 방향이 맞는 것일까요?? 혹시 더 좋은 방법이나 관련 자료들을 알고 계신다면 공유해주시면 정말 정말 큰 도움이 될 것 같습니다.
    영상 잘 봤습니다!

    • @유여할샤
      @유여할샤 Год назад

      원래 사전모델을 로드 했을 때 80개였는데 커스텀으로 학습 후 7개로 바뀔 수 있는 이유는 무엇인가요??
      87개로 추가되는 것은 상상이 되는데 어떻게 이미 학습이 되어있는 모델이 자기가 아는 것을 버리고 7개로 줄어들 수가 있죠??

    • @NeoWizard
      @NeoWizard  Год назад +2

      각 라벨당 5개의 데이터로 학습은 절대 되지 않습니다. 아무리 pre-trained model 이라도 최소 하나의 라벨당 100 개 이상의 다양한 학습데이터가 있어야 합니다. 딥러닝에서 데이터는 the more, the better 이고 당연히 딥러닝에서 가장 시간이 많이 걸리고 짜증나는 부분이 데이터 수집과 전처리입니다.

    • @NeoWizard
      @NeoWizard  Год назад +2

      output layer 의 노드수가 정답이라고 강의에서 누누히 말했고 딥러닝의 기본 개념입니다. yaml 파일에서 설정한 nc 개수가 정답 개수이고, 곧 출력노드 개수입니다. 정답의 개수와 출력노드의 관계 그리고 딥러닝 기본 개념을 다시 한번 학습하시는게 좋을것 같습니다

  • @Zagreus_ST
    @Zagreus_ST Год назад

    검출하고자 하는 객체의 크기가 작아도 검출이 가능한가요?

    • @NeoWizard
      @NeoWizard  Год назад

      크기가 작은 데이터를 많이 모아서 학습시킨후 검출하면 잘 됩니다. 최소한의 크기는 인간이 구별가능한 크기여야 하고요. 예를들어 YOLO가 작은 이미지를 '해파리' 라고 예측했는데, 너무 작아서 인간이 확인할 수 없으면 무슨 의미가 있겠습니까 ? 작은 크기의 이미지도 최소한 사람이 인식할정도는 되야 합니다

    • @Zagreus_ST
      @Zagreus_ST Год назад

      @@NeoWizard 답변 감사합니다 인간이 인식할 수 있는 정도 수준의 작은 크기의 객체를 인식하려면 최소 어느 정도 크기의 데이터가 필요할까요?

    • @NeoWizard
      @NeoWizard  Год назад

      절대적인 크기는 상황에 따라 다르지만, 최소 본인이 인식하면 되는거 아닐까요? 이미지 사이즈 또한 아키텍처에 따라 민감한 하이퍼 파라미터 이니 본인이 인지할수 있는 다양하 사이즈로 리사이징 해서 테스트해보는게 가장 좋습니다

  • @user-nj8djdkdma1o
    @user-nj8djdkdma1o Год назад

    마이크 상태안좋은듯