第3回 OpenCVと表現

目次

OpenCV

OpenCVとは

OpenCV(正式名称: Open Source Computer VisionLibrary)は、オープンソースのコンピューター・ビジョン・ライブラリです.商用利用まで可能であるため様々なプロジェクトで使用されています.しかも,C, C++, pythonなど様々な言語から利用可能なため,手軽に利用することができます.

OpenCVでできること

OpenCVを使用することで,以下のような先程までの画素を自分で取得する方法ではなかなかできなかった発展的な解析や画像処理が可能になります.

  • フィルター処理
  • 行列演算
  • オブジェクト追跡(Object Tracking)
  • 領域分割(Segmentation)
  • カメラキャリブレーション(Calibration)
  • 特徴点抽出
  • 物体認識(Object recognition)
  • 機械学習(Machine learning)
  • パノラマ合成(Stitching)
  • コンピュテーショナルフォトグラフィ(Computational Photography)
  • GUI(ウィンドウ表示、画像ファイル、動画ファイルの入出力、カメラキャプチャ)

移動物体の追跡

オプティカルフロー

オプティカルフローとは,異なる時間に撮影された2枚の画像間で,同じ対象の対応付けを行い,移動量をベクトルデータとして表したものです.
定点撮影の場合,動いた物体をオプティカルフローを計算することで解析できます.逆に,物体が動いていない場合はカメラのブレ(動き)を推定できたりします.

画像の図の,画像Aのaの領域がもう一枚の画像Bのどの位置にあるのかを調べます.そのためにaの位置の画素を中心とした画像Bのbの領域からある範囲を調べ,SSDやSADが小さい値の中心画素を対応点a’として,そのaからa’を結んだベクトルをオプティカルフローとしています.
この処理をすべての画素について行います.


さらに,動画像の枚フレームでオプティカルフローを求めて,ベクトル値がゼロでない領域を追跡することで,移動物体追跡が可能になります.


パターンの検出

テンプレートマッチング

2つのパターンの類似度を測定することをパターンマッチングといいます.単純な方法に,グレースケール画像や2値化画像をパターン画像としてマッチングを行う処理をテンプレートマッチングといいます.
指定されたパターン画像が解析したい画像内に存在するかどうか,またその位置を計算します.
類似度(相違度)は,テンプレートの画像と解析対象の画像のが画素値の差分の2乗(SSD)や差分の絶対値(SAD)によって計算します.
たとえば,画像の図のように,解析対象の画像中でSSDが最も低くなるエリアを特定することで,テンプレートの位置を特定することができます.


パターン認識

顔認識

顔画像の特徴を捉える特徴量として,2つの矩形領域の平均輝度の差を特徴量とするHaar-like特徴量が用いられています.
Haar-likeフィルタの大きさ,縦横比,位置,フィルタの種類を変えながら,顔画像に当てはめて特徴量を抽出します.
画像の図のように500ほどのフィルタで顔の特徴が十分捉えられていることがわかります.


OpenCVの表現的側面

監視社会

わたしたちは普段色んなカメラに接して生活しています.一日生活してみていくつのカメラが自分の周りにあったか数えることができるでしょうか?スマートフォンやPCのウェブカメラなどの意識しやすいものもあれば,監視カメラなどの普段あまり意識しないものまで様々です.

ここではその意識しない側の存在である監視カメラについて考えてみたいと思います.

CCTV

CCTV

CCTVとはイギリスの監視カメラシステムです.現在イギリス全体で約600万台の監視カメラが存在します.イギリスより国土の広い日本はその1/100程度の監視カメラがあるようですが,それでも多いように感じる方もいるかもしれません.
もともとは防犯目的でイギリス政府が推進してきたプロジェクトで,ロンドン同時多発テロなどを契機にかなり拡大したようです.これが犯罪の抑止力になるかどうかという議論はさておき,このような徹底的に監視された状況で一市民として何を感じるでしょうか.

Pros

  • 犯罪に遭う確率が減って嬉しい
  • 犯罪に遭っても犯人が見つかる確率が上がって嬉しい

Cons

  • カメラの死角はより危険な場所になるのではないか
  • 防犯以外の目的で記録されているのではないかと不安になる
  • ちょっとした交通違反などでも徹底的に監視されて気が抜けない

など,色々なことが想定されると思います.
近年,AIベースのコンピュータビジョンの発達によって,より高度な分析がなされていることは間違いありません.
この状況を踏まえた上で,どのように生きていくかという問題を各々が考えていく必要があるかもしれません.

監視と表現

監視カメラ・プレイヤーズ

監視カメラ・プレイヤーズ(SCP)は,1995年にマイケル・カーターが行った「ビデオ監視装置のゲリラ・プログラミング」の呼びかけに応じて,1996年11月にビル・ブラウン、スーザン・ハル,その他様々な活動家がニューヨークで設立したグループです.このメディア・アクティビスト・グループのメンバーは,カメラの前で特別に脚色された芝居を上演することで,保護されているプライバシーの侵害に反対することを表明しています.アルフレッド・ジャリの「ユビュ・ロイ」やオーウェルの「1984」,ベケットの「ゴドーを待ちながら」などが上演されました.それ以来,このメディア・アクティビスト・グループは,主にニューヨークで40回以上監視カメラの前でパフォーマンスを行っており,現在ではテンピ,アリゾナ,サンフランシスコ,ボローニャ,ストックホルム,リトアニアにもグループがあるそうです.

