Midjourneyを提訴──ディズニーとユニバーサルが問う著作権の限界

はじめに

2025年6月、米ディズニーとユニバーサル・スタジオは、画像生成AIサービス「Midjourney」に対して著作権侵害および商標権侵害などを理由に提訴しました。

これは、生成AIが作り出すコンテンツが既存の著作物にどこまで接近できるのか、また著作権がAI時代にどのように適用されるかを問う重要な訴訟です。

本記事では、この訴訟の概要を紹介するとともに、LoRAやStable Diffusionなど他の生成AIツールにも関係する著作権の原則を整理します。

訴訟の概要

▶ 原告:

  • The Walt Disney Company
  • Universal Pictures

▶ 被告:

  • Midjourney Inc.(画像生成AIサービス)

▶ 主張の内容:

  1. 著作権侵害  Midjourneyが、ディズニーおよびユニバーサルのキャラクター画像などを無断で学習データに使用し、生成画像として提供している。
  2. 商標権侵害  キャラクター名・外観・象徴的な要素などを模倣し、消費者が混同するおそれがある。
  3. 不当競争  ライセンスを得ていない画像を提供することで、正規商品の市場価値を損なっている。

AI生成物と著作権の関係

AIによって生成された画像そのものに著作権があるかどうかは、各国で判断が分かれている分野ですが、生成のもとになった学習素材が著作物である場合には、問題が生じる可能性があります。

よくあるケースの整理:

ケース著作権的リスク
著作物の画像を学習素材として使用高い(無断使用は著作権侵害に該当する可能性)
学習に使っていないが、見た目が酷似内容次第(特定性・類似性が高い場合は侵害)
キャラを直接再現(LoRAやPromptで)高い(意匠の再現とみなされる可能性)
作風や画風の模倣通常は著作権の対象外(ただし境界は曖昧)

ファンアートや非営利創作も違法なのか?

結論から言えば、原作キャラクターの二次創作は原則として著作権侵害にあたります

  • 著作権法は、営利・非営利を問わず、原作の「表現の本質的特徴」を利用した場合、著作権者の許諾が必要としています。
  • よって、SNS上でのファンアート、同人誌の発行、LoRAモデルの配布なども、すべて「権利者の黙認」によって成り立っている行為です。

よくある誤解と整理

誤解実際
「非営利ならセーフ」❌ 著作権侵害は営利・非営利を問わない
「少し変えれば大丈夫」❌ 表現の本質的特徴が再現されていればNG
「第三者が通報すれば違法になる」❌ 著作権侵害の申し立ては権利者本人に限られる

今後の論点と注目点

  • LoRA・生成モデルにおける責任の所在  モデル作成者か?使用者か?それともサービス提供者か?
  • 訴訟によってAI学習に対する明確な指針が出る可能性  米国では「フェアユース」の適用範囲も議論対象になるとみられています。

まとめ

  • Midjourneyに対する著作権・商標権侵害訴訟は、AI生成物と著作権の関係を問う象徴的な事件です。
  • ファンアートやLoRAによる画像生成も、法的には著作権侵害に該当する可能性がある点に留意が必要です。
  • 著作権は営利・非営利を問わず適用されるため、「商売していなければ大丈夫」という認識は正しくありません。

AIを活用した創作活動を行う際には、法的リスクを理解し、可能であれば各コンテンツ提供者のガイドラインを確認することが望ましいと言えるでしょう。

Apple Silicon MacにStable Diffusion WebUIをインストールする

Stable DiffusionをApple SiliconのmacOSにインストールしてみましたが、少しコツが必要でした。

インストール時期やApple Siliconの種類によっては若干変わるかもしれませんが、私がM1 Maxチップ搭載のMacBook Proで成功した手順をまとめてみました。

必要なパッケージをインストールする

こちらは公式に従ってインストールします。私の環境では最終的にPythonはここでインストールしたものではなく、Asdfで導入したものを使用しているので、3.10系であればここでインストールしなくてもよいと思われます。

brew install cmake protobuf rust python@3.10 git wget

Stable Diffusion WebUIをダウンロードする

GithubのReleasesでもダウンロードできそうですが、macOSの場合はリポジトリをクローンする必要があります。

任意のディレクトリにリポジトリをcloneしてください。

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

追加データをダウンロードする

手順の中でここが一番面倒かもしれません。ここでは執筆時点最新のv2.1を使用します。

上記サイトからvae-ft-mse-840000-ema-pruned.ckptというファイルをダウンロードし 、stable-diffusion-webui/models/Stable-difusionに保存してください。

