Amazon Nova Canvasで画像編集でできること

Amazon Nova Canvasが東京リージョンで利用可能になったとアナウンスがあったので、色々試してみました。
今回はAmazon Nova Canvasの画像編集を試してみました。
Amazon Nova Canvasの画像編集では、オブジェクト置換／削除、背景置換／削除を実施することができます。
置換したいオブジェクトを指定する方法に「範囲指定」と「テキスト指定」の二つのやり方があります。

■範囲指定
まずは範囲指定の使い方について説明します。
下記のように置換したいオブジェクトを範囲指定で選択するやり方です
![犬.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/0939f454-59a5-4359-b1b5-e3d7652dcd1d.png)

上記のように写真の中から犬の部分だけを選択して置換後のオブジェクトに「cat」と入力すると、写真の犬を猫に変換することが可能です。
![置換猫成功.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/295425ac-581c-45f7-a490-c25e8ca96d15.png)

ただし、範囲指定にはデメリットもあります。
同じことを下記の画像でして、野球ボールをサッカーボールにしたいと思いました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/710847b9-9da3-4572-93b5-01378281cc88.png)


何度か試してみ観ましたが、下記のように指定した範囲のものすべてを変換してしまう
画像ばかりが生成されてしまい、うまくいきませんでした。
一つの画像に複数のオブジェクトがあり、一括で同じものに置換したい場合は、有効な手法ではないと思います。
![サッカーボール③.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/a8802c60-3ddd-43ec-9ac5-1352afbd0353.png)

では、一つの画像に複数のオブジェクトがあり、一括で同じものに置換したい時、有効な手法はあるのでしょうか？
これから説明するテキスト指定がこれに該当します。

■テキスト指定
次にテキスト指定について説明します。
テキスト範囲では、置換したいオブジェクトをテキストベースで入力して、画像変換を行うことができる手法です。
※入力できる言語は2025/3/10時点で英語のみです。日本語は非対応です。
下記の例では、野球ボールをサッカーボールに変換する例となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/992af5ed-93d3-440f-a659-d4186291c52e.png)

範囲指定の時と違い、野球ボールひとつひとつをオブジェクトとして検出して、
それぞれをサッカーボールという別のオブジェクトに変換することができます。
テキスト指定のやり方ならば、一つの画像に複数のオブジェクトを一括で置換するということができるようになります。
![サッカーボール2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/4c588bfc-2cc9-41be-b1f1-23841b87a695.png)

ただし、テキスト指定にも不得意なことはあります。
先ほどの犬の画像を猫に置換する例でテキスト指定での置換を試してみました。
![置換猫失敗.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/af383326-e396-4d67-a509-e26ba1543e1a.png)
何度か試してみましたが、元の犬のオブジェクトに無理やり猫を埋め込んだような出来になってしまい、猫の形が非常に不自然になってしまいました。
置換前と置換後のオブジェクトが全く違う形(動物、人間等)の場合、生成後の画像が不自然な画像になってしました。

「範囲指定」と「テキスト指定」をまとめると以下になります。
■範囲指定
　得意
　・置換前と置換後のオブジェクトが全く違う形(動物、人間等)の場合に使うといい
　不得意
  ・置換したいオブジェクトが複数ある場合は向いてない。
■テキスト指定
　得意
 ・置換前と置換後のオブジェクトが単純な形(円、四角形等)で似ている場合に有効。
 ・複数のオブジェクトを一括で置換する場合に便利
  不得意
 ・置換前と置換後のオブジェクトが全く違う形(動物、人間等)の場合、生成後の画像が不自然な画像になるため、不向き。

また補足ですが、テキスト指定時にはプロンプトに「text:XXX」という形式で入力指定してあげると
テキストベースのオブジェクトも置換することができます。
下記の例では、Seaと書かれたカードをチョコレートに変換してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/a3d930d0-f5c7-480d-a3b8-7a5212983afe.png)

実行すると下記のようにSeaと書かれたカードがチョコレートに変換されてます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/5cd72920-3cf7-4217-a0cb-f687506fa3a7.png)

また、変更後のオブジェクトも「text:XXX」でテキスト形式に指定することはできます。
但し、こちらは何度か試してみましたが、余り精度がよくありませんでしたので利用する際はご注意を。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/95a53efb-f3e8-467d-b794-737033aca2ba.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/69304202-a56e-4b46-9126-68398fb33c08.png)


次に高度な設定について解説します。
■プロンプト強度
プロンプト強度は入力したプロンプトが画像に与える影響度を定義します。
プロンプト強度をMAX迄上げた例はこちらになります。
こちらは解像度の高いカメラで撮影した本物の猫の画像に置換したような画像が生成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/e650bbe8-4b8b-454e-a47c-d4ca7b8b93c5.png)

次にプロンプト強度をあえて低くした場合の例はこちらになります。
何度か試してみましたが、すこしピントがぼけたような猫の画像に置換したような画像が生成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/6ff663d8-4d4d-4579-89c6-f0be042a64d4.png)

プロンプト強度のチューニングについては編集する画像、場所によって使い分けるのがいいと思いました。
例えば、写真の中でメインのコンテンツ編集する場合は、プロンプト強度を高めにし、
背景等あまり目立たせたくない箇所の編集はプロンプト強度を低めに設定する等の使い分けができると思います

■シード
シードは画像生成した際、ランダムに割り振られるパラメータとなります。
シードを変更することで、同じプロンプトで別の画像を生成することが可能になります。
先ほどうまくいかなかったテキスト指定で犬を猫に変換する例で、シードの値を変更して何度か試してみました。
下記のように帽子を被ってうまく輪郭にフィットした猫の画像を探して、生成することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990360/2cdc60f4-7db1-4544-9d62-2a27110903f0.png)
生成された画像が不自然な場合はシード値を変更を試して、自然な画像を見つけるといいとおもいます。
また、気に入った画像を生成できたけど保存し忘れた際にもこのシード値も控えておくと便利です。
シード値を固定化することで再現性を担保することができ、後で画像再生成する際に、同じ画像を生成することができます。

※補足　クロスリージョン推論について
https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html
上記を見たところ、Amazon Nova Canvasは東京リージョン提供になってました。
一部のモデルについては、クロスリージョン推論での提供になており、東京リージョンの画面からでも利用することが可能ですが、実際には別のリージョンで処理が動くため、データが国外に飛ばされる可能性があります。
国外にデータを送るのがNGのシステムで使う人は確認をしてから利用をお願いします。


■最後に
Amazon Nova CanvasをBedrockエージェントから呼び出しもやってみたかったのですが、まだ対応していないようでした。
他のAWSサービスとの連携はAPI経由での実行であれば実装できるようなので、今後実装を試してみようと思います。
また、今回の検証で掛かったAWSの料金ですが述べ100枚程の画像を編集して、約5USD程でした。