👁️ STEP 1: コンピュータビジョンとは何か
CVの定義、応用分野、主要タスクを理解し、実務での活用事例を学びます
📋 このステップで学ぶこと
- コンピュータビジョン(CV)の定義と、なぜ注目されているのか
- CVの歴史 – 手作り特徴量から深層学習への進化
- 主要なCVタスク(画像分類、物体検出、セグメンテーションなど)
- 実務での応用事例(自動運転、医療、製造業など)
- CVの課題と今後の展望
練習問題: 3問
🎯 1. コンピュータビジョンとは?
このセクションでは、コンピュータビジョンの基本的な概念を理解します。まずは身近な例から始めて、徐々に技術的な内容に進んでいきましょう。
1-1. 私たちの「見る」能力を考えてみよう
私たちは普段、何気なく周りを「見て」います。朝起きて時計を見る、道を歩いて信号を確認する、友達の顔を見て誰か分かる。これらはすべて「見る」という行為です。
しかし、この「見る」という行為は、実はとても複雑な処理の結果なのです。私たちの脳は、目から入ってきた光の情報を瞬時に分析し、「これは何か」「どこにあるか」「危険かどうか」などを判断しています。
【場面】横断歩道の前に立っているあなた
この一瞬で、あなたの脳は以下の処理を行っています:
ステップ1:信号機を探す → 見つける → 色を認識する → 「赤だ」と判断
ステップ2:道路を見る → 車があるか確認 → 「車が3台来ている」と認識
ステップ3:歩道を見る → 人がいるか確認 → 「あ、知り合いだ!」と顔を認識
ステップ4:全ての情報を統合 → 「今は渡らない方がいい」と判断
これらの判断は、わずか数百ミリ秒で行われています。すごいですよね?
人間は生まれてから何十年もかけて、何百万枚もの「画像」を見てきました。赤ちゃんの頃から、毎日毎日、様々なものを見て、触って、経験することで、無意識のうちに「物を認識する方法」を学習しています。
人間の視覚の強み:
・瞬時の判断:見た瞬間に「猫だ」「危険だ」と分かる
・柔軟な対応:暗くても、斜めからでも、一部が隠れていても認識できる
・文脈の理解:「キッチンにいる白い動物」→ 猫だろうと推測できる
・初見でも認識:見たことがない動物でも「これは動物だ」と分かる
→ コンピュータビジョンは、この「人間の視覚能力」をコンピュータで再現しようとする技術です!
1-2. コンピュータビジョンの定義
それでは、コンピュータビジョンを正式に定義しましょう。
コンピュータビジョン(Computer Vision)とは、「コンピュータに見る能力を与える技術」です。
もう少し詳しく言うと、画像や動画(映像)から情報を取り出して、その内容を理解・解釈する技術のことです。
英語での略称:CV(Computer Visionの頭文字)
「見る能力を与える」とは具体的にどういうことでしょうか?以下の図で確認しましょう。
🎯 具体的な入出力の例
いくつかの具体例を見てみましょう。
1-3. コンピュータにとって「見る」とは? – 最も重要な概念
ここからが、コンピュータビジョンを学ぶ上で最も重要な概念です。人間とコンピュータでは、画像の見え方が根本的に異なります。この違いを理解することが、CVを学ぶ第一歩です。
あなたが猫の写真を見たとします。
あなたの反応:「あ、猫だ!」「かわいい!」「茶色い毛だね」「眠そうだな」
→ 一瞬で「猫」と認識し、さらに色や状態まで理解できます。
同じ猫の写真をコンピュータに見せると…
コンピュータが見ているもの:「123, 145, 89, 234, 178, 92, 112, 156, 201, …」
→ ただの数字の羅列にしか見えません!コンピュータは「猫」という概念を持っていないのです。
🔑 重要:デジタル画像の正体
デジタル画像は、小さな点(ピクセル)の集まりです。そして、各ピクセルは数値で表現されています。
これをもっと具体的に見てみましょう。
ここまでの内容をまとめると…
コンピュータビジョンとは:
「数字の羅列(画像データ)」から、「意味のある情報」を抽出する技術
たとえるなら…
・暗号を解読するようなもの
・数字のパターンから「これは猫のパターンだ」と見抜く
・大量の数値データから規則性を見つけ出す
これが、コンピュータビジョンが行っていることの本質です。
1-4. 実際にPythonで画像を数値として見てみよう
理論だけでなく、実際にPythonで画像が数値の集まりであることを確認してみましょう。以下のコードは概念を理解するためのものです。
※ 以下はコードの説明です。実際に入力して実行する場合は、Google Colabなどで試してみてください。
ステップ1:必要なライブラリをインポート
なぜこのライブラリを使うのか?
・PIL(Pillow):Pythonで画像を扱う標準的なライブラリ
・NumPy:画像を数値の配列として効率的に処理できる
ステップ2:画像を読み込んでNumPy配列に変換
何をしているか?
・Image.open():画像ファイルを読み込む命令
・np.array():画像データを数値の配列に変換する命令
ステップ3:画像のサイズと形状を確認
出力例:
ステップ4:画像の一部の数値を表示
出力例:
完成コード(実際に入力して試す場合)
以下のコードをGoogle Colabなどで実行すると、画像が数値の配列であることを確認できます。
1-5. CVの特徴と強み – なぜ今CVが注目されているのか
コンピュータビジョンには、人間の視覚にはない強みがあります。これらの強みを活かすことで、様々な分野で革命が起きています。
| 特徴 | 具体的な内容 | 実務でのメリット |
|---|---|---|
| 高速処理 | 1秒間に何百枚〜何千枚もの画像を処理可能 | 製造ラインで毎秒100個以上の製品を検査。人間なら何時間もかかる作業が数分で完了 |
| 24時間稼働 | 疲れない、休憩不要、夜間も稼働 | 監視カメラの24時間監視、夜間の工場稼働が可能に |
| 一貫性 | 同じ基準で判断し続ける(気分や体調に左右されない) | 品質検査の精度が安定。「今日は疲れてて見逃した」がない |
| スケーラビリティ | 同じシステムを何千台でも複製可能 | 世界中の工場や店舗に同じ品質のシステムを展開可能 |
| 超人的な精度 | 特定のタスクでは人間を超える精度を達成 | 医療画像診断で医師が見逃しがちな初期病変を検出 |
CVには強みがある一方で、限界もあります。これらを理解しておくことが重要です。
・訓練データに依存:見たことがないパターンは認識できない
・文脈理解が苦手:人間のような常識的な判断は難しい
・計算リソースが必要:高性能なGPUがないと処理が遅い
→ CVは「人間の代替」ではなく「人間の能力を拡張するツール」として活用するのがベストです。
📜 2. CVの歴史 – 手作り特徴量から深層学習へ
コンピュータビジョンは60年以上の歴史がありますが、2012年を境に革命的な進化を遂げました。この歴史を理解することで、「なぜ今のCV技術はこんなに強力なのか」「なぜ深層学習が重要なのか」が分かります。
2-1. CVの歴史を4つの時代に分けて理解
CVの歴史は大きく4つの時代に分けられます。それぞれの時代で、何ができて、何ができなかったのかを見ていきましょう。
🕰️ 【時代①】黎明期(1960年代)- 夢の始まり
🕰️ 【時代②】手作り特徴量の時代(1970〜2000年代)- 職人技の時代
「手作り特徴量」とは、人間が「コンピュータはこう見るべき」とルールを決めることです。
例:猫を認識するルール(手作り)
ステップ1:三角形の耳があるか確認 → ある → +1点
ステップ2:丸い目が2つあるか確認 → ある → +1点
ステップ3:ひげがあるか確認 → ある → +1点
ステップ4:3点以上なら「猫」と判定
問題点:
・「耳が隠れている猫」は認識できない
・「横向きの猫」は三角形に見えないので認識できない
・「猫の絵」と「本物の猫」の区別ができない
→ 人間が考えた「ルール」には限界があったのです。
🕰️ 【時代③】革命 – AlexNetの衝撃(2012年)🎉
毎年開催される画像認識コンペティション「ImageNet Large Scale Visual Recognition Challenge(ILSVRC)」で、深層学習(CNN)を使った「AlexNet」というモデルが圧勝しました。
具体的な結果:
・2011年までの最高精度:誤差率 約26%(従来の手作り特徴量手法)
・2012年 AlexNet:誤差率 約16%(深層学習)
→ 一気に10%以上の改善!これは衝撃的でした
革命のポイント:
「特徴」を人間が設計するのではなく、AIがデータから自分で学習するようになったこと
🕰️ 【時代④】深層学習の全盛期(2012年〜現在)- 急速な進化
2-2. 手作り特徴量 vs 深層学習 – 何が違うのか
なぜ深層学習がこれほど強力なのでしょうか?2つのアプローチを比較してみましょう。
| 比較項目 | 手作り特徴量(〜2012年) | 深層学習(2012年〜) |
|---|---|---|
| 特徴の設計 | 人間が「どう見るか」を設計(専門知識と試行錯誤が必要) | AIが自動的に最適な特徴を学習(データさえあれば自動化) |
| 精度 | 限定的(ImageNet誤差率:26%程度) | 非常に高い(ImageNet誤差率:1%台) |
| 開発時間 | 長い(特徴設計に数ヶ月〜数年) | 短い(データ収集とラベル付けが主な作業) |
| 汎用性 | 低い(タスクごとに設計し直し) | 高い(転移学習で様々なタスクに応用可能) |
| 必要なリソース | 計算量は少ない(通常のPCで動作) | 計算量が多い(GPU必須、学習に数時間〜数日) |
2-3. なぜ2012年に深層学習が成功したのか?
深層学習のアイデア自体は1980年代からありました。では、なぜ2012年に突然成功したのでしょうか?その背景には3つの重要な要因があります。
① 大量のデータ(Big Data)
2009年にImageNetという大規模データセットが公開された。
・1400万枚以上の画像
・2万以上のカテゴリ
・すべての画像に正解ラベル(「犬」「猫」など)が付いている
→ AIが学習するための「教材」が大量に用意された
② 計算能力の向上(GPU)
元々ゲーム用だったGPUが、深層学習の計算に最適だと分かった。
・GPUは大量の計算を並列処理できる
・CPUだと数週間かかる学習が、GPUなら数日で完了
・NVIDIAのCUDAにより、GPUでの計算が簡単に
③ 優れたアルゴリズム
効果的なネットワーク構造とテクニックが発見された。
・CNN(畳み込みニューラルネットワーク)の改良
・ReLU活性化関数(学習が速くなる)
・Dropout(過学習を防ぐ)
・データ拡張(限られたデータを有効活用)
→ この3つが揃ったことで、深層学習は「理論」から「実用」に変わりました。
手作り特徴量 = レシピ通りに作る料理人
・「この材料をこう切って、この調味料を入れて…」と決まった手順で作る
・レシピにない料理は作れない
・材料が少し違うと対応できない
深層学習 = 何千もの料理を食べて学んだシェフ
・大量の料理を経験して「美味しい料理とは何か」を自分で理解
・新しい材料でも、経験から「こう調理すれば美味しくなる」と判断できる
・明文化されていない「コツ」も自然と身についている
→ 深層学習は「ルール」ではなく「経験」から学ぶので、より柔軟に対応できるのです。
🎯 3. 主要なCVタスク
コンピュータビジョンには、様々なタスク(課題)があります。それぞれのタスクで「何を入力して、何が出力されるか」を具体的に理解しましょう。このセクションの内容は、今後のコース全体で繰り返し出てくる重要な概念です。
3-1. 画像分類(Image Classification)
最も基本的で、最も重要なCVタスクです。CVを学ぶなら、まずここから始めます。
定義:画像全体が「何か」を1つのラベル(カテゴリ)で判定するタスク
質問形式で言うと:「この画像には何が映っていますか?」
ポイント:
・画像「全体」を見て判断する
・出力は「1つ」のラベル(「猫」「犬」「車」など)
・「どこに」あるかは分からない(位置情報なし)
🔍 画像分類の具体的な応用例
・入力:1枚の画像
・出力:1つのカテゴリ(ラベル)+ 信頼度(確率)
・位置情報:なし(どこにあるかは分からない)
・代表モデル:ResNet、EfficientNet、Vision Transformer(ViT)
・学習するステップ:STEP 5〜8、STEP 16〜17
3-2. 物体検出(Object Detection)
画像分類の次のステップです。「何が」映っているかだけでなく、「どこに」あるかも分かります。
定義:画像の中の「どこに」「何が」あるかを特定するタスク
質問形式で言うと:「この画像のどこに、何がありますか?」
ポイント:
・画像の中から複数の物体を検出できる
・各物体の位置を矩形(Bounding Box)で示す
・各物体のクラスと信頼度も出力する
📦 Bounding Box(バウンディングボックス)とは?
物体を囲む矩形の枠のことです。「境界ボックス」とも呼ばれます。
・入力:1枚の画像
・出力:複数の検出結果(クラス + 位置 + 信頼度)
・位置情報:あり(Bounding Boxで表現)
・代表モデル:YOLO(v5, v8)、Faster R-CNN、DETR
・学習するステップ:STEP 9〜12
3-3. セマンティックセグメンテーション(Semantic Segmentation)
画像をピクセル単位で理解する、最も詳細なタスクの1つです。「塗り絵」をイメージすると分かりやすいです。
定義:画像の各ピクセルが「何か」を分類するタスク
質問形式で言うと:「この画像の各点(ピクセル)は何ですか?」
ポイント:
・画像全体をピクセル単位で色分けする
・「道路はここ」「空はここ」「建物はここ」と塗り分ける
・同じクラスの物体は区別しない(車Aも車Bも同じ「車」色)
・入力:1枚の画像
・出力:ピクセルごとのラベル(入力と同じサイズ)
・特徴:同じクラスの物体は区別しない(車A、車Bも同じ「車」)
・代表モデル:U-Net、DeepLab v3+、FCN
・学習するステップ:STEP 13
3-4. インスタンスセグメンテーション(Instance Segmentation)
セマンティックセグメンテーションをさらに進化させ、個々の物体を区別できるようにしたタスクです。
定義:個々の物体を分離して、それぞれのマスクを生成するタスク
質問形式で言うと:「この画像の各物体の輪郭はどこですか?」
ポイント:
・物体検出 + セグメンテーションの組み合わせ
・同じクラスでも個体ごとに区別できる(「車A」「車B」「車C」)
・各物体の正確な輪郭(マスク)を出力
・入力:1枚の画像
・出力:個々の物体のマスク(ピクセル単位の輪郭)
・特徴:同じクラスでも個体ごとに区別できる
・代表モデル:Mask R-CNN、YOLACT、SOLOv2
・学習するステップ:STEP 14
3-5. その他の重要なタスク
上記の4つ以外にも、重要なCVタスクがいくつかあります。
| タスク | 概要 | 応用例 | 学習ステップ |
|---|---|---|---|
| 姿勢推定 | 人体のキーポイント(関節の位置)を検出 | スポーツ分析、フィットネスアプリ、AR/VR | STEP 21 |
| 画像生成 | AIが新しい画像を生成する(「見る」ではなく「作る」) | アート生成、データ拡張、顔生成 | STEP 22 |
| 顔認識 | 顔を検出し、誰の顔かを識別 | Face ID、空港の顔認証ゲート | STEP 20 |
3-6. CVタスクの関係性と選び方
これらのタスクは独立しているのではなく、関連し合っています。タスクの階層構造を理解しておきましょう。
実務では「どのタスクが必要か」を見極めることが重要です。必要以上に複雑なタスクを選ぶと、コストが無駄になります。
選択の目安:
・「これは何か」だけ知りたい場合 → 画像分類(最も軽量)
・「どこにあるか」も知りたい場合 → 物体検出
・「正確な輪郭」が必要な場合 → セグメンテーション
・「個々の物体を区別」したい場合 → インスタンスセグメンテーション
例:工場の不良品検査
・「良品/不良品」だけ知りたい → 画像分類
・「どこに傷があるか」も知りたい → 物体検出
・「傷の面積」を測定したい → セグメンテーション
🌍 4. 実務での応用事例
コンピュータビジョンは、すでに私たちの身の回りで広く使われています。具体的な事例を見てみましょう。
4-1. 自動運転 – CVの最前線
自動運転は、CVの最も複雑で挑戦的な応用分野の1つです。複数のCVタスクをリアルタイムで同時に実行する必要があります。
4-2. 医療画像診断 – AIが命を救う
医療分野は、CVが人間を超える精度を発揮している分野の1つです。
4-3. 製造業の品質検査 – 24時間稼働する検査官
製造ラインでの品質検査は、CVの最も普及している応用分野の1つです。
4-4. その他の応用分野
| 分野 | CVの活用方法 | 具体例 |
|---|---|---|
| 小売・EC | 商品認識、在庫管理、顧客行動分析 | Amazon Go(無人店舗)、商品の画像検索、レジなし決済 |
| 農業 | 作物の健康診断、収穫時期判定 | ドローンによる農地監視、自動収穫ロボット、雑草検出 |
| セキュリティ | 異常検知、人物追跡、侵入検知 | 監視カメラの自動分析、不審行動検知 |
| スポーツ | 選手追跡、動作分析、審判支援 | VAR(ビデオ判定)、選手のパフォーマンス分析 |
⚠️ 5. CVの課題と今後の展望
コンピュータビジョンは強力ですが、まだ解決すべき課題もあります。
5-1. 技術的な課題
| 課題 | 具体的な問題 | 対策 |
|---|---|---|
| 遮蔽 | 物体の一部が隠れていると認識精度が低下 | 遮蔽を含む訓練データの充実、複数カメラの使用 |
| 照明条件 | 明るさや光の当たり方で精度が変化 | 様々な照明条件でのデータ拡張、赤外線カメラの併用 |
| 視点の変化 | 同じ物体でも角度で見え方が大きく異なる | 多様な角度のデータで訓練、3Dモデルの活用 |
| データセットのバイアス | 訓練データに偏りがあると特定条件でのみ動作 | 多様で代表的なデータセットの構築 |
5-2. 今後のトレンド
📝 練習問題
このステップで学んだ内容を確認しましょう。
問題1:CVタスクの分類(基礎)
以下の応用例は、どのCVタスクに該当しますか?
1. スマートフォンの写真アプリで、「猫」「犬」「風景」などのカテゴリに自動分類
2. 自動運転車が、道路上の歩行者と車を検出し、位置を特定
3. 医療画像で、CTスキャンから腫瘍の輪郭をピクセル単位で特定
1. 画像分類(Image Classification)
画像全体を1つのカテゴリで判定するタスクです。「この画像は猫か犬か風景か」という質問に1つのラベルで答えます。位置情報は出力されません。
2. 物体検出(Object Detection)
画像の「どこに」「何が」あるかを特定するタスクです。複数の物体を検出し、それぞれにBounding Box(矩形の枠)とラベルを付けます。
3. セマンティックセグメンテーション(Semantic Segmentation)
画像の各ピクセルが何かを分類するタスクです。腫瘍の正確な輪郭を特定するには、ピクセル単位の分類が必要です。
問題2:手作り特徴量 vs 深層学習(中級)
2012年以前の「手作り特徴量」の時代と、2012年以降の「深層学習」の時代の違いを、以下の3つの観点から説明してください。
- 特徴の設計方法
- 精度
- 汎用性
1. 特徴の設計方法
手作り特徴量:人間が「どう見るか」を設計。例えば「エッジを検出」「角を見つける」といったルールを人間が実装。専門知識が必要でタスクごとに設計が必要。
深層学習:AIが自動的に最適な特徴を学習。人間は大量のデータを与えるだけでAIが自分で「重要な特徴」を発見。
2. 精度
手作り特徴量:限定的。ImageNetでの誤差率は約26%程度が限界。複雑な画像に弱い。
深層学習:非常に高い精度。2015年に人間の精度(誤差率5%)を下回り、現在は1%台まで向上。
3. 汎用性
手作り特徴量:低い。タスクごとに特徴を設計し直す必要があった。
深層学習:高い。転移学習により、1つの事前学習モデルを様々なタスクに応用可能。
問題3:CVの実務応用(応用)
あなたが「製造業の不良品検査システム」を構築するとします。以下の要件を満たすために、どのCVタスクを組み合わせますか?理由とともに説明してください。
要件:
・製品の画像から、「良品」「不良品」を自動判定
・不良品の場合、欠陥部位(傷、汚れなど)の位置を特定
・欠陥の大きさ(面積)も測定したい
組み合わせるCVタスク
① 画像分類(Image Classification)
・用途:まず製品全体を「良品」「不良品」に分類(スクリーニング)
・理由:良品の場合は詳細検査不要なので、効率的にフィルタリングできる
② 物体検出(Object Detection)
・用途:不良品と判定された場合、欠陥部位の位置を特定
・理由:Bounding Boxで「どこに」欠陥があるかを示せる
③ セマンティックセグメンテーション
・用途:欠陥の正確な輪郭を特定し、面積を測定
・理由:ピクセル単位で欠陥領域を特定できるため、面積の正確な計算が可能
実装の流れ
1. 画像分類で「良品」「不良品」をスクリーニング → 良品はそのまま出荷
2. 不良品のみ、物体検出で欠陥位置を特定
3. さらにセグメンテーションで欠陥の輪郭と面積を測定
4. 面積に応じて「要廃棄」「要再加工」「軽微(出荷可)」に分類
ポイント:複数のタスクを段階的に組み合わせることで、効率的で正確なシステムを構築できます。
📝 STEP 1 のまとめ
・コンピュータビジョン(CV)とは、コンピュータに「見る」能力を与える技術。画像(数字の羅列)から意味のある情報を抽出する。
・2012年のAlexNet以降、深層学習でCVは飛躍的に進化。人間が特徴を設計する時代から、AIが自動で学習する時代へ。
・主要なCVタスク:
- 画像分類:画像全体を1つのラベルで判定
- 物体検出:どこに何があるかを特定
- セマンティックセグメンテーション:ピクセル単位でラベル付け
- インスタンスセグメンテーション:個々の物体を分離してマスク生成
・実務応用:自動運転、医療画像診断、顔認識、製造業の品質検査など
・課題:遮蔽、照明変化、視点変化、データセットのバイアス
・未来:マルチモーダルAI、3DCV、エッジAI、汎用ビジョンモデルへ
コンピュータビジョンの本質:
画像は「数字の羅列」であり、CVはその数字のパターンから「意味」を抽出する技術です。
深層学習の革命:
2012年以降、「人間が特徴を設計」から「AIが自動で学習」へ変わり、精度が飛躍的に向上しました。
適切なタスク選択:
実務では「何を知りたいか」に応じて最適なタスクを選ぶことが重要です。
次のSTEP 2では、「画像の基礎知識」を学びます。
学習内容:
・デジタル画像の表現(ピクセル、解像度、アスペクト比)
・色空間(RGB、RGBA、グレースケール、HSV)
・PIL/OpenCVでの画像読み込み・表示
・基本操作(リサイズ、クロップ、回転、反転)
実際にPythonコードを書いて画像を操作します。CVの基礎となる重要なステップですので、しっかり取り組みましょう!
学習メモ
コンピュータビジョン(CV) - Step 1