thanx to NIA
실무에서 용어는 명확하게 써야 하겠으나, 30년 이상 IT를 해오다 보니, 또 미국과 영어가 중심인 IT 특성상 비슷한 개념은 웬만하면 통일해서 써도 크게 무관하기도 하고 실무에서는 오히려 의사소통이 더 잘되기에 난 라벨링 데이터, 데이터와 떨어져 있으나 데이터를 설명하는 파일 등을 묶어
메타데이터
라고 칭한다. 자기 자신을 스스로 객관화에서 하는 것을 "메타인지"라고 하는 일상 용어와의 유사성도 고려한 용어의 명확하다. XaaS 같이 필요의 의해 내가 창조해서 실무에서 썼던 용어가 참 많은데 강요하고 싶지는 않다. 다만, 내가 가르칠 때도 웬만하면 일이관지(一以貫之)의 관점에서 가르치다 보니, 용어를 많이 통일시킬 때가 많았다. YOLO 모델 생성용 학습 command는 단 1줄일 뿐이지만(약간 길긴 함) 그전에 데이터를 준비하고 정제하고 메타데이터를 만드는 등의 전처리 과정이 훨씬 복잡하다. 물론, 분류 전략이 먼저 선행되어야 한다. 이때 데이터와 메타데이터 구분, 처리된 데이터와 비처리 데이터 등을 구분하자면 스스로 복잡해졌다. 명확한 용어도 없고, 처리할 데이터도 워낙 방대하다 보니 데이터 관리만 해도 다양한 기법을 공부해야 했다. 챗봇 열풍이 불기 전, big data 열풍이 불었고 그전엔 데이터베이스 세상이었으니 나름 IT 인력으로 다양한 공부의 기회와 실무 프로젝트의 기회가 많았다. 그런데 그 과정을 거친 지금의 방식은 여전히 태초 마을로 돌아간 듯하다. GUI 보다는 CUI가 편하고, 또 그렇게 써야만 한다. 대용량 처리에서 UI는 최대한 단순해야 한다는 것이다. 화사첨족은 최소한만 적고 바로 본론으로 들어간다. NIA의 해양 쓰레기 이미지 데이터 처리 중 메타데이터 처리는 다음 소스를 참고하면 된다.
https://github.com/EXCorpDEV/repo_hajunho.slack.com/blob/master/ipynb/YOLO_convert01.txt
import os
import xml.etree.ElementTree as ET
ANNOTATION_DIR = './annotations'
LABEL_DIR = './labels_yolo'
os.makedirs(LABEL_DIR, exist_ok=True)
class_map = {
"tire": 0,
"wood": 1,
"rope": 2,
"spring fish trap": 3,
"bundle of ropes": 4,
"circular fish trap": 5,
"eel fish trap": 6,
"fish net": 7,
"rectangular fish trap": 8,
"other objects": 9
}
def convert_bbox(size, box):
dw = 1. / size [0]
dh = 1. / size[1]
x_center = (box[0] + box[1]) / 2.0
y_center = (box[2] + box[3]) / 2.0
w = box[1] - box[0]
h = box[3] - box[2]
return (x_center * dw, y_center * dh, w * dw, h * dh)
for filename in os.listdir(ANNOTATION_DIR):
if not filename.endswith('.xml'):
지금 바로 작가의 멤버십 구독자가 되어
멤버십 특별 연재 콘텐츠를 모두 만나 보세요.
오직 멤버십 구독자만 볼 수 있는,
이 작가의 특별 연재 콘텐츠