画像不正検出ソフトLPexamの不正検出回避方法と対抗策

画像不正検出ソフトLPexamの不正検出回避方法と対抗策

山椒魚
山椒魚 (ID3679) 2016/11/25
0

画像不正検出ソフト「LP-exam(Ver. 1.03)」の無料版で遊んでみた

 画像不正検出ソフトが公開されているので、不正検出を回避する方法と、それで検知できない画像加工を検出する方法を考えてみた。

 以下、使用した解析結果の画像は、LPixel社のLP-exam分析結果です。
  LP-exam: https://lpixel.net/services/research/lp-exam/

不正として検知できる例から、弱そうな部分を見つける

対象画像は、バイオ関係でよく使われる、ImageJのサンプル画像。”Gel”です。

まずは、Gelの画像を加工して、下画像赤枠内にバンドを増やし、その加工を検出されない方法を探してみた。

試行1 バンドの切り貼り

赤枠(下)内の黒いバンドを、赤枠(上)内に切り貼りしてみた。

この時点でも上の画像(入力画像1)で切り貼りした跡が見つかりますね。
一応、LPexamにかけてみた(↓)。

カラーテーブル変化させると、白黒画像のときよりも目で見て切り貼りの跡がよくわかりますね。

結論1

 上段、中段の画像は、カラーテーブルの変更や明度の変更によって、目視によるエッジの検出の補助を行っていると予想される。
 単純なバンドの切り貼りでは目視観察もしくは目視観察+カラーテーブルの変更で用意に不正が検出できる。

試行2 切り貼りしたバンド周辺のぼかし処理(スムージング)によるエッジ隠蔽

 画像のエッジがカラーテーブルの変更で簡単に見つかってしまうことがわかりました。
 では、エッジを見つからないようにすればいいので、ぼかし処理を使ってみましょう。
 
 今回は、切り貼りした周辺にぼかし処理をかけてみました(下画像:入力画像2)。

さっきのよりはエッジが見えづらくなったでしょうか?

これもLPexamにかけてみました。(↓)

↑のを見ても、切り貼りしたときのような不自然なエッジは観察されないので、カラーテーブルの変更による検出は回避できた模様。

だけど、下段のフィルターが問題。(おそらく畳み込みフィルターか?Kernel不明)

ぼかし処理をかけた部分の周辺が不自然に黒く強調されてしまっている。

どうも下段のフィルターは、ノイズレベルを検出しているようで、ぼかし処理をかけすぎてしまうとそのノイズが低減されすぎてしまい、ぼかし処理をかけたことがバレてしまうみたい。

結論2

切り貼りにより生じたエッジをぼかし処理をスムージングによって除いても、加工していない領域とノイズレベルが大きく異なってしまうため、ぼかし処理で加工したことが検出される可能性が高い。

試行3 切り貼り後のぼかし処理+加工領域へのノイズ付加

 ぼかし処理も、加工領域周辺のノイズレベルを下げすぎてしまうため検出される可能性が高そう。
 なら、ぼかし処理後にそれで低減されたノイズを補うためにノイズを付加してやればいい。
Image Jでぼかし処理をかけた領域に、
run("Add Specified Noise...", "standard=1"); //単位は%か?
 ↑のコマンドでノイズを付加した。(下の画像)

↑切り貼り+ぼかし+ノイズ付加を行った画像(入力画像3)

 これもLPexamにかけてみた。↓

結論3

 拡大しても、試行2の解析結果の様にぼかし処理を施した領域が黒くなるといったことはなくなった。

 今回の切り貼り+ぼかし処理+ノイズ付加によってLPexamによる画像加工(不正)検出を回避できたと考える。

試行3で実行した操作の記録


run("Gel (105K)");


makePolygon(193,303,193,309,195,313,199,316,205,317,211,317,220,317,224,315,226,310,226,304,225,298,221,294,217,293,211,293,205,292,198,293,195,295,194,298);
run("Copy");
run("Paste");

makeRectangle(186, 223, 48, 35);
run("Smooth");
run("Smooth");
run("Smooth");
run("Smooth");
run("Smooth");
run("Smooth");
run("Smooth");
run("Smooth");
run("Smooth");
run("Smooth");
run("Smooth");
run("Smooth");
run("Add Specified Noise...", "standard=1");

【対抗策】LPexamで検出できない不正の検知方法案

さすがに不正画像が蔓延するのは本意では無いので、今回の画像加工方法を検出する方法も考えた。

おそらく、ノイズ(高周波)を付加しているので、入力画像3をハイパスフィルターで処理すれば検出できるだろう。
 ConvolutionのKernelは下記の通り(正規化あり)
 
-1 -1 -1
-1 8 -1
-1 -1 -1


 ハイパスフィルタをかけたものがこちら↓(入力画像3をConvolutionして明度調整)


 。。。。。。。。。。。。。。(^ω^).。。。。。。。。。。。。。。。。。。ん?




 元画像のノイズレベルに合わせて、ぼかし領域にノイズ付加したからか、検出できない。。。。。。

 自分で不正検出できなくなった。。。。

ちなみに、ノイズ付加するときの設定がrun("Add Specified Noise...", "standard=2");のときはハイパスフィルタ+明度調整で検出できた。(下画像)

結論

生データを調べるのが一番!

感想

 うん、まぁ、このソフトも無料版ですし、製品版(スタンドアロン版54万円)ではいろいろフィルターが追加されてるみたいだから、そっちなら検出できるのだろう。と期待している。

参考にしてくれた記事

記事が登録されていません。
この記事を参考にして、新しく記事を投稿しよう!

違反について