스마트폰으로 심층 학습 훈련용 이미지 라벨 만들기 [소개]
11262 단어 DeepLearningAndroid
DeepLearning용 레이블 AndroidApp
후배가 만든 스마트폰 앱 소개다.
오리지널 기사는 여기 있습니다. (Qiita)
응용 프로그램의 다운로드 주소는 여기 있습니다. (Google Play Store)
저자의 말에 의하면
활기찬 장면
실제로 DeepLearning을 사용하려면 많은 교육 데이터가 필요합니다.
만약에 이미 어떤 대규모 데이터 집합에 포함된 유형이라면 간단하게 배울 수 있지만 존재하지 않는 유형에 대해서는 반드시 스스로 데이터 집합을 준비해야 한다.
그러나 데이터 집합은 일반적으로 대량의 데이터와 정답 라벨을 필요로 하기 때문에 준비하는 것이 큰 부담이 된다.
이번에 소개된 것은 일반 물체 식별 임무에 사용할 데이터 집합을 스스로 준비할 때 매우 효과적인 스마트폰 앱이다.
작업과 관련된 대량의 이미지를 수집하는 것은 좋지만, 수집만 했을 뿐 정확한 라벨이 없기 때문에 수동으로 라벨을 추가해야 하는 작업 부담을 크게 줄일 수 있다.
이미지를 스마트폰으로 전송하고 물체를 만지는 위치로만 탭을 만들 수 있다.
사용 방법
식별하고 싶은 물체의 이미지를 준비했습니다.
학습에 사용할 대량의 그림을 준비하다.
스마트폰 포맷 SD 카드에 이미지 전송(Micro SD 등)
컴퓨터에서 스마트폰으로 이미지를 전송하다.
SD카드를 컴퓨터에 연결하여
Android/data/com.tomoya.yololabelingtool/files/images
에서 준비한 이미지를 전송합니다.전송이 완료되면 컴퓨터에서 떼어내 스마트폰에 설치한다.
핸드폰으로 앱을 켜고 터치만 하다
이미지를 전송하는 SD카드를 스마트폰에 설치한 후 앱을 시작합니다.
이미지 파일을 자동으로 읽습니다.
초기 화면.복잡한 기능이 없다.
식별하고 싶은 모든 물체에 클래스 이름을 등록해야 합니다.
처음 필요한 작업만 수행할 수 있습니다.
왼쪽 위 모서리의 기어 아이콘을 추가하십시오.
사각형 선택은 다음과 같습니다.
이미지를 가져온 상태에서 표시되는 검은색 십자 커서를 선택한 객체의 왼쪽 위 모서리에 맞춥니다.
닫은 다음 왼쪽 아래 모서리의 크로스를 누른 다음 오른쪽 아래로 정렬합니다.
출력된 데이터 형식
데이터 출력
Android/data/com.tomoya.yololabelingtool/files/texts/*
.응용 프로그램 축소판 그림의 설명 삽화는 이해하기 쉽다.
YOLO 직접 사용할 수 있는 형식입니다.
만든 태그의 형식을 바꾸고 싶어요.
현재 프로그램에서 출력 형식을 설정하고 변경할 수 없습니다.
형식을 바꾸고 싶으면 라벨 파일을 컴퓨터로 전송하여 가공하세요.
출력된 라벨은 경계 상자의 중심과 크기가 각각 전체 1의 비율로 처리하기 어려우므로 변경하고자 하는 경우 아래 코드로 변환할 수 있습니다.
변환 후 경계 상자의 중심과 크기는 픽셀 위치(정수)입니다.
$ cat label
0 0.15487 0.554 0.5487 0.3684
1 0.245 0.814 0.4574 0.15144
2 0.488 0.254 0.7841 0.1584
4 0.154 0.455521 0.48454 0.545
$ cat label | awk -v width="320" -v height="240" '{print $1 " " int($2*width) " " int($3*height) " " int($4*width) " " int($5*height)}'
0 49 132 175 88
1 78 195 146 36
2 156 60 250 38
4 49 109 155 130
width, height = 320, 240
f = open('label', 'r')
for line in f.readlines():
d = [ float(x) for x in line.split() ]
print("{0} {1} {2} {3} {4}".format(int(d[0]), int(d[1]*width), int(d[2]*height), int(d[3]*width), int(d[4]*height))
다음 형식을 일반적인 경계 상자의 왼쪽 위와 오른쪽 아래를 기록하는 형식으로 변환합니다.SSD는 확실히 이 형식이죠.$ cat label
0 0.15487 0.554 0.5487 0.3684
1 0.245 0.814 0.4574 0.15144
2 0.488 0.254 0.7841 0.1584
4 0.154 0.455521 0.48454 0.545
$ cat label | awk -v width="320" -v height="240" '{print $1 " " int($2*width-$4*width/2) " " int($3*height-$5*height/2) " " int($2*width+$4*width/2) " " int($3*height+$5*height/2)}'
0 -38 88 137 177
1 5 177 151 213
2 30 41 281 79
4 -28 43 126 174
width, height = 320, 240
f = open('label', 'r')
for line in f.readlines():
d = [ float(x) for x in line.split() ]
print("{0} {1} {2} {3} {4}".format(int(d[0]), int(d[1]*width-d[3]*width/2), int(d[2]*height-d[4]*height/2), int(d[1]*width+d[3]*width/2), int(d[2]*height+d[4]*height/2))
마지막
이렇게 하면 학습 데이터에 대한 표시에 진전이 있을 것이다!
텔레비전 광고 시간, 전차 안에서 이동하는 시간, 여가 시간을 잘 활용하여 경쟁 업체와 격차를 좁혀라!!
Reference
이 문제에 관하여(스마트폰으로 심층 학습 훈련용 이미지 라벨 만들기 [소개]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MOKSckp/items/7a12efbf5b23632862eb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)