MastodonでNSFWな画像が投稿される際にNSFWを付与するように手を入れてみた

## はじめに

 

Misskey で導入されているNSFWな画像に対して自動でNSFWが付与されるという機能をMastodonにも導入してみました。

 

過去にも、以下の記事で記載しているように自動NSFW機能を導入してみたことはあるんですが、如何せん外部APIを使う関係でコストがかなりかかる状況でした。

gamelinks007.hatenablog.com

 

また画像を投稿する際に毎回チェックが実行されるため投稿処理が重くなるということも発生していました。

 

そういった背景から機能自体は廃止していたんですが、直近で作ったBotで利用しているopennsfw2をPyCallから使える可能性が出てきたので試しに実装してみました。

 

gamelinks007.hatenablog.com

 

やったこと

Rubyでopennsfw2が実行できるかを調査

実際に調査で作ったサンプルは以下になります。

github.com

 

基本的にはPyCallに記載されているサンプルコードを元にopennsfw2を呼び出し、それを使うようにしているだけです。

 

github.com

 

実際にNSFWな画像を用意し、動作確認なども行ってみました。

NSFWな画像を正しく検知できていました。

 

Mastodon側のコードを修正

次にMastodon側のコードを修正し、投稿に紐づいた画像をチェックするようにしてみました。

 

実際に作ったものとしては以下になります。

github.com

 

実際にローカルの開発環境下で確認し、正常にNSFWを付与できているようでした。

 

ただ、画像自体のチェックにかなり時間がかかるため投稿処理がかなり重くなります。

実運用まで考えるのであれば、はより軽量なモデルを使うか処理のボトルネックを調査していく必要はありそうです。

 

今後

 

とりあえず、機能の実装自体は出来たので良かったですねー。

今後実運用までもっていくかどうかは検討していきたいかなと思います。

 

まあ、より軽量なモデルがあればとかにはなりそうですが......。