17장. Batch Processing 과 YOLO 데이터 준비
정리
- 일괄 처리는 한 장 처리 함수를 먼저 만들어 한두 장에 시험한 뒤,
sorted(Path(폴더).glob("*.png"))목록에 돌리는 일입니다. 결과는 원본과 다른 폴더에 씁니다. - 실패에 강한 일괄 처리는 빈 파일,
None, 크기, 저장 결과를 확인해 이유를 돌려주고,try/except로 뜻밖의 오류에서도 멈추지 않으며, 파일마다 결과와 이유를 로그로 남깁니다. - 객체 탐지 데이터는 그림마다 물체 수만큼 상자와 클래스가 붙습니다. 상자는 빈틈없이, 빠짐없이, 잘린 물체는 보이는 데까지 그립니다.
- 상자는 (x1, y1, x2, y2), (x, y, w, h), YOLO 의 (xc, yc, w, h) 비율로 적습니다. xc = (x1 + x2) ÷ 2 ÷ 그림 가로이고, 가로 320 에서 x1 40, x2 120 이면 0.25 입니다.
- 비율 좌표는 그림 크기를 바꿔도 그대로이고, 좌우로 뒤집으면 xc 만 1 − xc 로 바뀝니다.
- 주석 검사기는 일부러 넣은 실수 7가지 12건을 모두 찾았습니다. 뒤집힌 상자, 범위 밖, 크기 0, 중복, 그림 없는 주석은 프로그램이 고치고, 모르는 클래스와 주석 없는 그림 4장은 사람에게 돌려보냈습니다. 남은 56장을 8:2 로 나눠 train 45장, val 11장의 데이터셋을 만들었습니다.
- YOLO 데이터셋은
images/,labels/아래에train/,val/을 두고 그림과 라벨을 같은 이름으로 짝짓습니다.data.yaml에 path, train, val, names 를 적습니다.