もともとはテレビ番組で警備員が監視カメラの映像を見て暇をつぶすというコンテンツにインスパイアされたものらしいですが,警備室のカメラを「観客がいる」リアルタイム配信カメラのような捉え方をすることで,見る-見られる関係性を強く意識させ,同時にパフォーマーが自分が見られているということを自覚していることがよく伝わってきます.

誤検出させる

Cloud Face (2012) Shinseungback Kimyonghun

Cloud Faceは,韓国のアーティストShinseungback Kimyonghunによる作品です.まずは,以下の動画をみてください.

Cloud Faceは,AIの顔検出アルゴリズムによって顔であると認識される雲の画像を集めた作品です.これらの画像は,AIによる誤認識,エラーの結果です.一方で,私たち人間も雲の中に顔を発見することがよくあります.ここで,AIのエラーと私たちの想像力とが交差することになります.

Cloud Face

一般的に,AIによる誤認識はエラーとして否定的に捉えられます.もちろん,例えば画像解析による異常検知など,AIに正確な結果が求められる場面は多々あります.AIにエラーが多発するとなれば,そのようなAIを利用したシステムは非常に不安定で信用に欠けるものになってしまうでしょう.それでは,AIによるエラーは悪であり必ず避けなければならないものなのでしょうか?

Cloud Faceを例にとって考えてみましょう.Cloud Faceは,AIによって顔であると認識された雲の画像を集めた作品でした.これらの画像は実際には雲であり,顔ではありません.そのため,エラーであると捉えられるわけです.

ところで,顔でないものから顔を見出すといった現象は,人間が持つ想像力によってもたらされます.他にもパレイドリアという心理現象で知られるように,私たち人間には,普段からよく知ったパターンを本来そこに存在しないにもかかわらず心に思い浮かべることがあります.

(画像はWikipediaより引用)


これを踏まえると,Cloud FaceにおけるAIのエラーは,私たち人間が持つ想像力と非常に近いように思えませんか?顔でない画像から顔を見出す,それはまさに人間の想像力によってもたらされるものであり,AIのエラーはそれと非常に近しい現象であると考えることもできるわけです.

画像認識とは本来,そこに映っているもの正しく認識するための技術として想定されています.しかしこの作品では,あえて想定されていない使い方をすることで,非常にユニークで興味深い画像を集めることに成功しているのです.


Unseen Portraits (2014) Philipp Schmitt and Stephan Bogner

顔認識で監視し続けて,人と認識されない瞬間を探す作品は数あれど,顔を変化させるときの崩し方が特徴的な作品です.


Cat or Human (2013) Shinseungback Kimyonghun

人間の顔を猫の顔として認識する「猫顔検出アルゴリズム」(OpenCV),人間の顔検出アルゴリズムによって人間の顔として認識された猫の顔(KITTYDAR)を左右に並べた作品です.
猫に分類される人の顔がそういうものとして見ていると確かに見えてきたり,猫も凛々しい人に見えてきたりする,「見立て」られた瞬間にそう見えてしまう不思議があります.


REALFACE Glamouflage

REALFACE Glamouflageは,顔認識アルゴリズムを混乱させるように設計されたTシャツのコレクションです.

この作品の当時,Facebookにおける写真のタグ付け機能が流行していました.この機能は,画像をアップロードするだけで個人を識別しタグ付けしてくれるという便利な機能ではありますが,そのアルゴリズムの詳細については明らかになっていません.かつては写真にタグを付けるという行為は,自らが能動的に行う行為でしたが,この機能が開発されて以降は,Facebookの提案を受け入れるという受動的な行為へと変化していきました.

かつては任意の機能としてタグ付け機能が存在していましたが,Facebookによる自動タグ付けが普及して以降は,以前にも増して顔というものがある種の価値を持つようになりました.タグ付けされることでプロフィールにも表示されやすくなり,「いいね」も集めやすくなります.元々SNSに顔写真をアップロードすることはリスクも孕んでいましたが,自動タグ付けによってアップロード行為は促進されることにも繋がりました.

そのような背景の中で,REALFACE GlamouflageはFacebookの顔認識アルゴリズムを混乱させることを目的として制作されました.以下のように,有名人の顔画像をTシャツに貼り付けることで,顔認識アルゴリズムはそれらの画像を顔として認識し,余分なタグを付与します.

REALFACE Glamouflage

このTシャツを着ることで余分なタグが付与され,着ている人の情報はある程度分散させることができます.顔認識アルゴリズムを混乱させることで,個人のプライバシーを守ることができているわけです.顔認識アルゴリズムが一般に普及した現代の社会においては,このようなデザインが自らの身を守る役割を果たすのかもしれません.そのようなアルゴリズムから身を守るにはどうすれば良いのか,その解決策について私たちに導線を与えてくれるような作品です.

