本動画はコンピュータビジョンの基礎を解説する講義である。人間の視覚システムと脳の情報処理メカニズムから着想を得たCNNの仕組みを、1950~60年代の猫を用いた実験から現代の画像認識技術まで体系的に説明している。画像がピクセル値の集合として表現され、畳み込み演算によって段階的に特徴抽出が行われる過程を数学的に解説しながら、受容野の概念やストライド、カーネル設計の重要性について実践的な演習を交えて理解を深める内容となっている。

コンピュータビジョンとは何か
それでは始めましょう。ありがとうございます。今日学ぶのは、コンピュータにどうやって「見る」能力を持たせるかということです。画像を見ることによってそれを実現しようとしています。
まず最初の質問です。この画像を見たとき、あなたは何を見ていますか?
そうですね、他には何が見えますか?
X線画像ですよね。
その通りです。2つの目が見えますね。でもこれはノートパソコンです。ここで何が起きているかというと、この画像を見たときに、実際には画像内のあらゆる識別可能な構成要素を見極めようとしているんです。ここには何らかのプロセッサがあり、2つのファンがあり、ノートパソコンに搭載されている冷却システムのようなものがあることが分かります。
あなたがやろうとしていることは、基本的に画像を小さな構成要素に分解しようとすることです。画像が実際にどのように見えるかを理解しようとしているわけです。コンピュータビジョンを見るとき、それもまったく同じことをしています。それ以外のことは何もしていません。やろうとしているのは、画像をより小さなセグメントに分解して、より良く表現できるようにする、または画像の表現を学習しようとすることです。そして、その画像が正確に何であるか、その画像にどんなオブジェクトが存在するかを識別しようとしているのです。
視覚システムの生物学的起源
では、コンピュータビジョンのインスピレーションはどこから来ているのでしょうか。すべては目と脳から始まります。私たちは目で見て、脳がこの情報を処理することを知っています。
脳処理という観点で何が起きているかというと、私たちの目には錐体細胞と桿体細胞があります。錐体細胞と桿体細胞が何か覚えている人はいますか?
そうです。桿体細胞は輝度を感知し、錐体細胞は色を感知します。私たちが持っている錐体細胞と桿体細胞の比率は1対20で、桿体細胞の数は錐体細胞の約20倍です。なぜでしょうか。それは、画像の明るさが正確にどれくらいかを識別し、異なる明るさで知覚しようとするためです。
明るい部屋を見る場合を考えてみましょう。暗い部屋にいて明るい部屋に入ると、目がその部屋に順応するのに1秒かかり、それからオブジェクトが何であるかを識別しようとします。逆に明るい部屋から暗い部屋に入る場合も同じことが起こります。目が自己調整し、2、3分後には暗い部屋にあるオブジェクトも識別できるようになります。
目で起こるこのプロセスはすべて桿体細胞によるものです。錐体細胞は、見ているものをカラフルに表現するために存在しているだけです。
これが脳でどのように起こるかというと、目は情報を脳全体に伝達します。そして脳は、私たちが見ているオブジェクトの異なる領域を見て、脳の上層で処理し、その情報が下に伝わっていきます。
これもここで起きていることと同じです。情報は脳の上層から伝わり、中心に入っていき、正確に何を見ているかを識別しようとしています。
これは脳がどのように機能するか、つまり私たちの脳のどこで光学処理の機能が起こっているかの識別が、2種類の異なる実験を通じて解明されたということです。それには猫が関わっており、当時は必要でしたが今は行われていないことが起きていました。
2匹の失われた猫の物語
彼らは何をしていたのでしょうか。これは「2匹の失われた猫の起源と物語」と呼ばれています。
まず猫1から始めましょう。研究者たちは何をしたかというと、猫の目を閉じさせ、何らかの画像を表示し、覆いを開けてしばらく猫にそれを見させました。その後、猫の目を閉じさせました。
猫の目を閉じさせるとすぐに、彼らは猫の首を切断しました。これらすべてを行う前に、猫が正確に何を見ているかをマッピングできるように、何らかの放射性血清を猫に注射しました。なぜでしょうか。目がどのように情報を知覚するかを画像化したかったからです。
先ほど議論したことに基づいて、猫の脳の中がどのように見えたか考えられますか?
そうです。でも脳の中で何が起きていたかというと、こんな感じでした。これが猫に見せた画像です。そしてこれが脳で観察された放射性物質の沈着です。
これは何を示しているでしょうか。あなたが見ているものは、実際にあなたの脳に刻印されているということです。
これが見せられたオブジェクトで、これが脳で見られたオブジェクトです。なぜでしょうか。猫には申し訳ないですが、これによって脳が画像をどのように処理するかを理解することができました。人間でも同じです。なぜ猫で行ったかというと、人間と猫の脳には何らかの類似性があるからです。
その背後にある生物学はすべて知りませんが、それが彼らが行った実験でした。そしてこれが彼らが観察したことです。
これは魅力的ではないでしょうか。見ているものは何らかの情報が後ろに行くだけだと思うかもしれませんが、技術的には、あなたが見ている実際の画像が刻印されているのです。私はあなたたち全員を見ていて、あなたたちは私を見ている。その画像が文字通り私たちの脳に印刷されているのです。
脳の異なる領域による情報処理
では、猫が異なる領域を見ているとどうやって分かったのでしょうか。これは彼らが行った実験の1つで、脳の最初の層が画像をそのまま見ていることが分かりました。
しかし、彼らが行った別の実験があります。それが物語その2です。彼らは猫を手術し、生きたままにして、脳に2つの電極を注入しました。これらの実験はすべて1950年代と60年代に行われました。
今日私たちが持っている技術は持っていませんでした。この実験を見て、彼らが正確に何をしようとしていたか教えてもらえますか?
そうです、それが電極がある理由です。でもなぜそれをしていたのでしょうか。
形状の向きに基づいて猫の反応を決定する。
そうです。彼らがやっていたことは、猫の目の前に何らかの形状を見せて、特定の形状が現れるたびに脳の電気信号が増加しました。しかし、直線に似た形状を見せたときは、刺激ほど大きくはありませんでしたが、刺激はありました。しかし、これとはまったく異なる形状を見せた場合、刺激はまったくありませんでした。
これは何を示しているでしょうか。脳の異なる部分が、情報の異なるタイプの表現を見ているということです。
電極が注入された場所では、その領域は直線を見ることができましたが、脳の他の部分が水平線や他の線を処理していました。彼らが見せていた約8種類の異なる形状すべてに、それらが処理されている異なる場所がありました。
これは何を示しているでしょうか。私たちの脳も画像の異なる部分を異なる領域で見ていて、正確に何が目の前に示されているかを識別しようとしているということです。そして脳の各部分が異なる情報を見ているのです。
これはどのように起きているのでしょうか。特定の情報部分を捕捉しているニューロンがあります。私たちの脳はニューロンで構成されており、一部のニューロンの束がここで特定の形状を見ていて、特定の形状を見るたびに発火します。電気信号が発生するのです。これは脳内で瞬時に起きています。
カメラの仕組みと画像のデジタル表現
人間の脳や猫の脳がどのように機能するかというこの情報を使って、彼らはカメラの開発方法の原理を考案しました。異なる歴史もありますが、カメラを見ると、カメラでは何が起こるでしょうか。画像を見る特定のレンズがあり、レンズの束があります。これらのレンズを調整すると、画像を明瞭に見ることができるようになります。そして、この画像を何らかのデジタル形式、または以前の時代ではフィルムに刻印します。
デジタル画像という観点では、どのように見えるでしょうか。カメラに存在するセンサーはこのように見えます。各センサーは何でしょうか。これらのそれぞれがピクセル情報を表しています。
よく見ると、2×2の形式で4つの異なる色、または3つの異なる色があります。青、赤、そして2つの緑があります。なぜ2つの緑があるかは聞かないでください。そのように設計されたからです。しかし理由はあります。2つの緑がある理由は、自然には赤や青よりもはるかに多くの緑があるからです。
これらのセンサーを使って、情報を捕捉することができました。この情報は画像として表現され、ここに存在するすべての情報、すべてのピクセル、すべてのセンサーがその情報を捕捉し、画像として出力します。
これが画像捕捉の仕方です。画像が捕捉されるさまざまなモダリティとは何でしょうか。RGB、CMY、CMYK、YIQ、HSV、HLSなどがあります。これは何を表しているでしょうか。
異なる色空間です。
そうです。画像は光の異なる波長ではありません。例えば赤外線などです。
ここには赤外線はありません。赤外線は画像を捕捉する1つの方法ではありますが、それらは異なるタイプの画像です。しかし、この上部の画像を見ると、すべて同じ画像そのものを表しています。
いいえ、ここには赤外線はありません。これらすべては何を表しているでしょうか。この画像は、同じタイプの画像に対して異なる表現方法があることを示しています。この画像を取って、R、G、Bの要素として表現することもできますし、C、M、Yの要素として表現することもできます。CMYKもあります。YIQもあり、HSV、HLSもあります。
1つの画像を複数の形式で表現する能力があるということです。ここで何を意味しているでしょうか。これは何を示しているでしょうか。
異なる形式で情報を抽出できるということです。MacBookのX線画像の最初の画像を見たとき、何をしようとしていましたか。画像の異なる特徴を抽出しようとしていました。同様に、どの部分があるかを見ていました。しかし別の方法もあります。プラスチック素材はどれか、金属部品はどれか、スポンジやこのような部品はどれか。
これらすべては、画像に対して異なるタイプの情報表現を抽出できる方法です。ここでは色を見ていますが、形状も見ることができます。どんな線があるでしょうか。どんな種類の線が存在しているでしょうか。その家を見ると、直線、水平線、対角線が見えるかもしれません。
結局、画像を見るとき、カメラやこれらすべてのモダリティなど、複数のモダリティを使用して捕捉されたこれらの形式で画像から始めます。この画像を表現するさらに多くの方法があります。それがこれが示そうとしていることです。
画像処理の段階的アプローチ
これらすべての異なる構成要素をどのように見ることができるでしょうか。例を見てみましょう。これが何を意味するか考えてみます。
ビリヤニやプラオを作りたいと想像してください。これを作るには何が必要でしょうか。米、野菜、スパイスが必要です。そして一度に1つずつ混ぜます。すべてを一緒に入れてもビリヤニにはなりません。特定の方法で作る必要があります。まずスパイスを炒め、次に野菜を加え、一定時間調理してから浸した米を加え、蒸してビリヤニになります。
ここで何をしているでしょうか。段階的にビリヤニを調理しているのです。画像でも同じように画像を形成することができます。家を描く場合、何から始めますか。線を描くことから始めます。まず長方形を描き、その長方形が壁を表します。そして複数のそのような長方形を描き、それが家になります。
ここで画像をどのように構築しているかが分かります。エッジである何らかの線から始め、それを家のオブジェクトの一部、またはこの場合ビリヤニにします。そしてそれをオブジェクトにし、次にシーンにして、絵画や捕捉している画像になります。
これが描き方です。脳という観点でこれはどのように見えるでしょうか。脳に戻ると、脳という観点でもこの情報捕捉はどのように起こるでしょうか。
ここでもかなり似たようなことをしようとしています。脳の外層がこれらすべての異なるエッジと色の変化(勾配と呼ばれます)を見ていて、脳には4つの異なるタイプの特定の領域があり、この情報の処理を見ています。
脳でも画像処理全体が一度に起こるわけではありません。画像を処理するのに複数のステップが必要で、外層から始まりV3A、V3、V_sub_2、V_sub_1に行き、何らかの出力を与えます。脳がそれほど複雑な計算システムであっても、4つの層が必要なのです。
これが脳が画像を機能させる方法です。コンピュータの場合はどうなるでしょうか。同様のことをするか、科学者たちは勾配を捕捉する方法、何らかのオブジェクトの部分、そしてオブジェクトを表現し、シーン全体を表現しようとする方法を見つけました。そして、コンピュータでもこれを行う方法を見つけました。
畳み込みニューラルネットワーク(CNN)の原理
どのように機能するのでしょうか。何らかのエッジを見ていることは分かっています。デジタル形式の画像を取ります。RGB画像を取りましょう。このように表現できます。R、G、B。それを取り、何らかの処理メカニズムを通じてその情報を処理し、存在するすべてのエッジが何であるかを見つけます。そして再び画像に何らかの処理を行い、画像に存在するすべての輪郭、勾配、その他すべての表現が何であるかを見つけます。
もう1ステップ進んで処理を続けると、オブジェクトの異なる部分が何であるかを見つけ、最終的には画像に猫、犬、何らかの動物がいるのか、人なのか、何らかの乗り物なのかを言うことができます。
同じプロセスがコンピュータビジョンアルゴリズムの開発にインスピレーションを与えました。これはかなり複雑なプロセスです。線形回帰を見たときのことを思い出すと、y = mx + bという関数だけを見ていました。あるいはロジスティック回帰では、このy = mx + bのシグモイド関数を見ていました。それだけでそのような複雑な情報を表現する能力があると思いますか。
それ自体ではありませんが、これらの処理要素の束が一緒になれば、この情報を表現できるかもしれません。そこでニューラルネットワークが登場します。
ニューラルネットワークの数学的基礎
ニューラルネットワークとは何でしょうか。ニューラルネットワークは、そのような小さな構成要素を組み合わせ、それらがどのように一緒に機能するかを理解し、数学的定式化としてそれらを表現し、ニューラルネットワークの観点で表現する方法です。
ニューラルネットワークがすることは、各ニューロンがそれ自体でロジスティック回帰であるということだけです。それはy = mx + bという線形実装に続く非線形活性化が続くシグモイド関数です。
これはどのように見えるでしょうか。少し数学に入ってみましょう。ここで高速フーリエ変換を知っている人はどれくらいいますか。
そうです。これが高速フーリエ変換のようなものです。ここで何が起きているでしょうか。この表現を見ると、複数の線の組み合わせです。それらが連動して動いています。そしてこれがこのような表現につながっています。
もっと複雑にしたい場合、このようにすることができます。これらすべてはどのように起きているでしょうか。いいえ、直線です。でも何をマッピングしているのでしょうか。
止められるか分かりませんが、これらのそれぞれを見ると、直線がある方向を横断しているからです。それだけです。
ある方向に回転していて、それがこの図形につながっています。それは、円になる非線形のその直線の関数であり、それが形状につながります。それがニューラルネットワークも捕捉しようとしている情報の種類です。
ニューラルネットワークは何をしようとしているのでしょうか。このような直線を見ようとしています。これらの直線を得る最良の方法は何か、そしてその上に適用できる非線形関数は何かを見て、そのような情報を一緒に表現できるようにしています。
しかし、これらすべてについては、前回のニューラルネットワークや深層学習入門の講義で線形層があることを聞いたかもしれません。線形層とは何でしょうか。一緒に接続されたこれらのロジスティック関数の束が一緒につながり、何らかの出力を与えようとしているものです。
これがコンピュータビジョンの設定で機能すると思いますか。基本的にこれをしています。正方形の情報があるとしましょう。やっていることは、それを平坦化して、これらが重み行列であると言い、そこに存在していたすべての値と組み合わせています。
これが複雑な画像で機能すると思いますか。なぜ機能しないのでしょうか。層を追加しても機能すると思いますか。小さな画像では機能しますが、非常に複雑な画像に行くとしましょう。機能する理由は、機能しないと言っているわけではありませんが、オブジェクトが何であるかを非常に高い信頼度で正確に識別できると思いますか。この立方体は直線を表しているのでしょうか。
広げたとき、ここで何が起きているか分かりますか。直線なのか、水平線なのか、対角線なのか。そこで何が起きているかというと、画像の空間情報を失っています。
機能はしますが、私たちが望む最良の答えを出さないかもしれません。だからこそ、研究者たちは畳み込みニューラルネットワークと呼ばれる技術を考案しました。
畳み込み演算の仕組み
CNNとは何でしょうか。基本的に、これらのピクセルをすべて線形表現に分離してこれらの情報を捕捉する代わりに、彼らがしたことは、これらの値を何らかの畳み込みアプローチで掛け合わせることを見ていました。
ここでの畳み込みとは何でしょうか。この画像で何が起きているか教えてもらえますか。
いいえ、それよりもさらにシンプルです。
それをしています。どのようにそれをしているのでしょうか。次元を減らすと言っていますが、確かに。でもそれは何かをしているからです。だから画像が4×4から2×2になっているのです。非常にシンプルです。
ここに暗いパッチが画像を横切って移動しているのが見えます。この暗いパッチのそれぞれは値で表されています。そして何が起きているかというと、掛け算をしているのです。この正方形がここに来るとしましょう。そこで何が起きているかというと、それらの2つの値を一緒に掛けています。そしてすべての9ピクセルに対して同じことをして、一緒に足します。それだけです。
さらに多くの情報がありますが、この情報すべてを参考程度に受け取ってください。コンピュータビジョンがどのように機能するかを理解し始めたところです。セッションを進めるにつれてより複雑になります。しかし技術的には、それがしていることです。この情報を取って掛け合わせ、すべての9つの値を掛け合わせたものを取得し、それを足し合わせ、その情報が1つの緑のピクセルとして表されます。
このプロセスはコンピュータビジョンで畳み込みと呼ばれます。そんなにシンプルです。
これが実際にどのように機能するか例を見てみましょう。この5×5画像を取ります。このような値のカーネルがあります。0、1、2、2、2、2、0、0、1、2です。ここで何が起きているかというと、ゼロがこれと掛け合わされます。
1分取って、このカーネルでこの画像に畳み込みを行うことで、この値が得られるかどうか試してみてください。畳み込みがどのように正確に機能するかはすべて理解しましたね。
やっていることは、0を3で、1を3で、2を2で掛け合わせ、次に2を0で、2を0で、0を1で掛け合わせます。同じように、3×3の正方形でこれらの3つの値、この3行に対して繰り返し、一緒に足します。
それで進めていきます。いいえ、大丈夫です。1つか2つ試してみてください。すべて試す必要はありません。
足し合わさりますね。それが畳み込みがしていることのすべてです。
ここで4×4画像を見ました。それで始めて、5×5では何が起こるでしょうか。情報を失っているわけではありません。何らかのカーネル関数を使って情報集約をしています。
画像上を移動しているこの濃い紫のパッチはカーネルと呼ばれ、このカーネルがしていることは、薄い紫の画像から関連情報を抽出しようとして、何らかの計算を行い、緑の出力として表現しています。
ここでは情報を失っているわけではなく、必要な情報が何であれ抽出しています。情報を失うということは、この掛け算が起こらない場合、そのピクセル値が完全に無視される場合です。それが情報を失うことを表します。しかしここでは、その5×5の正方形にある25個の値である存在するすべての情報を使って何らかの計算を行い、3×3カーネルと掛け合わせて、3×3の出力になります。
ここで何かパターンが見えますか。5×5で畳み込みが起こっているこのスライドと、4×4で畳み込みが起こっているこのスライドを比較してください。ここで何が起きているかについて何か類似性が見えますか。
確かに。
それが畳み込みの仕組みです。でももっと何か見えますか。
そうです。もっと何かが起きています。これを見て、これを見てください。2つの間で似たようなことが起きています。ピクセルの削減がどれくらい起きているか、または情報がどんな比率で集約されているか。
そうです。これを何らかの数式形式で表現できますか。シンプルな線形の、算術を見ているだけです。何らかの線形代数などについて複雑に考える必要はありません。
ここで何が起きているかというと、4×4画像から始めます。3×3で畳み込みを行うと、2×2になります。5×5画像に3×3カーネルで畳み込みを行うと、何になりますか。3×3画像になります。
画像サイズに関係なく、3×3カーネルで畳み込みを行うと、何が起こりますか。n – 2です。
それが起きていることです。それが情報が集約されている仕方です。ここで何が起きているのでしょうか。見ている緑の出力の各ピクセルは、ここからどれだけの情報を表しているでしょうか。ここの各ピクセルは、この3×3領域からの情報を表しています。同様に、次のものは次の3×3を表しています。同様に、その次のものは次の3×3を表しています。
そこの1つのピクセル出力を見ると、入力データからどれだけの情報を表しているでしょうか。9ピクセル、つまり3×3です。畳み込みを通じて捕捉されるこの情報表現は受容野と呼ばれます。受容野についてはより詳しく見ていきます。
受容野の概念
では、ここで何をしているのでしょうか。いくつのカーネルを使ってこの画像に1回畳み込みをしているでしょうか。1つのカーネルです。これを2回行うとどうなるでしょうか。
そうです。でもなぜ小さいのでしょうか。
そうです。でもこの1つのピクセルは何を表しているでしょうか。どれだけの情報を表しているでしょうか。
なぜ25ピクセルだと思いますか。
その通りです。これが畳み込みニューラルネットワークにおける畳み込みのようなものです。これが起きていることです。カーネルがこの5×5画像に何らかの畳み込みを行っています。3×3の出力が得られます。再び別の3×3カーネルを取り、3×3出力に掛け合わせると、1×1画像になります。
画像に2回畳み込みのプロセスを行うと、画像サイズが5×5でカーネルサイズが3×3のときに画像全体を捕捉することになります。
これを1ステップで行うことができますか。
そうです。出力には何らかの変化がありますが、5×5画像を5×5カーネルで畳み込むことはできます。しかし画像が3×3を示しているのはなぜでしょうか。それはNVIDIAが3×3カーネルの計算を非常に安価にしたからです。だから3×3に固執しているのです。
そうです。そこから始まりました。また、起きている演算の数を見ると、3×3を2回行うと、5×5畳み込みを行うよりも演算数が少なくなります。そしてその情報に基づいて、NVIDIAはその上で最適化しました。だから3×3はすでに速いのに、彼らはそれをさらに速くしたのです。
カーネルと特徴抽出
では何を見ているのでしょうか。5×5の画像を見ています。しかし実際の画像サイズは1024×1024などの巨大な画像です。そのような画像を見ると、このカーネル抽出をステップバイステップで見ることになります。エッジから始めて、オブジェクトの部分に行き、次にオブジェクトの識別を見ます。
これを見て、これがどのように正確に起こるか、そしてこれらの特徴をどのように抽出するかを見ます。しかしモデルがトレーニングされると、3×3カーネルはどのように見えるでしょうか。このように見えます。
3×3カーネルをトレーニングしたとしましょう。トレーニングされると、これらが抽出しているすべての特徴です。これは何かを表しているでしょうか。物理的に、または見ることによって、それが正確に何を抽出しているか理解できますか。
いいえ。
5×5に増やしましょう。このように見えます。この画像から何かを理解できますか。
いいえ。
7×7ではどうでしょうか。何かが見えますが、まだあまり明確ではありません。ここに勾配の何らかの違いが見えます。ここで暗い勾配を識別しようとしていて、ここでは明るいですが、まだあまり明確ではありません。
しかし11×11ではどうでしょうか。
11×11では、捕捉しているカーネル情報の組み合わせが、このようなエッジを見つける能力を持っています。見ているのは、この画像をズームインすると、またはよく見ると、ここに11ピクセルがあります。数えると、これは良い画像だと思います。1、2、3、4、5、6、7、8、9、10、11。そうです。
11×11カーネルサイズでは、始めたい本当に良い特徴や低レベルの特徴を得ることができます。
これが抽出が起こる原理です。3×3から始めて、画像に1回畳み込みを行い、その出力を得ます。その上にもう1つ3×3を行うと、5×5の出力が得られます。基本的に5×5画像表現です。再び行うと7×7が得られます。再び行うと9×9が得られます。
再び行うと11×11が得られます。11×7の出力または11×7の特徴抽出を得るために、画像に何回畳み込みを行いましたか。5回です。
これをもっと長い期間行うと、特徴はどのように見えるでしょうか。4つの異なる段階で特徴抽出を理解できることは分かっています。
隣接する勾配、そして何らかのオブジェクトの部分、そしてオブジェクトです。これらすべてをこの表現で見ることができます。畳み込みまたは畳み込みニューラルネットワークがどのように機能するかというと、これを最初に抽出することから始め、その情報がテクスチャやパターンを捕捉しているそのような表現に組み合わされて取得されます。そして畳み込みを続けて、オブジェクトの部分を見て、最終的にここでオブジェクトを見ています。
この画像を見てください。何を抽出していたか推測できますか。
建物を抽出しています。でもこれは、これは、どう見えますか。
犬ですか。
そうです。だからこれは確かに犬です。
でもあれは犬ではありません。どこから来ているかは理解していますが、技術的には何らかの建物構造を見ています。
そうです、それが抽出しているものです。ピサの斜塔を抽出しています。この画像を見て、これは何だと推測できますか。
脚、ズボンです。
手、基本的に人間の体の異なる部分です。これはどうでしょうか。
これはどうでしょうか。これが何を見ているか神のみぞ知るで、自然から出てきます。
このように低レベルの特徴、つまりエッジや勾配を見ているものからどのように進歩するかが分かります。色の勾配があるから勾配です。ここで何らかのパターンやテクスチャとパターンを識別することに移行し、次にオブジェクトの部分を見て、抽出できるオブジェクトがあります。
これらすべてを何がしているのでしょうか。ただの3×3カーネルです。そしてこれを行うためにそれらの束があります。
RGBチャンネルでの畳み込み
畳み込みがどのように起こるかのこの理解で、実際に畳み込みがどのように起こるかを見てみましょう。
画像にはRGBチャンネルがあることは分かっています。畳み込みはどのように起こるでしょうか。このように見えます。1分取って、このビジュアルを見て、ここで何が起きているかを考えてください。
繰り返し続けます。1分取って考えてから、議論しましょう。
これを止められたらいいのですが。見てみます。あ、すみません。
これを見て、ここで何が起きているか考えられますか。
スライディングフィルタです。
確かに。でも出力を見ると、4つの出力を得ていました。なぜ4つの出力を得ているのでしょうか。
これも提示して、見ることができるようにしましょう。
これについて考えると、ここで何が起きているかというと、画像には何があるでしょうか。画像にはRGBチャンネルがあります。畳み込みは何を与えるでしょうか。1つの正確な出力を与えるはずです。
だから私たちのカーネルは3×3だけではなく、3×3×3です。何が起きているかというと、RGBチャンネルのそれぞれがカーネルに対応するものを持っています。だから各カーネルは、Rチャンネル用のカーネル、Bチャンネル用、Gチャンネル用を持っています。やっていることは、これをここに取っています。
この画像をよく見ると、カーネルにもR、G、Bがあります。赤の値は画像からの赤の値と掛け合わされ、青は青と、緑は緑と掛け合わされ、これらすべての値を足し合わせて、この最終的な3×3の1チャンネル出力を得ています。
これは画像の何らかの抽象化です。畳み込みが起こると、技術的には画像が正確に何を表しているか、または出力が何を表しているかは分かりません。何らかの特徴抽出された出力です。
これが畳み込みの仕組みです。32×32×3の画像がある場合、3×3×3のカーネルから始めて、この畳み込みの出力は何になるでしょうか。
画像32×32×3があります。カーネルは3×3×3です。出力は何でしょうか。
そうです。32。
そうです。30×30×1です。どのように起きているかみんな明確ですか。
他のことは無視してください。これは1つのカーネルです。ここで見ているものです。何が起きているかというと、各チャンネルごとに取っています。赤チャンネル、緑チャンネル、青チャンネルがあります。同様に、カーネルにも赤チャンネル、緑チャンネル、青チャンネルがあります。これらすべての値が掛け合わされて足され、3×3×1の出力になっています。
入力画像サイズは何でしょうか。5×5×3です。カーネルサイズは何でしょうか。カーネルは3×3×です。
出力は何でしょうか。3×3×1です。
これを取ってください。計算がどのように理解できていますか。
そうです。なぜでしょうか。
なぜなら、1つのチャンネルだけがある2次元での掛け算を見たからです。紫のチャンネルだけがあり、カーネルも紫のチャンネルです。ここでのチャンネル次元は何でしょうか。チャンネルに深さを追加すると、1です。ここでの画像は5×5×1で、カーネルは3×3×1です。
それは3×3×1になります。深さ方向にこれを拡張すると、何が正確に起きているかを視覚的に考えるのが難しいかもしれません。しかし起きていることは基本的にこれです。
これは閉じます。もう重要ではないので。赤に関連付けられている入力チャンネルがあります。赤に関連付けられているカーネルチャンネルもあります。緑チャンネルと緑チャンネル用のカーネルもあります。同様に青チャンネル用も。
何が起きているかというと、これを取ってすべての値と掛け合わせます。同様に緑チャンネルを取ってすべての値と掛け合わせます。青カーネルと入力青チャンネルを掛け合わせます。
これが何になるかというと、個々の畳み込み演算の出力です。それらすべてを一緒に足すと、この出力になります。
1つと
いいえ、4つは違います。ここで見ているのは、1つのカーネルだけでの画像上の演算です。4つのカーネルで行うとどうなるでしょうか。4つのそのような出力が得られます。それがここで表されていたものです。
ここで何が起きているか考えてみてください。4つから始めます。画像は同じですが、4つの異なるカーネルがあります。2番目のカーネル、3番目のカーネル、そして4番目のカーネルです。
畳み込みに関してここで起きている数学をどう考えられるか、誰か行列表現の観点で説明してもらえますか。
そうです。
そうです。そうです。そうです。そうです。
これが起きているテンソル演算です。これを数学的にどう表現できるでしょうか。1つの画像に対してだけの場合、5×5×3があり、これが画像です。チャンネルは3×3×3で、3×3×1の出力が得られることは分かっています。この数字でみんな大丈夫ですか。
4つのカーネルがあるとしましょう。これをどう表現できるでしょうか。ボードがあれば書き留めたのですが。
いいえ。1つのチャンネルまたは1つのカーネルでの初期演算でやっているものです。4つのカーネルでやりたい場合、何が起こるでしょうか。
そうです、正しい方向にいます。9対1があります。
いいえ、ほぼ近いです。ほぼそこです。
そうです。いいえ。入力は同じままです。入力をまったく変更していません。やっているのはカーネルの数を変更することです。カーネルサイズは何でしょうか。3×3×3です。いくつ欲しいですか。4つです。だから4つそのようなものがあります。どう表現できるでしょうか。
×4です。だから3×3×3×4になります。出力は何でしょうか。
出力は3×3×1×4になります。1分どうぞ。
これは良いです。5×5×3の画像があり、3×3×3のカーネルがあります。これは何になるでしょうか。3×3×1です。
4チャンネルでやりたい場合、何が起こるでしょうか。やらなければならないのは、これ×4だけで、結果は×4になるでしょうか。
それだけです。これが畳み込み演算です。
さて、考えて答えを教えてほしい問題を出します。画像。
そうです。何ですか。いいえ、3×3です。n – 2です。n – 3ではありません。5 – 2は3です。
32×32×3のサイズの画像を取ります。32チャンネルまたは32カーネルで畳み込みをします。32×32×3が入力サイズで、カーネルがどうであれ32個あります。出力は何でしょうか。
カーネルはまだ3×3×3です。
なぜ29だと思ったのですか。そうですね、いいえ。
出力は何になるでしょうか。
×32です。これが1回の演算です。n – 2です。入力サイズはnです。これはn – 2です。そしてこれが1つの演算層です。
しかし理解できる特徴抽出器に到達するために3×3畳み込みを何回行わなければならなかったか覚えていますか。11×11です。
畳み込みを5回行って、理解できる何らかの特徴を得る必要があったからです。この演算を5回行いたい場合、これをどう表現できるでしょうか。
ここで追加の次元をここに追加しましたね。最初は3次元の値から始めて、まだ3次元の値で計算しましたが、ここで何を得ているでしょうか。4次元の出力です。
これを3次元の値にできますか。同じ演算を続行できるように。この1つを取り除くだけです。
なぜそうしたか明確ですか。
そうです。基本的にその次元を減らして、1つを32回積み重ねる代わりに、32回積み重ねるだけです。数学的には違いはありませんね。
はい、違います。そこで次元を減らしており、それが必要な計算の複雑さを減らすからです。だからこれが意味を成すのです。
しかし値という観点では、多くの変化はありません。表現しているものは変わりませんが、これで行く場合に行わなければならない計算の数は少なくなります。
では、これを取って、64カーネルで畳み込みを行うと想像してください。出力は何でしょうか。
そうです。これの上で、最初にカーネルサイズは何でしょうか。出力次元を簡略化しました。
今は30×30×32です。同じ演算を64カーネルで行いたいとします。ここで何が起きているかというと、これから個々のピクセルを取って掛け合わせ、足して、掛け合わせて、足して1つの値を得ます。そのようにです。
同じことがここで起こる必要があります。そのためにカーネルサイズは変わりません。3×3であるべきです。
画像からRGBチャンネルがあり、カーネルにもRGBチャンネルがあって、同じように掛け合わせることができたことを覚えていれば。ここで何が起こるべきでしょうか。
32です。なぜ32でしょうか。
その通りです。最初の畳み込みからの出力に32チャンネルが存在しているからです。掛け算はピクセルごとに起きているので、カーネルに32個必要なのです。
出力は何でしょうか。簡略化して28×28×64になります。
この画像をもう一度見てみましょう。そうすればもっと意味が分かると思います。引っ張ってみます。
みんな大丈夫ですか、それとも画面を下げましょうか。
ここで掛け算を見ています。赤チャンネルで1がそのゼロと掛け合わされています。各値が掛け合わされて、その148の値を得ています。または何でもそれは変化しています。しかし同様に緑チャンネルに対してもやっています。同様に青チャンネルに対してもやっています。
チャンネルの数が増えると、同様にカーネルの数との掛け算も増えるべきではないでしょうか。だから同様の演算を行い、すべてを一緒に足すことができるように、3×3×32カーネルを持つ必要があるのです。
ストライドとその影響
これは面白くないですか。ここで何を見ているでしょうか。カーネルは画像上でどのように移動しているでしょうか。何ピクセル移動しているでしょうか。
これはストライド1での畳み込みと呼ばれます。ストライドはどれだけのシフトが起きているかを表します。ストライド2だったらどうなるでしょうか。その場合の出力は何だと思いますか。ペンと紙を持っていますか。ペンと紙があれば取り出して、試してみてください。なければ考えてみてください。
ストライド=1が何を意味するか理解しましたね。
そうです。
ここでカーネルは画像上でどのように移動しているでしょうか。一度に1ピクセルずつ移動しています。同様に、ピクセルを2回移動させる場合、出力は何でしょうか。5×5の画像を取って試してみてください。
これは5×5です。これを取って、ストライド2のストライド畳み込みがどのように見えるか考えてください。
3×3カーネルで。
そうです。明確ですか。実際にどう見えるか見てみましょう。
このように見えます。画面を下げます。ここで何が起きているかというと、7×7画像があり、ストライド2の3×3カーネルで畳み込みをして、3×3の特徴マップを得ています。
深さは考慮していません。深さがどのように機能するかは理解しているからです。それともこれで深さの例もやりたいですか。
7×7×3または7×7×32を取り、64チャンネルまたは64カーネルで畳み込みをします。出力は何でしょうか。
ストライド2で。すみません、問題を繰り返します。7×7×32が入力データです。64カーネルを使う必要があります。ストライド2での出力は何でしょうか。
ストライド1の解決策は既にあります。ストライド2の解決策も既にここにあります。簡単に答えを出せるはずです。
そうです。
これがどのように正確に機能しているかみんな明確ですか。
数学に変換しようとしないでください。数式化しようとすると、それを表現したり計算したりするのが非常に難しくなります。非常に直感的です。数式化しようとすると、何が起きているかを理解するのが非常に難しくなります。
掛け合わせるために入力チャンネルの数と同じ数のカーネルのチャンネルが何個必要ですか。抽出したい特徴の数はいくつですか。それがカーネルの数です。各カーネルは1種類の表現を抽出しています。水平エッジ、垂直エッジ、対角エッジ、または何らかの異なるタイプのエッジを見ています。
それが3×3がしていることです。この特徴抽出器がある場合、そのような64個の特徴抽出を取得したいとします。何をしますか。3×3×32のカーネルを64回掛け合わせます。それは何になるでしょうか。3×3×64の出力になります。
出力は3×3×1で、そのような64個の出力を得ます。しかし、将来の畳み込みのために簡略化するために、1次元を削除します。
ストライド付きの1つは。
ストライドとは何でしょうか。ストライドは2ピクセルをスキップしています。ストライド=1は1ピクセルをスキップする、またはピクセルごとに移動しています。しかしストライド=2は1ピクセルをスキップしています。
それはn – 4です。
ストライドを使用する複数の理由があり、ストライドを使用しない複数の場所があります。これはスライドデッキの一部ではありませんが、考えられるようにこの直感を与えたいだけです。
ストライドが何をしているかというと、何らかの情報表現を失っています。
その画像があるか見てみます。見つけました。ストライド1の3×3がどのように移動するか分かっています。これを見るのに本当に良い画像だと思います。
ここで何が起きているかというと、この円錐がカーネルサイズを表しています。ストライド1で移動している場合、この位置からこの位置に移動し、そして続きます。どのように見えるかというと、各ピクセルで表される情報の数が重なり、連続的です。それを計算する方法がありますが、それに入るともっと複雑になるので入りません。
しかしストライド[数値]の場合、欠けているのは何らかの情報捕捉が失われることです。これが大丈夫な点もありますが、大丈夫でない点もあるかもしれません。そこで置いておきます。それに深く入ると、もっと複雑になるので、もっと深く入りたくありません。しかしそれは、ストライドを増やすことによって失っても大丈夫な情報量についてです。
情報表現を失います。必要な情報をすべて捕捉しないかもしれません。
ここで何が起きているでしょうか。このピクセルが何回捕捉されているかを見ています。このピクセルが何回捕捉されていますか。2回です。何を見ていますか。
ストライドが多い場合、段階的な損失のようなものを見ています。これがストライド畳み込みを行うときに起こることです。
続きの値で畳み込みを行うと、明確なエッジ分離が見えます。しかしストライドを増やすとすぐに、このようになります。詳細を失っています。なぜなら、このピクセルを見ると、最初のものは1回捕捉され、次も再び1回、その後2回です。技術的に2回だったものは次に増えると予想しますが、捕捉される回数が1に下がります。だから段階的に増え、次に見られる回数がまた下がります。
これのために何が起こるかというと、特定の中心レベルの特徴に対して表現される情報、画像のコーナーの特徴はそれほど重要ではないかもしれませんが、中心にあるものが最も重要な情報かもしれません。だからその情報を複数回見たいのです。しかしストライドを増やすと、それは起こりません。ストライド=1と比較して、それを見る回数が少なくなります。
これが大丈夫なシナリオもあれば、大丈夫でないシナリオもあります。だから再び、それを使えるか使えないかを見る開発者次第の決定です。
計算コストはそうですが、再びこれらは考慮しなければならないシナリオです。
スライドに戻ります。これを閉じます。
なぜ畳み込みが必要なのか
なぜ畳み込みなのでしょうか。畳み込みを行っていることなどは見てきました。これらのカーネルが正確に何を抽出しているかは分かっています。これらのカーネルは、水平エッジ、垂直エッジ、対角エッジなどの何らかの特徴を抽出しています。
しかしなぜCNNなのでしょうか。
すみません。
それは線形層です。このようなカーネルを自分で設計できます。ここで何が起きているかというと、家の画像があり、水平カーネルを通すと、このようなエッジが得られるかもしれません。垂直があり、それを通すと、垂直だけが得られます。そして対角線が得られ、変化する対角線が得られます。
あなた次第です。無限ですか。
3×3を取っても、ここに4を持つことも、10を持つこともできます。だからいくつの数を考えられるか、そのたくさんのカーネルを設計できます。
そうです。それを置く良い方法だと思います。何個の可能な3×3行列を持つことができるでしょうか。
現実的にいくつ設計できるでしょうか。これらはすべて手作りのカーネルです。画像に存在する正確なオブジェクトを検出するために、これらの種類のカーネルを使用または設計したい場合、いくつのカーネルを設計することを見なければならないと思いますか。これらすべてが手作りされているからです。
どう分かりますか360だと。
なぜ4でしょうか。私がこれをします。それはどうでしょうか。
その通りです。だからCNNが必要なのです。彼はたった4つの異なる表現を見ているだけだと言っています。
いいえいいえいいえ。彼はたった4つのカーネルだと言っています。
それなら2.3.235もできると言いました。
多くのことをするように設計できます。どうやって。
それが以前のコンピュータビジョンエンジニアがやっていたことです。しかしすべての新しい問題に対してどこまでそれを続けることができるでしょうか。今日画像上で犬を検出したいとしましょう。犬を検出するために必要なすべてのカーネルを設計します。そして明日猫を検出したいとします。
犬を検出するために設計した同じカーネルを使って犬を検出できると思いますか。犬用。
そうですか。
そうですか。
質問として正しい質問ではないと思います。コンピュータ言語で犬とは何かを定義するには多くのことが必要です。
そうです。いいえ。
だから角度、輪郭、線について考えるだけでなく、それらをどう使用するかの手順を定義しない限り、何が手がかりであるかさえ分かりません。
そうです。だからそれになり、またこれらの画像を異なる明るさ設定で見ると、同じ画像に対して、1つの画像があって、これらのピクセルの明るさをいくつかの値で変更すると、機能しません。手作りしたカーネルが機能しません。
そうです、また設計し直さなければなりません。はい。カーネル設計に関わる非常に多くの可変要素があるので、だからCNNが非常に人気になったのです。
1ピクセルを作成する、1ピクセルを修正すると、カーネル抽出が失敗します。
だからCNNが非常に人気になったところです。CNNは何をするのでしょうか。これらのカーネルの束を一緒に見ています。そしてこれらすべてのカーネルが表している情報を組み合わせて、私たちに提示しようとしています。
私たちが見たこの特徴マップを見ると、11×11特徴マップでした。これらの特徴マップに少し戻りましょう。
これはRCNNが抽出する3×3特徴マップです。このようなものを思いつくことができたと思いますか。
同様に、5×5を見てみましょう。このようなものを思いつくことができたと思いますか。
0から255までの範囲の値があります。5×5にはいくつの値があるでしょうか。25個の値です。
それは255の25乗の可能な組み合わせで、5×5だけでこのカーネルを設計できます。
CNNは何をするのでしょうか。バックプロパゲーションの原理を理解しており、フォワードプロパゲーションがどのように機能するかを理解しているので、これらのカーネルのいくつかのランダムな値から始めて、これらのカーネルが捕捉できる何らかの一般化があることを確認できます。
再びCNNで何が起こるかというと、例えば約10,000個のカーネルがあるとしましょう。その値はまだ少ないです。そこで何が起きているかというと、約100から200個のカーネルが何らかの特徴を見ていて、別の100から200個が別の種類の特徴を見ています。すべてのカーネルがすべての特徴に対して発火するわけではありません。特定のカーネルが特定の特徴に対して発火します。それが異なるオブジェクトが何であるかを私たちに与えてくれます。
そして、11×11の特徴マップを抽出するだけで5回変換しているので、これを100回、200回やることを想像してみてください。異なるレベルの特徴抽出を見ています。この量の特徴抽出で、これらすべてのカーネルが特定のタイプの特徴を識別するようにトレーニングされます。だからCNNはある程度まで機能するのです。常に注意点がありますが。
受容野の詳細
CNNがどのように正確に機能するか、畳み込みがどのように起こるかを理解しました。受容野が正確に何であるかを振り返りましょう。
受容野とは、各ピクセルが隣接する近隣から見ている情報量です。それが局所受容野と呼ばれます。この画像からこのピクセルの受容野は何でしょうか。3×3出力である黄色の出力のこの各ピクセルです。
各ピクセルの受容野は何でしょうか。3×3です。なぜなら、ここの3×3グリッドを見ているからです。
黄色の3×3に対するこれの受容野は何でしょうか。1つの層から次の層に伝播される情報である局所受容野は3×3だと言えますか。
一定ではありません。カーネルサイズに依存します。しかし入力から最終層までのこれの大域受容野は何でしょうか。5×5です。
ここで局所受容野と大域受容野の違いが分かりますか。
そうです。
そうです。大域は通常、再び星印付きで画像のサイズです。より複雑なニューラルネットワークアーキテクチャを見ると、3×3の画像に対して1000×1000まで行くこともあります。
しかしこれに入らないでおきましょう。これを理解しましょう。この5×5画像の大域受容野は、画像全体のサイズそのもので、5×5です。これらのピクセルの局所受容野は3×3で、緑のピクセルの局所受容野も3×3です。しかし緑のピクセルの大域受容野は5×5になります。
黄色のグリッドの各ピクセルの大域受容野は何でしょうか。これが存在しないと想像してください。その場合の大域受容野は何でしょうか。
各ピクセルです。グリッド全体については聞いていません。×3です。
この演習が大域受容野が正確に何であるか、局所受容野が正確に何であるか、そしてそれをどのように計算できるかの理解を与えたことを願います。
では、400×400の画像にどのように畳み込みできるか見てみましょう。400×400×3の画像があります。32個の3×3×3×32で畳み込みます。これが得られる出力です。
ここでの受容野は何でしょうか。3です。そして到達した受容野まで390×390までプロセスを続けます。
画像を見ることからの理解で、オブジェクトサイズが画像サイズと同じである場合、画像に存在するオブジェクトをいつ識別できるでしょうか。画像内の犬を識別しようとしていて、犬のサイズが400×400で、それが画像のサイズだとしましょう。
この犬を識別するために受容野は何であるべきでしょうか。
そうですか。受容野は何を表していますか。
その隣接ピクセルに存在する情報です。しかしあなたは局所受容野を定義しています。これから先、受容野と言うときは大域受容野を考えてください。
オブジェクトがこの画像に存在すると言えるのはいつでしょうか。その場合の受容野は何であるべきでしょうか。犬の写真サイズが400×400だとしましょう。
それが犬の画像全体のサイズです。ここに犬がいると言うために受容野は何であるべきでしょうか。
400×400です。ここでいくつの層を実装しましたか。5つです。400×400の受容野に行くためにいくつの層を実装すべきでしょうか。
数字を教えてください。いいえ。
199です。400×400の受容野に到達したと言うために199層を追加する必要があります。
それは何層ですか。199層です。そして常にそこに多くの層を持つことが実行可能とは限りません。層の数を減らす方法はあるでしょうか。
ここの複雑さが分かりますか。これの計算上の複雑さまたは計算上の課題です。層の数を減らす必要があると思いますか。
みんな同じページにいますか。どうやって層の数を減らすことができるでしょうか。
しかし畳み込みは既にそれをしています。なぜならニューロン関数について考えると、それは線形関数の非線形性で、y = mx + 3のシグモイドです。
CNNが何をするかという大域的な視点から来ています。CNNアーキテクチャがどのように機能するかのように。しかしCNNは、その能力を与えるアーキテクチャの一部であるすべてを見ていません。
CNNは、画像に犬がいるかどうかのカーネルを学習するモデルのようなもので、犬がどこにいるかを局所化することとは何の関係もないと感じます。
それについて話しているわけではありません。最終的なものに到達したいのです。それがどうですか。
しかしそこには多くの実装が欠けています。想像してください、家に帰ってこの演習をやってみてください。CNNレイヤーだけを取ってください。18層があるとしましょう。32×32の画像サイズを取りましょう。STIFARデータセットはその良い例です。5層だけがあります。
CNNレイヤーだけで設計した畳み込みニューラルネットワークが、その画像のクラスが何であるかを決定する能力があると思いますか。
より大きな画像、その点は、最適な関数が何であるかを学習することが1つのポイントですが、CNNの密な部分に到達したいときは、既にその部分を説明したと思いますが、密になります。
各密な部分に、学習するための入力画像全体の表現のようなものを持たせたいのです。そこで受容野が入ってきます。複数のエポックで学習していることは、画像が見ることさえできなければ助けになりません。あなたのディティーが。それがポイントです。学習モードは、より良い関数を学習することについてです。受容フィードは、学習している関数への良い入力が何であるかについてです。
まだ混乱していますか。いいえ。
まだ混乱していれば、それについて議論できます。
マックスプーリング
もしこの例に固執しなければならない場合、畳み込み以外何も見ていません。199層に行かなければならないので、技術的には実行可能ではありません。なぜなら、ここで何が起こるかというと、計算の数またはカーネルです。常に32カーネルで行くとしても、追加しているのは32×199、その数だけ、存在するカーネルの数です。
それは機能しますが、層の数を減らし、その段階にもっと速く行くより良い方法があります。それがマックスプーリングと呼ばれるものです。
マックスプーリングは何をするのでしょうか。画像を見ます。ここで3×3マックスプールレイヤーを見ています。最も情報量の多い情報またはそこにあるピクセル値を見て、それを捕捉し、フォワードプロパゲートします。
ここで何が起きていると思いますか。この画像を見ると、何が起きていると思いますか。
いいえいいえいいえ、そうではありません。信じてください、そうではありません。画像を見ると、それぞれがピクセル値です。ピクセル値とは何でしょうか。数字です。何と掛け合わせていますか。カーネルです。カーネルには何がありますか。まだ数字です。
数字と掛け合わせると、出力としてまだ数字が得られます。これがそれを表しているものです。整数値ではないかもしれません。浮動小数点値でもありえます。
ピクセルは基本的にそうです。いいえいいえ、まったく異なる領域に行っています。だからピクセル密度はここで見ているものではありません。
見ているのはピクセルの値が何であるかです。畳み込み演算を行っているときでさえ、見ているのはピクセルの値であってピクセル密度ではありません。ピクセルの値は0から255の範囲の値です。それだけです。
RGB画像を取ると、3つのチャンネルがあります。画像サイズが32×32の場合、各チャンネルに32×32ピクセルがあります。そこの各ピクセルは0から255の範囲の値です。それがピクセルの値です。
pillowのような複数のライブラリがあると思います。それを使って、その画像を読み込んで、その値を出力するだけで、画像に存在するすべてのピクセル値を見ることができます。この演習を行ってみることをお勧めします。そうすればピクセル値が正確にどのように見えるかがより明確になります。
いいえ。いいえ。そこで色を表しているのは何でしょうか。
色の濃淡。
いいえ。R、G、Bの組み合わせが何らかの色の視点を与えているのです。それだけです。
あなたが言っているような、あなたの質問をもう一度繰り返してもらえますか。すみません、考えの流れで失いました。


コメント