합성데이터 기반 객체 탐지 AI 경진대회

yolo8 코드입니다

2023.05.26 13:29 7,093 조회 language

yolo8로 작성한 코드입니다. PB : 0.85945가 나옵니다.

코드
로그인이 필요합니다
0 / 1000
ili0820
2023.05.27 15:35

학습하는데 시간은 얼마나 걸리셨나요?

filot
2023.05.28 05:41

모델과 이미지를 크게 잡아서 했는데 1 epoch당 대략 10분이었습니다. 100  epoch 정도 돌렸습니다. GPU는 3090 입니다.

느아
2023.05.28 16:12

제가 했을 때는 0.25밖에 안 나오는데 모델에 문제가 있는걸까요...이해가 안 가네요..
class 예측을 잘 못 하는데 아무것도 안 하고 단일 모델로 하신 거맞죠?

filot
2023.05.28 20:37

loss가 0.08 점대에서 해당 PB 점수가 나왔습니다. 아마 그정도까지 낮추어서 하시면 될듯하네요.

느아
2023.05.28 20:44

cli로 돌리는 yolov8코드에 문제가 있어보이네요...왜인지는 모르겠습니다. python으로는 잘 나오네요. 감사합니다.

ixxi
2023.05.29 09:38

저는 지금 코랩에서 yolo github 클론 받아서 cli로 하는데 그렇게 돌렸을때 잘 안되고 직접 yolo 라이브러리를 설치해서 돌려야 잘 된다는 말씀이신가요??? 저도 val score이랑 test score이랑 차이가 많이 나서요 ㅠㅠ

느아
2023.05.29 14:29

네. 그런 것 같아요. 저도 이해는 잘 안 가지만 CLI로 돌렸을 때 test score가 0.25 나왔는데 이유를 모르겠습니다...

느아
2023.05.28 16:19

WARNING _ updating to 'imgsz=1280'. 'train' and 'val' imgsz must be an integer,이라는 에러가 훈련 imgsz에 리스트로 집어넣게되면 뜨는데 혹시 같은 메세지 받으신적있나요? 감사합니다.

filot
2023.05.29 07:30

yolo가 이미지의 크기가 32배수로 입력받게 되어져 있습니다. 아마 입력하신 이미지 크기가 32배수가 아니라서 나오는 메세지가 아닌가 싶네요

Csg
2023.05.30 01:29

삭제된 댓글입니다

filot
2023.05.30 08:30

삭제된 댓글입니다

도미노피자
2023.05.30 15:58

valid set 은 빨리 수렴하던데 map 점수가 그럼 로스를 cls_loss를 0.08까진 학습을 시켜야 일반화가 된다는 말씀이시죠?

filot
2023.05.30 16:53

box_loss입니다. cls_loss는 기억이 안나네요.

꼬마자객
2023.06.03 13:06

/usr/local/lib/python3.10/dist-packages/ultralytics/yolo/utils/loss.py in __call__(self, preds, batch)
    133         loss = torch.zeros(3, device=self.device)  # box, cls, dfl
    134         feats = preds[1] if isinstance(preds, tuple) else preds
--> 135         pred_distri, pred_scores = torch.cat([xi.view(feats[0].shape[0], self.no, -1) for xi in feats], 2).split(
    136             (self.reg_max * 4, self.nc), 1)
    137 

TypeError: 'NoneType' object is not iterable

모델 학습 과정에서 계속 이런 에러가 뜨는데 왜 그런걸까요ㅜ 

encomun
2023.06.03 17:33

삭제된 댓글입니다

fotavgg
2023.06.03 18:49

저도 같은 증상이 발생해서 계속 해봤는데, augment=True를 augment=False로 바꾸고 실행했는데
해당 오류가 나타나지 않았어요!

꼬마자객
2023.06.04 00:12

바꿔서 하니까 해결됐어요! 너무 감사합니다:)

intnals
2023.06.15 15:51

augment=True 이면 validator.py의 164번 줄에 self.loss += model.loss(batch, preds)[1] 부분에서 batch랑 pred의 개수가 안 맞아서 그런 것 같더라구요 ㅠㅠ
혹시 해당 문제 해결하신 분 있으신가요? ㅠㅠ

할렐루야
2023.06.08 17:06

안녕하세요! 혹시 torch버전 어떤 걸로 사용하셨나요..?

filot
2023.06.09 23:05

2.0.1 입니다. docker image에서 수행했습니다.

할렐루야
2023.06.12 09:24

감사합니다!

Phillab
2023.06.09 16:32

안녕하세요 ! 코드보고 많이 배우고 있는 초심자입니다 ! 
다름이 아니라, 모델 Arguments 과정에서 다음과 같은 에러문구가 발생하여 해결방법을 여쭤봅니다.
Dataset 'data/yolo/custom.yaml' error ❌ 
Dataset 'data/yolo/custom.yaml' images not found ⚠️, missing paths ['/opt/homebrew/datasets/data/yolo/valid']
이라고 하는데 해결방법을 도무지 모르겠습니다... 고수님들 해결방법 부탁드립니다 ㅠ
참고로 data폴더와 open폴더는 동일한 위치에 있습니다. 

filot
2023.06.09 23:07

