ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

Amazon EC2 Graviton3 インスタンスで ASCII アートをジェネレートしてみた

こんにちは、AWS チームの尾谷です。

先月、会社の歓迎会の余興で、Stable Diffusion Playground というサービスを利用してどんなお題で画像を作ったかを当てるゲームをやりました。
微妙な画像が生成されるので、ゲームにぴったりのツールでかなり盛り上がりました。

例:サーフィンするブタちゃん

AI が文章を作ったり、画像を生成する時代が到来してワクワクが止まりません!
が、昭和、平成、令和と渡り歩いてきたおじさんとしては、ASCII アートも忘れて欲しくない!!

ということで、今日は Amazon EC2 に jp2a というツールをインストールして ASCII アートを生成したブログをアプトプットします。

経緯

あるイベントのノベルティで ASCII アートをデザインして欲しい。と連絡をいただきまして、jp2a というキーワードをもらいました。
jp2a は画像をソースに ASCII アートを生成して出力くれるとのこと。

manpages.ubuntu.com

いろいろ調べた結果、Ubuntu OS だとリポジトリも用意されてそうだということと、ARM ベースでも動きそうなので検証も兼ねて東京リージョンに GA した Graviton3 インスタンスにインストールしてみることにしました。

Amazon EC2 Graviton 3 インスタンス

Graviton3 はイスラエルの Annapurnalabs (アナプルマ・ラボ) が開発した ARM ベースの CPU です。

2023 年 5 月現在は、Graviton3 として c7g、m7g、r7g ファミリーが展開されております。(正確に記載すると、AWS Graviton3E を搭載した c7gn ファミリーもあります。)

従来の Intel 製や AMD 製のインスタンスで展開されている 64 ビット (x86) とアーキテクチャが異なるため互換性に課題があるのと、比較的低価格で利用できるというメリットから、可能であれば積極的に導入をしていきたいインスタンスとなっております。

東京リージョンでは、今年の 2 月に c7g ファミリーが一般提供が開始されています。

aws.amazon.com

東京リージョンではまだ利用できませんが、c7g の東京リージョン GA と同時期に m7g、r7g ファミリーがリリースされているため、まもなく東京リージョンでも使えるようになるのではないでしょうか。

aws.amazon.com

Amazon EC2 インスタンスを起動

インスタンスを起動しました。
OS は、Ubuntu Server 22.04 LTS にしました。

x86 アーキテクチャではなく、Arm を選択しました。
Ubuntu は Arm 版も用意されており、ドロップダウンメニューで変更するだけで動的に Arm 版の AMI が指定されます。

インスタンスファミリーも c7g.medium を指定しました。
Intel 系や AMD 系だと Large サイズからしか提供されていないので、Medium サイズで利用できるのはありがたいです。

パブリックサブネットにて起動し、パブリック IP アドレスも自動割り当てにしました。

Ubuntu の AMI は Systems Manager Agent が起動しているので、鍵なしにしました。

あとセッションマネージャーを利用するため、IAM インスタンスプロフィール には、AmazonSSMManagedInstanceCore ポリシーが含まれるロールをアタッチしました。

jp2a インストール

セッションマネージャーが接続できるようになったので、以下コマンドを利用してインストールしました。

sudo -i
apt update
apt-get install -y jp2a

ASCII アート生成

準備が整いましたので、画像から ASCII アートを生成してみることにしました。
本ブログの冒頭に貼り付けた画像を wget して、jp2a コマンドを投入。

wget https://cdn-ak.f.st-hatena.com/images/fotolife/.../20230527093505.png
jp2a 20230527093505.png

すると、こちらが

こちらになりました。うーん、画像の解像度が影響しそうな感じです。。

解像度を上げてリトライ

そこで、解像度を上げてみることにしました。
Zoom にてスクリーンショットを取得して、Photoshop で 3 倍 (300%) に拡大しました。
横幅が 4062px あります。これならいけるはず。

S3 バケットにアップロードして、AWS CLI でファイルを取得しました。

root@ip-10-0-1-29:~# aws s3 cp s3://xxxxxx/images/koheiotani.jpg ./
download: s3://xxxxxx/images/koheiotani.jpg to ./koheiotani.jpg
root@ip-10-0-1-29:~#

おぉ!なんとなく雰囲気が出ています。

カラーも試してみましたが、赤鬼みたいになりました。

その後もいろいろ試してみたのですが、線が太くてコントラストが効いた画像が良さそうでした。
ロゴなどはかなり良い出来でした。

Graviton3 の恩恵

jp2a は Graviton3 インスタンス (c7.medium) と利用しないと動作しない高スペックな要件があるのか気になったため、Graviton2 の CPU で動作する t4g.small でも試してみましたが、遅延なく動作しました。
試した画像は全て 2 MB までだったので、もしかすると t4g.nano などでも動作するかも知れません。

まとめ

いかがでしたでしょうか。
今日は、歓迎会の余興のネタからノベルティ制作を絡めて Graviton3 の検証に繋げてみましたが、 時にはこうしたお遊び的な試みにも真剣に取り組んでいます。

もしご興味を持たれた方、共に歩んでいたける方を募集しておりますので、問い合わせフォームや Green からエントリーください。