見出し画像

管理用フォルダを自動で作成&構成!画像生成AI向けのレタッチ管理手法

今回の記事では、画像生成AIで作った画像ファイルの管理を半自動化し、時短を図るための方法を紹介します。
具体的には、レタッチの各工程でのフォルダ構成をWindowsのバッチファイルまたはmacOSのAppleScriptで自動生成します。
これにより、手動でのリネーム作業が省略され、効率が向上します。
記事の後半では、この方法のメリットとデメリット、ChatGPTとのコラボレーションでのコード作成についても説明します。

バッチファイル実行後のイメージ

また、各フォルダの意味についても「(補足)各フォルダの目的」で軽く説明しています。


コード

バッチファイル

バッチファイル(拡張子が.bat)はWindows上で動作するものです。 以下のコードをコピーし、サクラエディタ等で新規作成で開き、貼り付けて「Shift-JIS」で保存します。 (はじめ、この文字コードで躓きました。異なる文字コードで保存した場合、日本語が文字化けしてしまいます。)

@echo off
setlocal enabledelayedexpansion

:: 管理通番を入力してもらう
set /p serial="管理通番を入力してください: "

:: 管理名を入力してもらう
set /p name="管理名を入力してください: "

:: フォルダの名前を作成
set mainfolder=%serial%_%name%

:: フォルダを作成
mkdir "%mainfolder%"
mkdir "%mainfolder%\%serial%_01_未補正"
mkdir "%mainfolder%\%serial%_02_補正中"
mkdir "%mainfolder%\%serial%_02_補正中\%serial%_02_01_Photoshop"
mkdir "%mainfolder%\%serial%_02_補正中\%serial%_02_02_クリスタ"
mkdir "%mainfolder%\%serial%_02_補正中\%serial%_02_03_Lightroom"
mkdir "%mainfolder%\%serial%_03_補正完了"
mkdir "%mainfolder%\%serial%_04_高画質化(投稿分)"
mkdir "%mainfolder%\%serial%_05_未投稿分"

echo フォルダを作成しました:
echo %mainfolder%
echo ├ %serial%_01_未補正
echo ├ %serial%_02_補正中
echo │   ├ %serial%_02_01_Photoshop
echo │   ├ %serial%_02_02_クリスタ
echo │   └ %serial%_02_03_Lightroom
echo ├ %serial%_03_補正完了
echo ├ %serial%_04_高画質化(投稿分)
echo └ %serial%_05_未投稿分

endlocal
pause

名前は何でも良いですが、「win_create.bat」としてOneDrive上に自分は保存しています。

保存場所イメージ

実行すると以下のような実行画面になります。
自分は作品のカテゴリ毎に番号を振っているので、保存場所イメージに繋げるのであれば、148にします。

エンターキーを押すと、次は管理名を聞かれるのでその作品タイトルを入力します。今回はテストにします。

エンターキーを押すと、そのままフォルダが作成されます。
さらにエンターキーを押して終了します。

ちゃんと作成されました!

コードのコメントの「フォルダを作成」のところと、「フォルダを作成しました」、のところを自分の好きな構成に修正することもできます。
また、ChatGPTにコードを投げて、構成を変更させることもできます。
これについては「ChatGPTに構成を変更してもらう」のセクションにてご紹介します。

AppleScript

AppleScript(拡張子は.scpt)はmacOS上でのみ動作するものです。
注意点として、自分が試した限りではOneDrive上にフォルダを作成できなかったため、このスクリプトファイルが呼び出された所でフォルダを作成するバージョンと、Desktopに作るバージョンの2つを作成しています。

OneDriveから実行する際はDesktop版を、そうでないローカル環境で実行する場合は、もう一つのバージョンを使用するとよいです。

以下はDesktopに作成するバージョンのコードです。(mac_create_desktop.scpt)

property dialogTimeout : 30

-- 管理通番を入力してもらう
set serial to text returned of (display dialog "管理通番を入力してください:" default answer "" buttons {"OK"} default button "OK" giving up after dialogTimeout)

-- 管理名を入力してもらう
set manageName to text returned of (display dialog "管理名を入力してください:" default answer "" buttons {"OK"} default button "OK" giving up after dialogTimeout)

-- フォルダの名前を作成
set mainfolder to serial & "_" & manageName

-- デスクトップの位置を取得
set desktopPath to path to desktop