path를 절대경로로 지정해보시겠나요? 상대경로로 하니 의도한대로 인식을 못해서 전 절대경로로 지정해서 수행했습니다.

JeongH
2023.06.09 23:17

custom.yaml의 path 의 상위 폴더가 datasets 라고 내부 구현이 되어있는 것 같습니다.
데이터 폴더를 datasets폴더 만들고 그 안에 넣으면 돌아갈 거에요.

Phillab
2023.06.10 00:10

@filot 절대경로로 지정하니 바로 실행되었습니다! 감사합니다!

AI_JH
2023.06.14 05:07

RuntimeError: Dataset '/content/drive/MyDrive/2023mAP/data/yolo/custom.yaml' error ❌ '/content/drive/MyDrive/2023mAP/data/yolo/custom.yaml' does not exist
와 같이 오류 뜨는데요. custom.yaml 파일이 어디있는지 알 수 있을까요? (상위 코드 상에는 custom.yaml파일이 없는데요. 모델 불오면서 생성되는 건가요?... 잘 모르겠습니다)

EA_eun
2023.06.09 16:34

model = YOLO("yolov8x")
results = model.train 부분에서 

ValueError: Object arrays cannot be loaded when allow_pickle=False
에러 발생하는데 혹시 동일한 문제 해결한 분들 계실까요???

어니부기
2023.06.12 18:54

혹시 아래와 같은 오류가 발생 했을 때 어떻게 해결하는지 알  수 있을까요? ㅜㅠ

Downloading https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x.pt to yolov8x.pt...
 Download failure, retrying 1/3 https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x.pt...
Warning: Failed to open the file yolov8x.pt: No such file or directory        
                                                                           0.0%curl: (23) Failure writing output to destination

 Download failure, retrying 2/3 https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x.pt...
Warning: Failed to open the file yolov8x.pt: No such file or directory        
                                                                           0.0%curl: (23) Failure writing output to destination

 Download failure, retrying 3/3 https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x.pt...
Warning: Failed to open the file yolov8x.pt: No such file or directory        
                    

감사합니다.

filot
2023.06.12 22:42

혹시 proxy를 사용하는 회사망인가요? 그러면 os 환경변수에 proxy 관련 설정을 해주어야 합니다.

어니부기
2023.06.12 23:08

저녁 먹고 돌려보니 또 되더라구요.. 아직 원인은 모르겠습니다.. 근데 또 다른 오류가 있는데, 


AssertionError: yolov8x.pt training to 500 epochs is finished, nothing to resume.
Start a new training without resuming, i.e. 'yolo train model=yolov8x.pt'

이 오류는 혹시 무엇이 문젠지 알 수 있을까요?! 감사합니다.

text121
2023.06.13 01:16

resume 이라고 중간에 끊기면 이어서 진행해주는게있는데 그거 설정이 True로  되어있는거같은데요 500epochs 무사히 끝내서 이어 할게 없다는건데 파라미터 resume = False해보세요

text121
2023.06.13 18:47

혹시 학습한 best.pt 파일을 로드해서 계속  학습하려고 하는데 box_loss가 이전에 했던 loss 랑 별차이가 안나오는데요 맨처음 나온 loss값이 0.12정도 나온다하면 이후에 로드해서 학습시켜도 0.12 보다 조금더 높게 나오는데 로드해서 사ㅏ용하려면 따로 설정해야하는게 있나요? 아니면 여러번 로드해서 학습한다고 하면 유의미한 loss값 나오게하려면  epochs값을 올려야하나요?
코드는 model = ultralytics.YOLO('/content/drive/MyDrive/mAP_data/yolo/results/exp57/weights/best.pt')이렇게 불러와서 기존에 train 하던 코드그대로 진행합니다.

김태언
2023.06.16 09:37

혹시 빠른 실시간 추론이 가능한 욜로말고 fps가 좀 낮은 모델로 테스트 해보셨는 지 궁금해요

송의혁
2023.06.18 12:30

혹시 전부 학습시키고 나면 csv파일에 몇개정도의 결과값이 쌓이나요??

filot
2023.06.18 21:49

11932건이네요.

지운지운
2023.08.19 14:45

안녕하세요 코드 정보 감사합니다.
객체탐지를 공부중인데 YOLO 학습을 위한 데이터 준비에서 궁금한점이 있습니다.
with open("../data/classes.txt", "r") as reader:
    lines = reader.readlines()
    classes = [line.strip().split(",")[1] for line in lines]

yaml_data = {
              "names": classes,
              "nc": len(classes),
              "path": "/Data/데이터 분석 대회/DACON/합성데이터 기반 객체 탐지 AI 경진대회/data/yolo/",
              "train": "train",
              "val": "valid",
              "test": "test"
            }

with open("../data/yolocustom.yaml", "w") as writer:
    yaml.dump(yaml_data, writer)

이부분이 YOLO를 위한 yaml을 만드는 작업인가요?
합성데이터 기반 객체 탐지 AI 경진대회의 경우 주어진 데이터에 classes.txt가 주어져서 위 코드와 같이 nc를 쉽게 정의할 수 있는데, 이러한 classes가 주어지지 않고 이미지와 labels(객체명, 좌표값) 정보만 주어진다면 어떻게 nc를 정할 수 있을까요?