スタンフォード大学はいかにしてLAION-5Bから1008件のCSAMを検出したか

# 概要
2023年12月20日、Stable Diffusionなどの有名な画像生成AIが学習に利用しているオープンデータセットであるLAION-5Bに1008件のCSAM（Child Sexual Abuse Material: 児童性的虐待画像）が含まれていることが[Stanford Internet Observatoryによって指摘](https://cyber.fsi.stanford.edu/io/news/investigation-finds-ai-image-generation-models-trained-child-abuse)されニュースとなりました。この記事では公開された以下の調査レポートを基に、50億を超えるテキスト画像ベアのLAION-5BからどのようにしてCSAMを特定したのかをまとめました。

https://purl.stanford.edu/kh752sm9123

# 背景
## LAION-5Bとは
かつての画像データセットは人力で収集・厳選した画像に人力でアノテーションを付与していましたが、近年はインターネットのクローリングと自動処理によって億を超えるサンプルを持つデータセットが登場しています。[LAION-5B](https://laion.ai/blog/laion-5b/)もその一つで、毎月数十億のページをクロールし現在はペタバイト級のデータセットとなっている[Common Crawl](https://commoncrawl.org/)からHTMLのIMGタグを抽出し、その画像URLとALTテキストを画像・アノテーションのペアとして収集しています。これによって得られた500億超のペアから、以下の規則によってフィルタリングを行い58.5億までに落としています。

* アノテーションが5文字未満もしくは画像サイズが5KB未満
* 解像度があまりに大きいもの
* 画像URLをbloom filterにかけ、重複していると判断されたもの
* CLIPもしくは多言語版であるMCLIPを用いて画像とアノテーションテキストの特徴量を比較し、似ていないと判断されたもの
* CLIP特徴量を用いて違法な画像であると判断されたもの

さらにここからCLIP特徴量を用いて、NSFW(Not Safe for Work: 閲覧注意画像)やWatermarkといったタグを付加しています。
こうして構成されたデータセットを画像URLとテキストのペアという形で提供しています。また、LAIONは各画像のCLIP特徴量もメタデータとして提供しており、この特徴量だけでも9TB、検索用にインデックス化したもので800GBという巨大なものとなっています。

## LAION-5Bの利用リスク
このデータセットは人の目が入っていないuncuratedなものであり、LAION自身このデータセットは研究用途に限るとしています。具体的な問題点として以下のものがあげられると思います。

### リンク先画像の著作権
第一に権利関係の問題があります。LAIONが構築したメタデータはLAIONによってCreative Common CC-BY 4.0でライセンスされていますが、リンク先の画像の著作権はまったく別の話になります。米国ではフェアユースに該当するかどうか、日本では著作権法三十条の四で定められた例外規定にあたるかどうかがよく議論されているように思えます。

著作権者側の対策として、そもそもクロールされないようにする手段があります。LAION-5BのベースとなっているCommon Crawlはウェブページのrobots.txtを尊重するとしており、特に

```robots.txt
User-agent: CCBot
Disallow: /
```
と指定しておくことで名指しでCommon Crawlによるクロールを禁止することができます。
https://commoncrawl.org/ccbot

### リンク先画像の違法性
そもそもリンク先の画像が違法にアップロードされたものであるという可能性もあります。著作権について深く考えずにアップロードされたものや、のちに述べるCSAMなどといったものが例として挙げられると思います。いずれもいかがわしいドメインを除外するだけでは不十分で、Twitterなどの「まともな」ドメインでもこのような画像がしばしば含まれているので機械的な除外には限界がありそうです。

### ドメインの乗っ取り
前述したようにデータセットは画像URLとテキストのペアという形で提供されており、LAIONが収集したときにアクセスした画像と、ユーザー（モデル学習を行う者）がアクセスした画像が一致するとは限りません。リンク切れで404画像が降ってきていたり、ドメインの管理者がかわっているケースもあります。データセットに含まれているドメインを買い取って悪意のあるデータを混入させる[攻撃手法](https://arxiv.org/abs/2302.10149)も存在します。

## CSAMとは
GoogleがCSAMについてまとめてくれています。
https://support.google.com/transparencyreport/answer/10330933?hl=ja

> CSAM は、Child Sexual Abuse Material（児童性的虐待のコンテンツ）の略称です。これには、露骨な性的行為に関与する未成年者を扱った写真、動画、コンピュータ生成による画像などの（ただしこれらに限定されない）あらゆる映像描写が該当します。CSAM の解釈は、米国連邦政府による「児童ポルノ」の定義に準じます。

Googleをはじめとしたさまざまな米国プラットフォームではCSAMを発見次第、CyberTiplineと呼ばれるNCMEC(National Center for Missing and Exploited Children: 全米行方不明・被搾取児童センター)のホットラインに報告することが義務付けられています。

### 参考
* 合衆国法典第18編第2258A条
* 「児童ポルノ及び子どもに対する性犯罪に関する法律」https://dl.ndl.go.jp/view/download/digidepo_1000040_po_024103.pdf?contentNo=1

## CSAMの判定方法
既知のCSAMについてはハッシュ化したうえでデータベース化し、疑いのある画像とマッチングするという手法が広くとられています。

* YouTubeのCSAI Match
    * https://www.youtube.com/csai-match/
* MicrosoftのPhotoDNA
    * https://www.microsoft.com/en-us/photodna
    * [Facebook](https://www.huffpost.com/entry/facebook-photodna-microsoft-child-pornography_n_864695), [Twitter](https://www.theguardian.com/technology/2013/jul/22/twitter-photodna-child-abuse) もこれを利用
* AppleのNeuralHash
    * https://www.apple.com/child-safety/pdf/CSAM_Detection_Technical_Summary.pdf
* CloudflareのCSAM Scanning Tool
    * https://blog.cloudflare.com/the-csam-scanning-tool-ja-jp

ここで用いられるハッシュ関数はMD5やSHA-1などの暗号学的ハッシュとは異なり、画像に多少の変化があってもマッチングできる工夫がなされています。このハッシュ関数はperceptual hashと呼ばれており、再エンコーディングや画像編集に頑健である一方、偽陽性の増加やハッシュアルゴリズムの秘匿に気を配る必要があります。
今回のレポートではPhotoDNAが用いられています。

# LAION-5Bに対するCSAM検出
## 予備実験：キーワードベース手法
Stanford Internet Observatoryの研究者はまず多言語版データセットであるLAION-2B-multiを英訳したものに対して予備実験を行い、発見アプローチの検討を行いました。この実験ではCLIPベースで計算された画像のunsafe度が高いものを選択し、その中でアノテーション内容がCSAMに関係しそうなものを抽出しPhotoDNAで判定するというアプローチがとられました。これによりいくらかのCSAMが発見できたようですが、このアプローチには以下の欠点が挙げられています。

### 翻訳精度
膨大なアノテーションの英訳のためにGoogle翻訳やDeepLを使うのはコストが高いため、研究者は[M2M100](https://huggingface.co/docs/transformers/model_doc/m2m_100)を用いていましたが、しばしば誤訳がみられたり、テキスト生成モデルで良く起こる同じ単語が繰り返される現象がみられたりしたそうです。

### 検索ワードの網羅性
CSAM疑いのあるサンプルを探すためにアノテーションから疑わしい単語を検索する必要がありますが、このための単語セットを構築するのは至難の業です。特に他言語でのスラング（例として日本語の「ロリ」が挙げられています）などは翻訳精度が低いため、多言語版データセットからのCSAM検出はさらに困難になっています。

### 画像ラベルの正確性
結局見つけられたCSAM画像についているアノテーションにはあまり露骨な単語が使われていなかったことが分かりました。たいていの場合そのテキストだけでは合法か非合法か見分けのつかないあいまいな単語(teen, schoolgirl, twink...)で構成されているそうです。

以上の考察からキーワードベースではうまくいかないと結論づけられました。そのほかのlimitationとしては以下のものが挙げられています。

### リンク切れ
疑わしいサンプルの約30%はすでにリンク切れになっており、PhotoDNAで検証することができませんでした。しかしながらデータセット構築時にはリンクが生きているはずなので、これらの画像で学習されたモデルやデータセットのキャッシュがどこかに存在することが言えます。

### unsafe valueの欠損
データセット中の6%の画像には不鮮明を理由にunsafe度が記録されていませんでした。このアプローチではこれらの3億サンプルを自動的に見落としてしまうという問題があります。

### PhotoDNAの限界
PhotoDNAはあくまで既知のCSAMしか検出できないこと、検出が不得意なドメインが存在することという欠点があります。例としてCSAM疑いのある二次元画像に対しては全くマッチしなかったとしています。

### PhotoDNAの偽陽性
あるCSAM動画がフレームに分割されバラバラにアップロードされたと仮定します。このとき一部のフレームは法的にはCSAMとはみなされないものもあるかもしれませんが、出どころを把握する意味でもPhotoDNAはそういったフレームに対しても陽性と判断するようです。また年齢がわかりずらい画像も一部hashとして登録されているようです。これらを偽陽性とみなすべきかどうかは難しいところがあるとしています。


# 提案手法
これらの欠点を踏まえて研究者は以下の手法を提案しています。予備実験と提案手法どちらのアプローチでも、利用しているのはCLIP特徴やMD5といったパブリックなメタデータとアノテーションと画像URLのみであり、研究者が疑わしい画像を閲覧する必要がないことに注意してください。

## 1. 疑わしい画像特徴の抽出
### perceptual hash‐based detection
* LAIONによって確度0.995以上でunsafeと判定されているサンプルを全て抽出し、画像URLをPhotoDNAで検証
* マッチしたサンプルをProject Arachnid Shield APIを通して[C3P (Canadian Centre for Child Protection)](https://www.protectchildren.ca/en/)に検証してもらう
* CSAM判定されたCLIP特徴を記録


### cryptographic hash‐based detection
* NCMECの保有するMD5データベースを用いてLAION-5Bに含まれるCSAMを検出
* マッチした画像のCLIP特徴を記録

この手法は既にリンク切れになってCSAMか判別できないサンプルに対しても一定の検出を行うことができます。LAIONは各画像のMD5をまとめたものをlaion2B‐multi‐md5, laion2B‐en‐md5, laion1B‐nolang‐md5といった形で公開しており、このMD5をNCMECの保有するデータベースと突き合わせることができます。このcryptographic hash-based手法はrecallが低くなるものの、MD5の一致を見るだけで良いので50億全てのサンプルを走査することができます。

## 2. k近傍法による類似画像検出
* 記録したCLIP特徴でk近傍法を行い、データセット全体から類似画像を検索
* PhotoDNAで検証
* PhotoDNAでは分からなかった画像をダウンロードし、[Thorn](https://www.thorn.org/)の提供するCSAM分類器で判定
* CSAM判定されたものをC3Pが検証
* あらたに認定されたCSAM画像のCLIP特徴からk近傍法を行い、上のステップを繰り返す

この類似度検索によってunsafe値に依らない検出を行うことができ、さらにPhotoDNAでマッチしない未知のCSAMも検出することができます。しかしながらC3Pでの検証は人力であり、類似画像をすべて投げるわけにはいきません。そこでThornの分類器によるフィルタリングを挟んでいます。

# 検証結果
まずLAION‐2B‐multiデータセットから27件の画像がPhotoDNAとC3Pによって検証され、この27件を種にk近傍法で2773件の疑わしい画像を新しく抽出しました。そしてPhotoDNAによればこのうち1954件のリンクがまだ生きていることが分かり、その中の88件がCSAMとして判定され、うち43件があたらしく検出したもの、残りはダブりであることがわかりました。最大で8枚の同じCSAMがデータセットに混入しており、このような重複はモデル学習に悪い影響（生成モデルがそのデータを復元できてしまう）を与えることが分かっています。

データセット全体での検出結果は以下のようになっています。

### 既知データベース（PhotoDNA, MD5）で検出、C3Pで検証されたもの

|Method| Total | Verified (C3Pによる認定) |
|---|---|---|
|unsafe >= 0.995 + PhotoDNA| 1679 | 689 |
|KNN + PhotoDNA | 162 | 58 |
|MD5 match | 229 | N/A |
|MD5 + KNN + PhotoDNA|167 | 78|

### Thornによる分類器で検出、C3Pで検証されたもの

|Method | Total | Verified |
|---|---|---|
| PhotoDNA + KNN | 557 | 105 |
| MD5 + KNN | 432 | 78 |

合計として3226件を機械的に検出し、そのうち1008件がC3Pによる人力でCSAMと認定されたと読めます。

# みつかったCSAMの特徴
あまり詳しい統計は載っていないのですが、Reddit, Twitter, Blogspot, WordPressといったCDNや、XHamster, XVideosといったアダルトサイトのドメインが含まれているようです。またサイトの特徴として"teen models"やヌード、日本の"junior idol"コンテンツが多くヒットしているとしています。

# CSAMをどうやって取り除くか
レポートの5章ではこれを受けてユーザーやプラットフォーマーが取れる手段について説明しています。

## 問題サンプルの除去
CSAMの除去は色々な観点で行う必要があり、データセット内のURLを除去するだけでなく、既にダウンロードされて誰かのマシンに入っている当該画像の除去や学習済みモデルからのCSAMによる影響の除去といった行動が必要になります。このうちモデルからの除去が最も難易度が高いものとなります。モデルに特定の特徴を忘れさせる研究は行われていますが、しばしば当該画像そのものへのアクセスが必要となってしまうケースがあります。

## NSFWフィルターの強化
現状のLAIONによるCLIPを用いたフィルターでは不完全であることが分かりました。アノテーションに対するキーワード検出も不完全であり、これらの強化が必要です。
また、このデータセット収集に際し既知のCSAMの検出も行っていないことが指摘されています。上で挙げたperception hashやMD5による照合や検出時の報告などをデータセット作成者は行うべきでしょう。

## 学習プロセスの変更
そもそも性的なコンテンツを含むデータセットで学習する際は子どもの画像そのものを完全に除外すべきとしています。研究者たちは性的な特徴をもつプロンプトと子どもに関するプロンプトを合わせることでCSAMを合成できることを[指摘しています](https://purl.stanford.edu/jv206yg3793)。

## コンテンツプラットフォームの規制強化
アップロードされた動画像がCSAM認定されハッシュデータベースが更新されるまでには時間を要するため、プラットフォーマーは自身の保有するコンテンツに対して定期的に再スキャンを走らせる必要があるとしています。

## モデル・データセットプラットフォームの規制強化
HuggingFaceやCivitAIといった、データセットや学習済みモデルを配信するプラットフォームでもCSAMの検出・報告システムが実装されているべきだと指摘しています。

# おわりに
この記事ではStanford Internet Observatoryによって発表された、巨大なデータセットに対して人力検証によるコストを出来るだけ抑えながらCSAMを検出する手法と、CSAMをデータセットや学習モデルから取り除くための提案について紹介しました。