-- フォルダを作成
tell application "Finder"
    set mainfolderRef to make new folder at desktopPath with properties {name:mainfolder}
    make new folder at mainfolderRef with properties {name:serial & "_01_未補正"}
    set correctionFolderRef to make new folder at mainfolderRef with properties {name:serial & "_02_補正中"}
    make new folder at correctionFolderRef with properties {name:serial & "_02_01_Photoshop"}
    make new folder at correctionFolderRef with properties {name:serial & "_02_02_クリスタ"}
    make new folder at correctionFolderRef with properties {name:serial & "_02_03_Lightroom"}
    make new folder at mainfolderRef with properties {name:serial & "_03_補正完了"}
    make new folder at mainfolderRef with properties {name:serial & "_04_高画質化(投稿分)"}
    make new folder at mainfolderRef with properties {name:serial & "_05_未投稿分"}
end tell

-- 完了のメッセージ
display dialog "フォルダを作成しました。" buttons {"OK"} default button "OK" giving up after dialogTimeout

以下は、呼び出し元にフォルダを作成するバージョンのコードです。(mac_create.scpt)

property dialogTimeout : 30

-- 管理通番を入力してもらう
set serial to text returned of (display dialog "管理通番を入力してください:" default answer "" buttons {"OK"} default button "OK" giving up after dialogTimeout)

-- 管理名を入力してもらう
set manageName to text returned of (display dialog "管理名を入力してください:" default answer "" buttons {"OK"} default button "OK" giving up after dialogTimeout)

-- フォルダの名前を作成
set mainfolder to serial & "_" & manageName

-- スクリプトの位置を取得
set scriptPath to path to me
tell application "System Events" to set scriptFolder to container of (file scriptPath as text) as alias

-- フォルダを作成
tell application "Finder"
    set mainfolderRef to make new folder at scriptFolder with properties {name:mainfolder}
    make new folder at mainfolderRef with properties {name:serial & "_01_未補正"}
    set correctionFolderRef to make new folder at mainfolderRef with properties {name:serial & "_02_補正中"}
    make new folder at correctionFolderRef with properties {name:serial & "_02_01_Photoshop"}
    make new folder at correctionFolderRef with properties {name:serial & "_02_02_クリスタ"}
    make new folder at correctionFolderRef with properties {name:serial & "_02_03_Lightroom"}
    make new folder at mainfolderRef with properties {name:serial & "_03_補正完了"}
    make new folder at mainfolderRef with properties {name:serial & "_04_高画質化(投稿分)"}
    make new folder at mainfolderRef with properties {name:serial & "_05_未投稿分"}
end tell

-- 完了のメッセージ
display dialog "フォルダを作成しました。" buttons {"OK"} default button "OK" giving up after dialogTimeout

こちらも基本的にバッチファイル(Windows版)と同じ挙動です。
一部UIが異なるくらいです。
(こういう実行環境が異なるソースコード変換も、ChatGPTならサクッと作ってくれるのは凄いですね。)

実行する際には、ツールバーの▷を押してください。

ChatGPTに構成を変更してもらう

作成されるフォルダの構成については、自分で修正しても良いですが、ChatGPTに投げて修正させることもできます。
以下は例として、クリスタと補正完了フォルダを削除して、番号を詰めてもらう指示をしたものです。

以下のバッチファイルのコードについて、修正をお願いします。
処理としては、入力した内容に応じてフォルダを階層で作成するものです。

-02補正中の中のクリスタについて削除し、03_Lightroomを02_Lightroomに修正。
-03_補正完了が不要なので削除してください。04_高画質化(投稿分)を03_高画質化(投稿分)に、以降も番号を詰めてください。

---
~ここにコード全量~

プロンプト
結果。

↓やりとり全量

(参考)もともとの要件

以下はもともとのコードを作成してもらった際のプロンプトです。
概ねこれで作成されましたが、その後で相談しつつ構成を変更しています。

要件定義に従い、フォルダ構成のものを.bat等で手軽に作成できるコードを作成してください。
生成された画像の構成管理に使用します。

#要件定義
1.始めに管理通番と管理名を聞くダイアログを出すこと。
2.管理通番を元に以下の構成でフォルダを作成すること。
「ここに管理通番_ここに管理名」
その配下に
 ここに管理通番-01_補正前
 ここに管理通番-02_補正後
 ここに管理通番-03_高画質化(投稿分)
 ここに管理通番-04_未投稿分
となるようにフォルダを作成する。

#例
1.管理通番を入力してください
 →147
2.管理名を入力してください
 →雪山の魔女
3.フォルダを作成する
 147_雪山の魔女
 ∟147-01_補正前
 ∟147-02_補正後
 ∟147-03_高画質化(投稿分)
 ∟147-04_未投稿分

プロンプト

以下は構成について、ChatGPTからの変更提案です。