(画像は https://www.designforsustainability.info/signals/realface-glamouflage より引用)


検出から逃れてみる

どうすれば検出から逃れることができるのか,実際にOpenCV(Open source Computer Vision)ベースの顔認識プログラムを動かして試してみましょう.
プログラムではなく,映り込む自分自身の見た目を変化させることによって,自分の顔が認識されなくなるように工夫してみましょう.

今回もGlitch.comのテンプレートから必ずRemixして自身のプロジェクトとして編集できる状態にしてから作業してください.

OpenCV face detection template

要件

  • 認識されている証拠である赤い四角が見えない状態にすること
  • 本人であることは認識できるようにすること


CV Dazzle

CV Dazzleは,Adam Harveyにより制作された,顔認識システムから逃れるためのヘアスタイル/メーキャップ術です.

先述したように,現代ではあらゆる場所にカメラが設置され,私たちのセキュリティやプライバシーは常に危険に晒されています.そのような状況下で,ヘアスタイルやメーキャップを使うことでカメラから自らを迷彩することを目的としています.

CV Dazzleでは,ダズル迷彩という迷彩をベースとしています.ダズル明細は第一次世界大戦中に多く見られた迷彩パターンで,艦船の船体外装に全面的・全体的に塗装して施されました.迷彩とは本来,周囲に溶け込むことを目的とするため,ダズル迷彩のような目立つパターンは一見逆効果のように思えます.しかし,ダズル迷彩においては敵艦隊の射撃システムを困惑させることを目的としているため,このような派手なパターンとなっています.つまり,何を目的とするかによって,迷彩のパターンというのも状況ごとに変化していくのです.

dazzle_camouflage

ダズル迷彩を施されたエンプレス・オブ・ロシア(1918年)(画像はWikipediaより引用)

このCV Dazzleは全ての顔認識アルゴリズムに対して機能するわけではなく,Viola-Jonesアルゴリズムを使用したアルゴリズムに対してのみうまく機能します.以下の動画は,Viola-Jonesアルゴリズムの実際の動作を視覚化したものです.

このアルゴリズムでは,長方形の領域ごとに計算を実行し,明るい領域と暗い領域の違いを分析します.その領域内に顔が存在するかどうか判別するためにさまざまなスケールでスキャンを実行し,顔があると認識された場合には赤い長方形でマークされます.そしてこの赤い長方形が複数個重なった場合にのみ,顔が存在すると認識されます.そのため,単に濃いメイクアップをするだけでは顔認識アルゴリズムを騙すことはできません.

そこでCV Dazzleは,前衛的なヘアスタイルやメーキャップを使い顔の連続性を隠しすことで,顔認識アルゴリズムを騙すことに成功しました.うまく騙すためのポイントとしては,左右を非対称にすることや,顔の輪郭を隠すことが効果的なようです.

この例では,髪型によって顔の輪郭は隠れ,さらに右頬のメイクによって顔の左右は非対称になっており,うまく顔認識アルゴリズムを騙すことができています.他にも,以下のようなパターンで成功を収めています.

(画像は https://cvdazzle.com/ より引用)

このようにCV Dazzleでは,顔認識アルゴリズムの特性を分析することで,逆に顔認識アルゴリズムを騙すことに成功しました.この作品は2012年の作品ですが,当時の段階ですでに監視カメラなどの普及に伴うセキュリティー/プライバシー侵害は大きな問題となっていたことがわかります.その対抗手段としてヘアスタイルやメーキャップを活用するという視点を見出したアーティストAdam Harveyの視点は大きな意義を持つでしょう.


How To Avoid Facial Recognition

この作品は,Kyle McDonaldとAram Barthollによる,アナログな方法で顔認識アルゴリズムを回避するための一連の方法の実験です.これまで紹介してきた事例では,デジタルな手法を用いて顔認識アルゴリズムを騙すような事例が多くありましたが,この作品では,誰でも実践可能なアナログな方法を模索している点が異なります.

まず,彼らは以下のようなマスクを装着します.この場合にはほとんど顔が見えないので,もちろん顔認識アルゴリズムを騙すことは容易いでしょう.

How_To_Avoid_Facial Recognition_1

次に,透明なマスクを装着します.マスクが光を反射するため,顔認識アルゴリズムがきちんと動作しなくなるのでしょう.

How_To_Avoid_Facial Recognition_2

そして最後に最もアナログで簡単な方法として,顔を傾けるという方法を紹介しています.特別な道具や準備は何も必要とせず,誰でも気軽に実践できるという点で,効果的であると言えるでしょう.

How_To_Avoid_Facial Recognition_3

街中で皆で実践している様子.
How_To_Avoid_Facial Recognition_4

こうした取り組み自体はとてもユーモラスに思え,監視社会というディストピア的な未来に対して,私たちができることは何があるのか,希望的な見地を与えてくれます.現在のAIをベースとした顔認識システムに対してはこの方法はうまく機能しない可能性はありますが,私たちの想像力次第で,新たな方法が発見されるかもしれません.