保存後、ファイル名をv2-1_768-ema-pruned.vae.ptに変更してください。

上記サイトからv2-1_768-ema-pruned.safetensorsというファイルをダウンロードし、stable-diffusion-webui/models/Stable-difusionに保存してください。

ここを開いて、表示された内容をコピーし、stable-diffusion-webui/models/Stable-difusionv2-1_768-ema-pruned.yamlというファイル名で保存してください。

Stable Diffusion WebUIを起動する

cd stable-diffusion-webui
./webui.sh

起動すると、以下のようなログが表示されます。URLが出ているので、ここにアクセスしてください。

Model loaded in 3.6s (load weights from disk: 0.3s, create model: 0.2s, apply weights to model: 1.8s, apply half(): 0.6s, load VAE: 0.1s, move model to device: 0.5s).
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
Startup time: 11.2s (import torch: 2.1s, import gradio: 1.7s, import ldm: 0.4s, other imports: 2.9s, load scripts: 0.3s, load SD checkpoint: 3.6s, create ui: 0.2s).

ブラウザでアクセスすると、以下のような画面が表示されます。

設定変更を行う

同じようにApple Silicon Macにインストールしている方の記事で、この点に触れていない方も結構見かけるので、もしかすると環境依存かもしれませんが、私の環境ではv2.1でGenerateしようとすると以下のようなエラーが表示されました。

  0%|                                                                                                                                                                                                                                    | 0/20 [00:02<?, ?it/s]
Error completing request
Arguments: ('task(6gvckovujc9xon0)', 'sailing ship', '', [], 20, 0, False, False, 1, 1, 7, -1.0, -1.0, 0, 0, 0, False, 512, 512, False, 0.7, 2, 'Latent', 0, 0, 0, [], 0, False, False, 'positive', 'comma', 0, False, False, '', 1, '', 0, '', 0, '', True, False, False, False, 0) {}
Traceback (most recent call last):
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/modules/call_queue.py", line 56, in f
    res = list(func(*args, **kwargs))
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/modules/call_queue.py", line 37, in f
    res = func(*args, **kwargs)
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/modules/txt2img.py", line 56, in txt2img
    processed = process_images(p)
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/modules/processing.py", line 503, in process_images
    res = process_images_inner(p)
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/modules/processing.py", line 653, in process_images_inner
    samples_ddim = p.sample(conditioning=c, unconditional_conditioning=uc, seeds=seeds, subseeds=subseeds, subseed_strength=p.subseed_strength, prompts=prompts)
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/modules/processing.py", line 869, in sample
    samples = self.sampler.sample(self, x, conditioning, unconditional_conditioning, image_conditioning=self.txt2img_image_conditioning(x))
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/modules/sd_samplers_kdiffusion.py", line 358, in sample
    samples = self.launch_sampling(steps, lambda: self.func(self.model_wrap_cfg, x, extra_args={
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/modules/sd_samplers_kdiffusion.py", line 234, in launch_sampling
    return func()
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/modules/sd_samplers_kdiffusion.py", line 358, in <lambda>
    samples = self.launch_sampling(steps, lambda: self.func(self.model_wrap_cfg, x, extra_args={
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/venv/lib/python3.10/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/repositories/k-diffusion/k_diffusion/sampling.py", line 145, in sample_euler_ancestral
    denoised = model(x, sigmas[i] * s_in, **extra_args)
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/modules/sd_samplers_kdiffusion.py", line 152, in forward
    devices.test_for_nans(x_out, "unet")
  File "/Users/t0k0sh1/Workspace/stable-diffusion-webui/modules/devices.py", line 152, in test_for_nans
    raise NansException(message)
modules.devices.NansException: A tensor with all NaNs was produced in Unet. This could be either because there's not enough precision to represent the picture, or because your video card does not support half type. Try setting the "Upcast cross attention layer to float32" option in Settings > Stable Diffusion or using the --no-half commandline argument to fix this. Use --disable-nan-check commandline argument to disable this check.

ちなみに、v1.4やv1.5ではこの事象は起きなかったので、v2.x系固有のエラーかもしれません。

これを解消するために、設定変更を行います。画面上部のタブからSettingsを選択し、

左のメニューからStable Diffusionを選択します。

バージョンにもよるかもしれませんが、一番下にUpcast cross attention layer to float32というチェックボックスがあるので、ここにチェックをつけてください。

最後に設定を反映させるため、画面上部のApply settingsボタンを押してください。

これでエラーが出ずに画像生成ができるようになります。

モバイルバージョンを終了