물체 인식용 데이터 세트 작성 지원 툴(Faster R-CNN이나 SSD라든지)

R-CNN이나 YOLO, SSD 등, 이미지의 “어디”에 “무엇”이 있는지를 식별하는 태스크를 위한 라벨 부여를 지원하는 소프트웨어를 Processing으로 작성했습니다.
주로 개인 목적으로 만들었기 때문에, 제대로 된 UI에는 되어 있지 않다고 느끼는 분도 계실지도 모릅니다만, 모처럼이므로 공개하고 싶습니다.

코드 및 개발 환경



아래에 코드를 싣고 있습니다.
htps : // 기주 b. 코 m / s ぉ w 신 g ぇ / ぁ ぃ ん g_ 훗

MacBookPro의 Processing3.3에서 개발했습니다.
사용하려면 controlP5 라이브러리가 필요합니다. 이것은 Processing으로 GUI 컨트롤러를 만드는 것을 돕는 라이브러리입니다.

다음 사이트가 도움이 될 것이라고 생각합니다.
ぃ tp // m / a ks pect / / ms / 6 a 574 12181c00125d40
h tp // w w. 그럼. 에 / ぃb 라리에 s / 혼 t로 lP5 /

사용방법



이번에 작성한 툴의 사용에 관한 데모 동영상이 여기가 됩니다.
htps //w w. 요츠베. 이 m/와 tch? v = HXmHYFB 쿠 DM

도구 화면의 오른쪽에 몇 개의 버튼이 있으며, 맨 위에는 [LOAD IMAGE], 즉 이미지를 지정하는 버튼이 있습니다. 그 아래에는 여러 개의 라디오 버튼이 있으며 라벨을 선택할 수 있습니다.

화상상에서 클릭을 하면 구형을 draw 할 수 있어 [SAVE RECT] 버튼을 누르면, 그 구형 영역과 라벨 정보를 세트로 기억합니다 (이 때 구형은 사라집니다만, 프로그램 내부에서 정보를 보유 하고 있기 때문에 문제 없습니다). 사각형을 지우려면 [DELETE RECT] 버튼을 누릅니다.

마지막으로 [OUTPUT XML] 버튼을 눌러 저장한 정보를 XML 파일로 출력합니다. 출력 대상은 processing 프로그램이 있는 곳으로 되어 있는 것 같습니다.

덧붙여서, 데모 동영상대로 작업을 하면 다음 XML 파일이 생성됩니다.

test.xml
<?xml version="1.0" encoding="UTF-8"?>
<annotation>
  <folder>XXX</folder>
  <filename>test.jpg</filename>
  <source>
    <database>XXX</database>
    <annotation>XXX</annotation>
    <image>XXX</image>
    <flickrid>XXX</flickrid>
  </source>
  <owner>
    <flickrid>XXX</flickrid>
    <name>?</name>
  </owner>
  <size>
    <width>500</width>
    <height>281</height>
    <depth>3</depth>
  </size>
  <segmented>0</segmented>
  <object>
    <name>Chino</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>1</difficult>
    <bndbox>
      <xmin>125</xmin>
      <ymin>21</ymin>
      <xmax>266</xmax>
      <ymax>170</ymax>
    </bndbox>
  </object>
  <object>
    <name>Shallo</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>1</difficult>
    <bndbox>
      <xmin>274</xmin>
      <ymin>4</ymin>
      <xmax>402</xmax>
      <ymax>156</ymax>
    </bndbox>
  </object>
</annotation>

XML 파일 이름은 이미지 파일 이름에 xml 확장자가 붙습니다. 또, pose나 truncated, difficult의 정보는 이 툴상에서는 설정할 수 없고, 디폴트의 값인 채로 되어 있으므로, 이 값은 교사 신호로서 사용하지 말아 주세요. name과 bndbox의 (xmin, ymin, xmax, ymax)가 데모 동영상의 작업으로 올바르게 업데이트된 정보입니다.

여담이지만, Chino (치노)와 Shallo (샤로)는 이미지에 찍힌 여자의 이름입니다. 라고 할까, 잔치네요. 나에게도 마음을 삐삐삐시킨 시기가 있었다.

학습



실제로 이것으로 올바르게 데이터 세트가 구축되고 있는지를 확인하기 위해, 학습을 실시했습니다.
이전에 제가 쓴 기사( 물체 검출 알고리즘 (SSD : Single Shot MultiBox Detector)을 학습시켜 봅니다. )를 참고로 하여, 이번에는 잔치의 이미지를 60장 모아 본 툴을 이용해 라벨의 할당을 실시했습니다.
이번에는 데이터 세트를 올바르게 만들 수 있는지 확인하고 싶기 때문에 훈련 이미지를 그대로 네트워크에 던져 추론했습니다.

결과가 여기입니다.


제대로 학습할 수 있는 것 같습니다. 덧붙여서, 훈련시에 사용하지 않은 이미지를 시험에 던져 보면, 코코아와 샤로를 잘못 하는 경우가 많습니다. 머리카락의 색 이외는 대체로 같으니까요. . . (라든지 말하면 화를 내는 사람이 있을지도 모르기 때문에, 이쪽으로 해 둡시다)

좋은 웹페이지 즐겨찾기