【データサイエンティストの開発録②】AIとシステムの橋渡し

ECデータ AI活用

 結論から言うと:「型エラー」はAIとプログラムの言語の壁

株式会社久(Q Inc.)でデータサイエンティストを務めるRINです。

【データサイエンティストの開発録①】では、AWS Lambdaの「10秒の壁」を遅延ロードという工夫で突破し、自前のAIエンジンをクラウド上で稼働させるインフラ基盤の構築について解説しました。

今回は、そのインフラの上で実際に画像データを処理する「プログラムとAIの連携」部分で直面した課題をお伝えします。

インフラが整い、いざテスト画像(JPG)をプログラムで読み込み、画像加工AIに処理を依頼したところ、以下のようなエラーが発生して処理が止まりました。

TypeError: a bytes-like object is required, not 'Image'

結論から言うと、これはプログラムが扱う「画像」と、AIが受け取れる「データ形式」が一致していないために起こるエラーです。 システム側は、画像を「色やサイズのまとまり(Imageオブジェクト)」として扱いますが、AIエンジン側はそれを直接受け取れません。AIは、基本的にコンピュータの基礎言語である「バイトデータ(0と1の羅列)」しか理解できないからです。

人間で例えるなら、日本語しか分からないAIに対して、英語の書類をそのまま渡して「処理して」と頼んでいるような状態でした。

メモリ上の「橋渡し」:画像を0と1のデータに翻訳する

AIエンジンに正しく画像を処理させるためには、プログラムで読み込んだ画像を、一度コンピュータが理解しやすい「バイトデータ」に翻訳(エンコード)して渡す必要があります。

そして、AIが背景の切り抜きを完了して返してきたバイトデータを、再び人間が見える「画像」として復元(デコード)する。この「翻訳の橋渡し」の仕組みを、プログラム内に組み込む必要がありました。

現場のリアル:画質劣化とデータ肥大化のジレンマ

翻訳の仕組み自体は構築できたものの、ここで新たな問題が発生しました。「画質の劣化」です。 ECサイトの商品画像において、画質は売上を左右する重要な要素です。

しかし、プログラムとAIの間でデータの変換を繰り返す過程で、画像が不自然に圧縮されて粗くなったり、透明にしたい背景部分が真っ黒になってしまったりする事象が発生しました。

背景を切り抜いた状態(透明な部分がある状態)を保持するためには、JPEGではなくPNG形式でのデータ連携が必須です。

しかし、高画質な商品画像をそのままPNGのバイトデータに変換すると、データ容量が元の数倍に膨れ上がり、再び「処理のタイムアウト」を引き起こすリスクが高まります。

解決策:最適なフォーマットで翻訳し直す

この「画質と容量のジレンマ」を解決するためには、単にデータを変換するだけでなく、メモリ上での一時保存プロセスを最適化するチューニングが必要でした。

私たちは、プログラム内で仮想的な「一時データ置き場(メモリバッファ)」を作成し、画質を一切落とさずに、かつAIが最も処理しやすい軽量なPNGフォーマットを指定して橋渡しを行う独自のデータフローを構築しました。 

これにより、ハードディスク(ストレージ)に無駄なファイルを書き込むことなく、メモリの空間だけで超高速に翻訳のキャッチボールを行うことが可能になったのです。

次のステップへ:切り抜き画像に「デザインの感覚」を足す

インフラの壁に続き、データ連携の壁も越えたことで、システムは「画像を正しくAIに渡し、綺麗な切り抜き画像を受け取る」ことができるようになりました。

しかし、出力された画像をECサイトの商品一覧に並べてみると、何かが足りません。背景は綺麗に消えましたが、商品が不自然に空中に浮いているように見えてしまい、そのままではECサイトに掲載できなかったのです。

次回(第3回)は、この切り抜かれた商品に対して「自然な影(ドロップシャドウ)」をプログラムで自動計算して付与する、システムへの「デザイン感覚の実装」について解説します。

■ECサイト運用の自動化・業務効率化のご相談はこちら

〈筆者プロフィール〉
データサイエンティスト RIN

前職では、出版業界にてECモールの運営や在庫管理などの実務を担当。現在は株式会社久にて、データサイエンティストとして購買データや会員データの加工、分析、モデル構築などに携わる。 本コラムでは、EC現場での実体験とデータサイエンスの知見を掛け合わせ、データ連携や前処理の時短テクニック、AIを活用した業務効率化のノウハウをわかりやすく解説します。