一部これを採用して再度作成してもらっています。

やりとり全量は、見返したらフォルダ名に個人名があったので省略します……。

構成管理とは

構成管理は、製品やプロジェクトの設計、変更、機能の一貫性を維持・管理するプロセスです。一般的にはコーディングや設計書の管理等で使われることが多いです。今の時代バージョン管理システム (VCS)、Git等が一番有名でしょうか。

今回はその中でもフォルダによる管理を行っていますが、今の時代少し原始的なものかもしれません。しかしながら、個人で作業するうえでは直感的ですし、異なるデバイスからもアクセスしやすいメリットがあるため、これを採用しています。

以下にフォルダでの管理におけるメリット、デメリットをまとめます。

メリット

  1. 直感的な操作: フォルダ構造は視覚的で直感的な操作が可能で、特別なスキルやツールを必要としません。

  2. 設定の容易さ: プロジェクトの初期段階であれば、フォルダ構造を素早く設計して実装することができます。

  3. 低コスト: 専門の構成管理ツールを導入する必要がないため、初期投資が少なく済みます。

  4. カスタマイズの自由度: プロジェクトのニーズに応じて、フォルダ構造を自由に設計することができます。

デメリット

  1. スケーラビリティの欠如: プロジェクトが大規模になると、フォルダ構造の管理が複雑化し、誤操作などのリスクが増えます。

  2. バージョン管理の困難: フォルダだけではバージョンの管理が難しく、特定の時点での状態の再現などが困難になることがあります。

  3. 共同作業の制約: 複数人で同時に作業する際に、ファイルの衝突や重複などの問題が発生しやすくなります。

  4. セキュリティの課題: フォルダによる管理では、細かいアクセス制御やセキュリティ設定が難しい場合があります。

  5. 追跡と監査の困難: 変更履歴や監査の追跡が容易でないため、誰が何を変更したのか、なぜ変更したのかを明確にするのが困難になることがあります。

まとめ

フォルダによる構成管理は、小規模なプロジェクトや個人の作業には適している場合が多いですが、プロジェクトが成長し多くの人々が関与すると、その制約も明らかになります。状況に応じて、他のバージョン管理ツールと組み合わせるか、完全に別の方法を検討する必要があるかもしれません。

今回は1人でかつ、様々なハードやソフトで管理するものであったため、フォルダによる管理、特にクラウドストレージ上での実施がベターでしょう。ただし、契約しているストレージの容量やセキュリティも考慮すべき点です。例えば、OneDriveやGoogleDriveには独自の検閲システムが存在するとされ、公序良俗に反したものであればbanされたケースもあるとされるため、エンドツーエンド暗号化に対応したiCloudや独自のNASも検討する価値があります。
(自分はコストとリスクの天秤で、OneDrive上で作業しています。)

(補足)各フォルダの目的

自分は画像生成AI(Stable Diffusionのローカル環境AUTOMATIC1111)で作成したものは、Eagleというソフトで一括管理するようにしています。

その後に、良さそうなものを「未補正」フォルダに格納します。
基準としては手で修正を見越して、1枚20分未満で完了するものとしています。(時間を設定、計測するとメリハリがついて良いですね。予定も立てやすくなるため、何事も継続しやすくなります。)

「補正中」の「Photoshop」は、主にベータ版のPhotoshopを指し、オブジェクトの削除や追加をこれで行います。(目安1枚5分)

「クリスタ」では、「Photoshop(ベータ版)」で修正できなかったものかつ、手でなおした方が結局早いだろうと思うものだけ修正します。(目安10分)
修正はipadで実施しています。ペンはELECOMのP-TPACSTHY01です。

「Lightroom」はここにバックアップとして格納する目的も兼ねていますが、色調等の補正はこれで実施しています。
(これを使わなくても、クリスタやPhotoshopでもできますが、折角契約しているプランにあるので使わないと勿体ない気がしまして。)

高画質化に関してはwaifu2xを使用しています。
こちら有料版を購入すると、macOSでもiOSでもライセンスが適用されるのが良いですね。

と、いった流れで今は作業しています。
品質と時短に意識を向けていますが、結局自動化していないところ、手で作業するところについて、1枚辺り20分はかかるので、効率化についてはもう少し検討の余地がありそうです。
(プロンプトの作成や、画像を選ぶ作業について省略していますが、それらも入れると1枚あたり換算で1時間以上はかかっていそうです。結局。)

加えて「手」の修正もイマイチになりやすいので、そこは今後の課題ですね。時間と品質のトレードです。

おまけ(ChatGPTとのやりとり)


この記事が気に入ったらサポートをしてみませんか?