Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

labelIMGで生成するYOLO v3用のtxtファイルの様式

実際のところ

labelImgでYOLO用の学習データをつくると、以下のようなファイルがでてきます

$ cat 002.txt
0 0.731534 0.440972 0.258523 0.305556
0 0.407670 0.190972 0.264205 0.312500
0 0.213068 0.616319 0.198864 0.288194

スペース区切りで画素に対する%表記なのは推測がつくのですが元画像からして意味がわからず……
UI上は回転とかが出来なかったので、漠然とXYの座標指定なんだろうと思ってました

labelMGのソースコードを読んだところ……

    def bnd_box_to_yolo_line(self, box, class_list=[]):
        x_min = box['xmin']
        x_max = box['xmax']
        y_min = box['ymin']
        y_max = box['ymax']

        x_center = float((x_min + x_max)) / 2 / self.img_size[1]
        y_center = float((y_min + y_max)) / 2 / self.img_size[0]

        w = float((x_max - x_min)) / self.img_size[1]
        h = float((y_max - y_min)) / self.img_size[0]

        # PR387
        box_name = box['name']
        if box_name not in class_list:
            class_list.append(box_name)

        class_index = class_list.index(box_name)

        return class_index, x_center, y_center, w, h

……まさか中央値とはね……画像処理でよく使うからでしょうか