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()は非常に便利ですので機会がありましたら皆さんも是非使ってみてください!

ありがとうございました。

システム自体は上記リンクに掲載しております。