画像認識系の技術だってまだまだ足りない

生成系AIのインパクトが大きいのですが

そもそも、CNNで活発化した画像認識系の認識技術ですが、最近は生成系AIの勢いであんまり元気がありません。
でも、そっちのニーズも確かに存在するし、そもそもの話、CNNベースの画像認識系のAIはまだまだ発展途上でやり残しなんかたんまりあると思っているわけです。

Pooling + Combolution 層と全結合層

この二つをまぜこぜにしてDeepとか言っているんだけど、そもそもニューラルネットワーク自体は全然Deepではない。まぁ、前半の Pooling と Combolution がやたらと深いから Deep なんだけどね。
そもそも、いわゆるニューロンを組み合わせた NN は層を深くしてもあんまりね…ということは既にわかっているから、そうじゃない層を入れることで性能向上を図ること自体は全然間違いじゃないし、別にそこを問題視しているわけではない。でも、なーんかみんな誤解しているような気がすると言うだけのこと。誤った理解はあんまり良いことではない。

Pooling + Combolution 層について

この層をしっかりと見てみる必要がある。この層は、いわゆる特徴量の抽出が主たる目的である。あとは、この層でどんな特徴が見つけられるか?ということに注目するべき。
さて、この層で出来ることは特徴量の抽出な訳だが、その処理に注目してほしい。ここで得られる特徴量は、実際にはいくつかの制約がある。

  • 画像上の位置に依存している

  • 画像の回転・拡縮・歪みに弱い

この制約はかなりの足枷であり、この足枷が正直面倒くさい問題である。
位置への依存は物体検出の際に問題となる。皆さん色々頑張って解決しているけど、本質的な問題としてベース技術の制約は引き継いでいる。そこを忘れてはいけない。
特に、画像の回転・拡縮・歪みは面倒くさい問題で、これを解決するためにやたらと画像のバリエーションを増やしたり色々しないといけなくなる。そりゃもう面倒くさくてたまらない。

問題の本質はCNNの特徴量の制約

この制約を何とかする必要がある。でも、今の技術の多くがCNNを起点としている以上、この制約を回避することは難しい。
ここで改めて特徴量に必要なことを書き出してみる。全てを満たす特徴量は今のところない。また、この中には同時に満たすことが出来ない条件も書いてある。なお、上では書いていないことも追記される点は了承いただきたい。

  1. 位置に関する情報が保存できる

  2. 位置に関する普遍性がある

  3. 特徴量間の関係を保存できる

  4. 回転に関する普遍性がある

  5. 拡大・縮小に対する普遍性がある

  6. 歪み(アフィン変換)に関する普遍性がある

ここでの普遍性とは前提条件に変化があっても情報が変わらないということである。例えば、位置に関する普遍性があるというのは、その特徴が画像のどこにあっても同じ特徴として記述できるという事。
位置に関する情報の保存と位置に関する普遍性は両立は多分無理。しかし、別の特徴量を使えば実現は可能だと思う。

そして、現在CNNが満たしている特徴量の条件は以下のもの。

  • 位置に関する情報が保存できる

  • 特徴量間の関係が保存できる

というわけで、この二つ以外の特徴を持たないので、それが弱点でもある。
この弱点をどうするか?ということを考えるべきなのだが、今のところCNNベースの特徴量でそういったことをやっている人たちはあんまりいないような気がする。いるとは思うけど…

解決することで得られる性能向上

上に書いた問題が解決すると色々な問題が解決します。正直、現在のCNNベースの画像認識はもう伸び悩みが久しいので、こちらの問題を解決することが今後のため必要になるのは間違いないと思います。
少なくとも、特徴量の改善により、無駄な学習をする必要がなくなります。ムダというのは、同じ画像を位置を変えたり回転したりして何度も学習することです。これはあまり良いことではありません。
もちろん、過去に上に上げた条件のいくつかを満たした特徴量は提案されています。でも、何故か現在かなり下火になっています。個人的にはとても残念に思っています。

ニューラルネットワークの問題点

結構深刻な問題点があります。具体的には、入力データ長が固定であるという事です。可変長のデータに対応できないということも、かなり無視できない問題です。
可変長データを扱うという意味では、時系列のデータとかはそれに近いと思います。でも、時系列用のモデルを可変長のデータ群に使いたくても、実際には時間の概念が強く入っているため使いにくいという問題があります。
もちろん、可変長ということを「0で埋める」という形で解決することとか、何だったら特徴ごとに信号を分けることで対応する(こうするとデータサイズを固定化できる)という方法もあります。何にせよ、ニューラルネットワークは決して万能な手法ではなく、それを何とかごまかして使うことで問題を回避しているという事は忘れてはいけないと思います。

問題点を解決するために

そもそも機械学習の学習は超多変数の推定問題でもあります。変数を推定するために学習データを用意していると理解しても問題はありません。
だとすると、CNNベースの特徴量計算に相当するところは形式にこだわらなくても良いという事が見えてきます。
特徴量を数式で表現したとき、現在のCNNベースの特徴量計算には、回転やら拡縮やら歪みに関連する項がありません。だから、そういう項を追加してやれば良いのです。
もちろん、簡単に追加できるわけではあるません。係数推定式を計算するためのソルバを作らないといけないし、そもそも式を作らないといけない。やらないといけないことは山ほどあります。
個人的には、この問題を解決したくてたまらないのですが、それが出来るのはまだまだ先になりそうです。

今の時点で出来ていること

実のところ、全く出来ていないわけではありません。というわけで、Windows のストアアプリとして AI Slide Show なるアプリを登録しておきました。これは、上に書いたことの一部を実現した画像検索技術をベースにしています。なので、かなり少ない画像で類似画像を引っ張ってくることが出来ます。ちょっとした宣伝ですが、興味があったら一度動かしてみて下さい。

終わりに

この手の記事は思いついたところでぼちぼち書いていきます。なにせ、まだ書きたいことは山ほどありますから。
いつ書くかはわかりませんが、興味があったら期待せずに待っていて下さい。

この記事が気に入ったらサポートをしてみませんか?