아까 질문했던 사람인데 코드 보여주면 도와주겠다는 천사들 있어서 다시 글 남긴다...


이건 데이터셋 입력 코드

jpeg랑 레이블파일(txt)이랑 파일명도 같고, 한 폴더 안에도 넣었음. 총 데이터는 333개.

7cf3c028e2f206a26d81f6e642887464



79f3c028e2f206a26d81f6e6418470

이건 레이블 파일 형식

맨 윗줄이 label, 아래가 x_min, y_min, width, height임



7ef3c028e2f206a26d81f6e74f89706b

문제의 코드인데, yolov5를 돌리기 위해서 json으로 변환하려 작성한 코드임. 

줄바꿈으로 비어있는 줄 위는 잘 돌아감.

윗덩어리에 for문을 덕지덕지 발라놓은 이유는 label 파일 형식이 불러오면 [ label, [x_min, y_min, width, height] ]

이지랄로 2차원으로 바뀌기 때문.


아래 with open ~ 코드가 문제임.

lines에 [ label, x_min, y_min, width, height ] 이 리스트를 한 덩어리로 꺼내서 line에 넣어야 되는데,

왠지는 몰라도 각각 데이터의 label, 그러니까 lines[0]에 해당하는 값을 차례로 꺼내서 line에 넣음.


거기다가 for문은 리스트가 아니라 순차적으로 변수 자체를 줄바꿈해서 반환하니, x_center = float(line[1])의 슬라이싱이 먹히지 않을 뿐더러,

온갖 이중 for문에, split, strip, 다른 패키지까지 긁어와서 해도, 결국 for문의 line에는 데이터셋의 맨 첫 데이터만 저장됨.


line의 원소는 1개가 되어버리고, 그러다보니 [1]을 슬라이싱 하려니 없는 원소라서 이 오류가 뜸


78f3c028e2f206a26d81f6ed4f8670

결국 333개의 label.txt를 각각 하나씩 뽑아서

x_center에는 [ x0, x1, x2, ... x332 ]가 저장돼야 될 테고,

나머지 변수들도 마찬가지...


글도 개길고 남의 코드 고쳐주는 게 여간 귀찮은 일 아닐텐데... 영웅 출현 기대해본다...


결론. 도와주세요...