Python
機械学習

機械学習における教師データのファイル名の一括変更

More than 1 year has passed since last update.

はじめに

前回作ったツールの強化です。
前回の記事をご一読いただければ幸いです。

解説

以前公開した
指定した人物の顔画像を自動収集するプログラムの公開と使い方
において顔画像を集めたものの、画像のファイル名が同じであるが故に複数のフォルダをまとめることが難しい状況に直面した為つくりました。

以前と同じGithubのリポジトリに入れてあります

一括変更を行いたい画像フォルダをimage_renamer > imgフォルダ内に突っ込んで
FaceImageCollector > image_renamer > rename.pyを実行してください

スクリーンショット 2017-10-15 22.32.22.png

こんな感じで入力を進めます。
終了すると
スクリーンショット 2017-10-15 22.33.56.png
綺麗に連番になります。

また、開始する番号の指定もできるので
womenフォルダ60枚と同じフォルダに置く為
スクリーンショット 2017-10-15 22.35.07.png
61からスタートすることもできます。
終わったら一つのフォルダにまとめてください。

約130枚の男女の顔をランダムに抽出した教師データの完成です。
スクリーンショット 2017-10-15 22.36.57.png

ソース解説

rename.py
import os
import glob

def main():
    print('imgフォルダに入れた画像フォルダ名を入力してください')
    f = input('>> ')
    path = './img/'+f+'/'
    print('始めたい番号を入力してください')
    label = int(input('>> '))

    files = glob.glob(path+'*')

    for i, file in enumerate(files, label):
        try:
            os.rename(file, path + str(i) + '.png')
        except Exception as e:
            print(e)
            continue

if __name__ == '__main__':
    main()

そんなに長くありません。
画像のパスを獲得した後、globモジュールのglobメソッドで全ての画像名を配列にできます。
その後、enumrateを使ったループによりos.renameで画像名に数字をつけフォルダ内に再配置します。
glob.glob()は非常に便利ですので機会がありましたら皆さんも是非使ってみてください!

ありがとうございました。
システム自体は上記リンクに掲載しております。