[Python] AI 21 学習モデル・グラフ画像への不可視的テキスト埋め込み

前回の続きです。tips的内容でAI学習とは直接関係ないのですが、一応書いておきます。

steganoライブラリを使って、画像ファイルにソースファイルの絶対パスと学習時間を不可視的に埋め込みました。画像の質については特に変化はありませんでした。

これでCSVへの記録が不要になり、データの散逸を防止できます。

from stegano import lsb

start = time.time()

def plot_loss_accuracy_graph(history):
	process_time = time.time() - start
	td = datetime.timedelta(seconds = process_time)
	dt_now = datetime.datetime.now()
	dt_now_str = dt_now.strftime('%y%m%d%H%M')

	image_loss ='{}_loss.png'.format(dt_now_str)

	fig = plt.figure()
	plt.plot(history.history['loss'], "-D", color="blue", label="train_loss", linewidth=2)
	plt.plot(history.history['val_loss'], "-D", color="black", label="val_loss", linewidth=2)
	plt.title('LOSS')
	fig.text(0.7, 0.95, os.path.basename(__file__))
	fig.text(0.8, 0.03, str(td))
	plt.xlabel('Epochs')
	plt.ylabel('Loss')
	plt.legend(loc='upper right')
	plt.tight_layout()
	fig.savefig(image_loss)

	# ソースファイルの絶対パスと学習時間をリストにして画像に埋め込む
	embed_text = '[' + os.path.abspath(__file__) + ',' + str(td) + ']'
	image_loss2 = image_loss.split('.')[0] + '2.png'
	secret = lsb.hide(image_loss, embed_text)
	secret.save(image_loss2)
  
	# 埋め込んだテキストを確認する
	embed_text_loss = lsb.reveal(image_loss2)
	print('embed_text_loss '+ embed_text_loss)