STEP 1:コンピュータビジョンとは何か

👁️ STEP 1: コンピュータビジョンとは何か

CVの定義、応用分野、主要タスクを理解し、実務での活用事例を学びます

📋 このステップで学ぶこと

  • コンピュータビジョン(CV)の定義と、なぜ注目されているのか
  • CVの歴史 – 手作り特徴量から深層学習への進化
  • 主要なCVタスク(画像分類、物体検出、セグメンテーションなど)
  • 実務での応用事例(自動運転、医療、製造業など)
  • CVの課題と今後の展望

練習問題: 3問

🎯 1. コンピュータビジョンとは?

このセクションでは、コンピュータビジョンの基本的な概念を理解します。まずは身近な例から始めて、徐々に技術的な内容に進んでいきましょう。

1-1. 私たちの「見る」能力を考えてみよう

私たちは普段、何気なく周りを「見て」います。朝起きて時計を見る、道を歩いて信号を確認する、友達の顔を見て誰か分かる。これらはすべて「見る」という行為です。

しかし、この「見る」という行為は、実はとても複雑な処理の結果なのです。私たちの脳は、目から入ってきた光の情報を瞬時に分析し、「これは何か」「どこにあるか」「危険かどうか」などを判断しています。

🎬 日常の「見る」を分析してみよう

【場面】横断歩道の前に立っているあなた

この一瞬で、あなたの脳は以下の処理を行っています:

ステップ1:信号機を探す → 見つける → 色を認識する → 「赤だ」と判断
ステップ2:道路を見る → 車があるか確認 → 「車が3台来ている」と認識
ステップ3:歩道を見る → 人がいるか確認 → 「あ、知り合いだ!」と顔を認識
ステップ4:全ての情報を統合 → 「今は渡らない方がいい」と判断

これらの判断は、わずか数百ミリ秒で行われています。すごいですよね?

💡 なぜ人間の視覚はこんなに優れているのか?

人間は生まれてから何十年もかけて、何百万枚もの「画像」を見てきました。赤ちゃんの頃から、毎日毎日、様々なものを見て、触って、経験することで、無意識のうちに「物を認識する方法」を学習しています。

人間の視覚の強み:
瞬時の判断:見た瞬間に「猫だ」「危険だ」と分かる
柔軟な対応:暗くても、斜めからでも、一部が隠れていても認識できる
文脈の理解:「キッチンにいる白い動物」→ 猫だろうと推測できる
初見でも認識:見たことがない動物でも「これは動物だ」と分かる

コンピュータビジョンは、この「人間の視覚能力」をコンピュータで再現しようとする技術です!

1-2. コンピュータビジョンの定義

それでは、コンピュータビジョンを正式に定義しましょう。

📖 コンピュータビジョン(CV)の定義

コンピュータビジョン(Computer Vision)とは、「コンピュータに見る能力を与える技術」です。

もう少し詳しく言うと、画像や動画(映像)から情報を取り出して、その内容を理解・解釈する技術のことです。

英語での略称:CV(Computer Visionの頭文字)

「見る能力を与える」とは具体的にどういうことでしょうか?以下の図で確認しましょう。

【コンピュータビジョンが行うこと】 【入力】画像や動画 例:カメラで撮影した写真、監視カメラの映像など ↓ 【処理】画像を分析・解釈 例:AIモデルが画像のパターンを分析 ↓ 【出力】意味のある情報 例:「これは犬です」「道路に歩行者が2人います」など

🎯 具体的な入出力の例

いくつかの具体例を見てみましょう。

【例1:ペットの写真を分類】 入力:犬の写真 → 出力:「これは犬です(信頼度98%)」 【例2:自動運転での周囲認識】 入力:車載カメラの映像 → 出力:「前方50mに歩行者、右側に車線」 【例3:医療画像診断】 入力:肺のレントゲン写真 → 出力:「肺炎の兆候があります(右肺下部)」 【例4:工場の品質検査】 入力:製品の写真 → 出力:「不良品です(傷が検出されました)」

1-3. コンピュータにとって「見る」とは? – 最も重要な概念

ここからが、コンピュータビジョンを学ぶ上で最も重要な概念です。人間とコンピュータでは、画像の見え方が根本的に異なります。この違いを理解することが、CVを学ぶ第一歩です。

👤 人間が画像を見るとき

あなたが猫の写真を見たとします。

あなたの反応:「あ、猫だ!」「かわいい!」「茶色い毛だね」「眠そうだな」

→ 一瞬で「猫」と認識し、さらに色や状態まで理解できます。

💻 コンピュータが画像を見るとき

同じ猫の写真をコンピュータに見せると…

コンピュータが見ているもの:「123, 145, 89, 234, 178, 92, 112, 156, 201, …」

ただの数字の羅列にしか見えません!コンピュータは「猫」という概念を持っていないのです。

🔑 重要:デジタル画像の正体

デジタル画像は、小さな点(ピクセル)の集まりです。そして、各ピクセルは数値で表現されています。

【グレースケール画像の場合】 各ピクセルは 0〜255 の1つの数値 ・0 = 黒 ・255 = 白 ・中間の値 = 灰色 【カラー画像の場合】 各ピクセルは3つの数値(R=赤、G=緑、B=青、それぞれ 0〜255) ・(255, 0, 0) = 赤 ・(0, 255, 0) = 緑 ・(0, 0, 255) = 青 ・(255, 255, 255) = 白 ・(0, 0, 0) = 黒

これをもっと具体的に見てみましょう。

【画像の数値表現を理解しよう】 例:100×100ピクセルのカラー写真(小さな写真) コンピュータが見ている内容: ・横に100個、縦に100個の点(ピクセル)がある ・各ピクセルに3つの数値(R, G, B)がある ・合計:100 × 100 × 3 = 30,000個の数値 つまり、たった100×100ピクセルの小さな画像でも、 コンピュータにとっては「30,000個の数字の並び」なのです。 スマホで撮った写真(例:4000×3000ピクセル)なら 4000 × 3000 × 3 = 36,000,000個(3600万個!)の数値になります。
🎯 コンピュータビジョンの本質

ここまでの内容をまとめると…

コンピュータビジョンとは:
数字の羅列(画像データ)」から、「意味のある情報」を抽出する技術

たとえるなら…
・暗号を解読するようなもの
・数字のパターンから「これは猫のパターンだ」と見抜く
・大量の数値データから規則性を見つけ出す

これが、コンピュータビジョンが行っていることの本質です。

1-4. 実際にPythonで画像を数値として見てみよう

理論だけでなく、実際にPythonで画像が数値の集まりであることを確認してみましょう。以下のコードは概念を理解するためのものです。

※ 以下はコードの説明です。実際に入力して実行する場合は、Google Colabなどで試してみてください。

ステップ1:必要なライブラリをインポート

# PIL(Pillow)ライブラリ # 画像を読み込んだり、加工したりするためのライブラリ from PIL import Image # NumPyライブラリ # 数値計算を効率的に行うライブラリ # 画像データを配列(数値の並び)として扱うために使う import numpy as np

なぜこのライブラリを使うのか?
PIL(Pillow):Pythonで画像を扱う標準的なライブラリ
NumPy:画像を数値の配列として効率的に処理できる

ステップ2:画像を読み込んでNumPy配列に変換

# Image.open() で画像ファイルを開く # 引数には画像ファイルのパス(場所)を指定する image = Image.open(“cat.jpg”) # np.array() で画像をNumPy配列に変換 # これにより、画像が「数値の配列」として扱えるようになる image_array = np.array(image)

何をしているか?
Image.open():画像ファイルを読み込む命令
np.array():画像データを数値の配列に変換する命令

ステップ3:画像のサイズと形状を確認

# shape属性で配列の形状を確認 # (高さ, 幅, チャンネル数) の順番で表示される print(f”画像の形状: {image_array.shape}”) # dtype属性でデータの型を確認 # 通常は uint8(0〜255の整数) print(f”データ型: {image_array.dtype}”)

出力例:

画像の形状: (480, 640, 3) データ型: uint8 → これは「高さ480ピクセル × 幅640ピクセル × 3チャンネル(RGB)」を意味する → 合計 480 × 640 × 3 = 921,600 個の数値で構成されている

ステップ4:画像の一部の数値を表示

# 画像の左上の5×5ピクセル部分の赤チャンネルの値を表示 # [0:5, 0:5, 0] は「縦0〜4、横0〜4、0番目のチャンネル(赤)」を意味 print(“左上5×5ピクセルの赤チャンネル値:”) print(image_array[0:5, 0:5, 0])

出力例:

左上5×5ピクセルの赤チャンネル値: [[123 125 124 126 127] [121 122 123 125 126] [120 121 122 124 125] [119 120 121 123 124] [118 119 120 122 123]] → 人間には「猫の画像」に見えるものが、 コンピュータには「このような数値の配列」として見えている

完成コード(実際に入力して試す場合)

以下のコードをGoogle Colabなどで実行すると、画像が数値の配列であることを確認できます。

# 画像が数値の配列であることを確認するコード from PIL import Image import numpy as np # サンプル画像をダウンロード(インターネット上の画像を使用) import urllib.request url = “https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1200px-Cat03.jpg” urllib.request.urlretrieve(url, “cat.jpg”) # 画像を読み込み image = Image.open(“cat.jpg”) # NumPy配列に変換 image_array = np.array(image) # 画像情報を表示 print(f”画像の形状: {image_array.shape}”) print(f”データ型: {image_array.dtype}”) print(f”総ピクセル数: {image_array.size:,}”) # 左上の一部の数値を表示 print(“\n左上5×5ピクセルの赤チャンネル値:”) print(image_array[0:5, 0:5, 0])

1-5. CVの特徴と強み – なぜ今CVが注目されているのか

コンピュータビジョンには、人間の視覚にはない強みがあります。これらの強みを活かすことで、様々な分野で革命が起きています。

特徴 具体的な内容 実務でのメリット
高速処理 1秒間に何百枚〜何千枚もの画像を処理可能 製造ラインで毎秒100個以上の製品を検査。人間なら何時間もかかる作業が数分で完了
24時間稼働 疲れない、休憩不要、夜間も稼働 監視カメラの24時間監視、夜間の工場稼働が可能に
一貫性 同じ基準で判断し続ける(気分や体調に左右されない) 品質検査の精度が安定。「今日は疲れてて見逃した」がない
スケーラビリティ 同じシステムを何千台でも複製可能 世界中の工場や店舗に同じ品質のシステムを展開可能
超人的な精度 特定のタスクでは人間を超える精度を達成 医療画像診断で医師が見逃しがちな初期病変を検出
⚠️ CVの限界も理解しておこう

CVには強みがある一方で、限界もあります。これらを理解しておくことが重要です。

訓練データに依存:見たことがないパターンは認識できない
文脈理解が苦手:人間のような常識的な判断は難しい
計算リソースが必要:高性能なGPUがないと処理が遅い

→ CVは「人間の代替」ではなく「人間の能力を拡張するツール」として活用するのがベストです。

📜 2. CVの歴史 – 手作り特徴量から深層学習へ

コンピュータビジョンは60年以上の歴史がありますが、2012年を境に革命的な進化を遂げました。この歴史を理解することで、「なぜ今のCV技術はこんなに強力なのか」「なぜ深層学習が重要なのか」が分かります。

2-1. CVの歴史を4つの時代に分けて理解

CVの歴史は大きく4つの時代に分けられます。それぞれの時代で、何ができて、何ができなかったのかを見ていきましょう。

🕰️ 【時代①】黎明期(1960年代)- 夢の始まり

【何が起きた?】 1966年、MITで「Summer Vision Project」という研究プロジェクトが始まった。 このプロジェクトの目標は、「夏休みの間に、コンピュータに視覚を持たせる」こと。 今振り返ると、これはとても楽観的すぎる計画だった。 実際には、60年経った今でもCVは発展途上。 【この時代にできたこと】 ・立方体や球など、単純な形状の認識 ・エッジ(輪郭線)の検出 【限界】 現実世界の複雑な画像(自然風景、人物など)には全く対応できなかった

🕰️ 【時代②】手作り特徴量の時代(1970〜2000年代)- 職人技の時代

【何が起きた?】 研究者たちは「コンピュータに何を見せればいいか」を人間が設計するアプローチを取った。 これが「手作り特徴量(Hand-crafted Features)」と呼ばれる手法。 【代表的な技術】 ・Sobel、Canny(エッジ検出):画像の輪郭を検出するアルゴリズム ・SIFT(2004年):画像の特徴的な点を検出し、回転や拡大縮小に強い ・HOG(2005年):物体の形状を「勾配の方向」で表現 【この時代の限界】 ・特徴の設計に高度な専門知識が必要 ・タスクごとに特徴を設計し直す必要がある ・複雑な画像(遮蔽、照明変化など)に弱い
📝 「手作り特徴量」とは? – 具体例で理解

「手作り特徴量」とは、人間が「コンピュータはこう見るべき」とルールを決めることです。

例:猫を認識するルール(手作り)

ステップ1:三角形の耳があるか確認 → ある → +1点
ステップ2:丸い目が2つあるか確認 → ある → +1点
ステップ3:ひげがあるか確認 → ある → +1点
ステップ4:3点以上なら「猫」と判定

問題点:
・「耳が隠れている猫」は認識できない
・「横向きの猫」は三角形に見えないので認識できない
・「猫の絵」と「本物の猫」の区別ができない

→ 人間が考えた「ルール」には限界があったのです。

🕰️ 【時代③】革命 – AlexNetの衝撃(2012年)🎉

2012年は、CVの歴史において最も重要な年です。

毎年開催される画像認識コンペティション「ImageNet Large Scale Visual Recognition Challenge(ILSVRC)」で、深層学習(CNN)を使った「AlexNet」というモデルが圧勝しました。

具体的な結果:
・2011年までの最高精度:誤差率 約26%(従来の手作り特徴量手法)
・2012年 AlexNet:誤差率 約16%(深層学習)
一気に10%以上の改善!これは衝撃的でした

革命のポイント:
「特徴」を人間が設計するのではなく、AIがデータから自分で学習するようになったこと

🕰️ 【時代④】深層学習の全盛期(2012年〜現在)- 急速な進化

【主要なマイルストーン】 ・2014年 VGGNet:深いネットワーク(16〜19層)が有効と証明 ・2015年 ResNet:152層の超深いネットワーク、人間を超える精度を達成 ・2017年 Mask R-CNN:物体検出とセグメンテーションを統合 ・2020年 Vision Transformer (ViT):自然言語処理で成功したTransformerを画像に応用 ・2021年 CLIP:画像とテキストを統合的に理解 ・2023年 SAM(Segment Anything Model):何でもセグメンテーションできる汎用モデル 【ImageNetでの精度推移】 ・2012年:16.4%(AlexNet) ・2015年:3.6%(ResNet) ← 人間の誤差率5%を下回った! ・現在:1%台

2-2. 手作り特徴量 vs 深層学習 – 何が違うのか

なぜ深層学習がこれほど強力なのでしょうか?2つのアプローチを比較してみましょう。

比較項目 手作り特徴量(〜2012年) 深層学習(2012年〜)
特徴の設計 人間が「どう見るか」を設計(専門知識と試行錯誤が必要) AIが自動的に最適な特徴を学習(データさえあれば自動化)
精度 限定的(ImageNet誤差率:26%程度) 非常に高い(ImageNet誤差率:1%台)
開発時間 長い(特徴設計に数ヶ月〜数年) 短い(データ収集とラベル付けが主な作業)
汎用性 低い(タスクごとに設計し直し) 高い(転移学習で様々なタスクに応用可能)
必要なリソース 計算量は少ない(通常のPCで動作) 計算量が多い(GPU必須、学習に数時間〜数日)

2-3. なぜ2012年に深層学習が成功したのか?

深層学習のアイデア自体は1980年代からありました。では、なぜ2012年に突然成功したのでしょうか?その背景には3つの重要な要因があります。

🚀 深層学習を可能にした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枚の画像(例:犬が写っている写真) ステップ2:モデルが画像を分析 処理:CNNなどのモデルが画像のパターンを解析 ステップ3:確率を計算 内部処理:各カテゴリの確率を計算 – 犬: 95% – 猫: 3% – 鳥: 1% – その他: 1% ステップ4:最も確率の高いラベルを出力 出力:「犬」(信頼度95%)

🔍 画像分類の具体的な応用例

【例1:スマホの写真アプリ】 撮影した写真を「猫」「犬」「風景」「食べ物」などに自動分類 → 検索しやすくなる 【例2:医療画像診断】 レントゲン写真を「正常」「肺炎」「結核」などに分類 → 医師の診断を支援 【例3:工場の品質検査】 製品の写真を「良品」「不良品」に分類 → 検査の自動化 【例4:皮膚がん診断】 皮膚の写真を「良性」「悪性」に分類 → 早期発見に貢献
✅ 画像分類のポイントまとめ

入力:1枚の画像
出力:1つのカテゴリ(ラベル)+ 信頼度(確率)
位置情報:なし(どこにあるかは分からない)
代表モデル:ResNet、EfficientNet、Vision Transformer(ViT)
学習するステップ:STEP 5〜8、STEP 16〜17

3-2. 物体検出(Object Detection)

画像分類の次のステップです。「何が」映っているかだけでなく、「どこに」あるかも分かります。

🎯 物体検出とは?

定義:画像の中の「どこに」「何が」あるかを特定するタスク

質問形式で言うと:「この画像のどこに、何がありますか?」

ポイント:
・画像の中から複数の物体を検出できる
・各物体の位置を矩形(Bounding Box)で示す
・各物体のクラス信頼度も出力する

【物体検出の流れ】 ステップ1:画像を入力 入力:1枚の画像(例:街の風景写真) ステップ2:モデルが物体を検出 処理:YOLOやFaster R-CNNなどのモデルが分析 ステップ3:検出結果を出力 出力(複数): 検出1: クラス「人」, 位置(100, 200, 150, 350), 信頼度 98% 検出2: クラス「車」, 位置(300, 150, 500, 280), 信頼度 95% 検出3: クラス「信号機」, 位置(450, 50, 480, 120), 信頼度 92% ※位置は (x1, y1, x2, y2) で、左上と右下の座標を表す

📦 Bounding Box(バウンディングボックス)とは?

物体を囲む矩形の枠のことです。「境界ボックス」とも呼ばれます。

【Bounding Boxの表現方法】 方法①:(x, y, width, height) 形式 左上の座標(x, y)と、幅(width)、高さ(height)で表現 例:(100, 200, 50, 150) → 左上が(100, 200)、幅50、高さ150 方法②:(x1, y1, x2, y2) 形式 左上の座標(x1, y1)と、右下の座標(x2, y2)で表現 例:(100, 200, 150, 350) → 左上が(100, 200)、右下が(150, 350) → どちらの形式が使われるかは、モデルやライブラリによって異なる
✅ 物体検出のポイントまとめ

入力:1枚の画像
出力:複数の検出結果(クラス + 位置 + 信頼度)
位置情報:あり(Bounding Boxで表現)
代表モデル:YOLO(v5, v8)、Faster R-CNN、DETR
学習するステップ:STEP 9〜12

3-3. セマンティックセグメンテーション(Semantic Segmentation)

画像をピクセル単位で理解する、最も詳細なタスクの1つです。「塗り絵」をイメージすると分かりやすいです。

🎨 セマンティックセグメンテーションとは?

定義:画像の各ピクセルが「何か」を分類するタスク

質問形式で言うと:「この画像の各点(ピクセル)は何ですか?」

ポイント:
・画像全体をピクセル単位で色分けする
・「道路はここ」「空はここ」「建物はここ」と塗り分ける
・同じクラスの物体は区別しない(車Aも車Bも同じ「車」色)

【セマンティックセグメンテーションの流れ】 ステップ1:画像を入力 入力:1枚の画像(例:街の風景、サイズ 640×480ピクセル) ステップ2:モデルが各ピクセルを分類 処理:U-NetやDeepLabなどのモデルが分析 ステップ3:ピクセルごとのラベルを出力 出力:入力と同じサイズ(640×480)のラベルマップ – ピクセル(0, 0) → ラベル「空」 – ピクセル(0, 1) → ラベル「空」 – ピクセル(100, 200) → ラベル「道路」 – ピクセル(200, 300) → ラベル「車」 …(640×480 = 307,200ピクセル分の結果) 通常、ラベルは色で可視化される: – 空 → 青色 – 道路 → 灰色 – 車 → 赤色 – 歩行者 → 緑色 – 建物 → 茶色
✅ セマンティックセグメンテーションのポイントまとめ

入力:1枚の画像
出力:ピクセルごとのラベル(入力と同じサイズ)
特徴:同じクラスの物体は区別しない(車A、車Bも同じ「車」)
代表モデル:U-Net、DeepLab v3+、FCN
学習するステップ:STEP 13

3-4. インスタンスセグメンテーション(Instance Segmentation)

セマンティックセグメンテーションをさらに進化させ、個々の物体を区別できるようにしたタスクです。

🔍 インスタンスセグメンテーションとは?

定義:個々の物体を分離して、それぞれのマスクを生成するタスク

質問形式で言うと:「この画像の各物体の輪郭はどこですか?」

ポイント:
・物体検出 + セグメンテーションの組み合わせ
・同じクラスでも個体ごとに区別できる(「車A」「車B」「車C」)
・各物体の正確な輪郭(マスク)を出力

【セマンティック vs インスタンスの違い】 例:3匹の犬が映っている画像 【セマンティックセグメンテーションの場合】 出力:3匹まとめて「犬」という1つの領域 → 「ここが犬のエリアです」という情報のみ → 何匹いるかは分からない 【インスタンスセグメンテーションの場合】 出力: – 犬1のマスク(ピクセル単位の輪郭) – 犬2のマスク(ピクセル単位の輪郭) – 犬3のマスク(ピクセル単位の輪郭) → 「犬が3匹いて、それぞれの輪郭はこれです」という情報 → 個体数が分かり、個別に処理できる
✅ インスタンスセグメンテーションのポイントまとめ

入力: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タスクの関係性と選び方

これらのタスクは独立しているのではなく、関連し合っています。タスクの階層構造を理解しておきましょう。

【CVタスクの階層構造】 レベル1:画像分類(最も基本) └── 画像全体を1つのラベルで判定 出力:「犬」 ↓ レベル2:物体検出(分類 + 位置) └── 複数物体のクラスと位置を特定 出力:「犬」が(100, 200)にある、「猫」が(300, 150)にある ↓ レベル3:セマンティックセグメンテーション(ピクセル単位) └── 全ピクセルにラベルを付ける 出力:ピクセルごとのクラス(「ここは犬」「ここは背景」) ↓ レベル4:インスタンスセグメンテーション(個体分離 + ピクセル単位) └── 物体検出 + セグメンテーション 出力:「犬1のマスク」「犬2のマスク」(個体ごとに分離) ↓ 下に行くほど… ✓ より詳細な情報が得られる ✓ より複雑なモデルが必要 ✓ より多くの計算リソースが必要 ✓ より多くのアノテーション(ラベル付け)が必要
💡 実務でのタスク選びのポイント

実務では「どのタスクが必要か」を見極めることが重要です。必要以上に複雑なタスクを選ぶと、コストが無駄になります。

選択の目安:
・「これは何か」だけ知りたい場合 → 画像分類(最も軽量)
・「どこにあるか」も知りたい場合 → 物体検出
・「正確な輪郭」が必要な場合 → セグメンテーション
・「個々の物体を区別」したい場合 → インスタンスセグメンテーション

例:工場の不良品検査
・「良品/不良品」だけ知りたい → 画像分類
・「どこに傷があるか」も知りたい → 物体検出
・「傷の面積」を測定したい → セグメンテーション

🌍 4. 実務での応用事例

コンピュータビジョンは、すでに私たちの身の回りで広く使われています。具体的な事例を見てみましょう。

4-1. 自動運転 – CVの最前線

自動運転は、CVの最も複雑で挑戦的な応用分野の1つです。複数のCVタスクをリアルタイム同時に実行する必要があります。

【自動運転でのCV処理フロー】 1. センサー入力(毎秒30フレーム以上) └── フロントカメラ、サイドカメラ、リアカメラなど 2. 物体検出 └── 「前方50mに歩行者」「右側に車」を検出 └── 処理時間:約30ミリ秒 3. セマンティックセグメンテーション └── 「道路」「歩道」「車線」を認識 └── 走行可能領域を特定 4. 車線認識 └── 白線・黄線を検出 └── 車線維持支援に使用 5. 追跡(Tracking) └── 検出した物体を追跡し、動きを予測 └── 「この歩行者は右に移動している」 6. 判断・制御 └── 全ての情報を統合 └── アクセル/ブレーキ/ステアリングを制御 ※全ての処理を合わせて、約100ミリ秒以内に完了する必要がある

4-2. 医療画像診断 – AIが命を救う

医療分野は、CVが人間を超える精度を発揮している分野の1つです。

【医療画像診断の例:肺のレントゲン分析】 入力:胸部レントゲン画像(1枚) 処理: 1. 画像の前処理(コントラスト調整など) 2. CNNモデルで特徴を抽出 3. 各疾患の確率を計算 出力: – 診断結果:「肺炎の疑いあり」 – 信頼度:95% – 病変位置:右肺下葉(ヒートマップで可視化) – 推奨:「専門医による精密検査を推奨」 活用方法: → 医師の診断を支援(最終判断は医師が行う) → 見落としを防ぐ(ダブルチェック) → 離島や医師不足地域での遠隔診断支援

4-3. 製造業の品質検査 – 24時間稼働する検査官

製造ラインでの品質検査は、CVの最も普及している応用分野の1つです。

【品質検査の流れ】 ステップ1:撮影 └── 製品を高速カメラで撮影(毎秒100個以上) └── 照明条件を統一(安定した検査のため) ステップ2:スクリーニング(画像分類) └── 良品/不良品をまず大まかに分類 └── 良品 → 出荷ラインへ └── 不良品の疑い → 詳細検査へ ステップ3:詳細検査(物体検出) └── 不良品の場合、欠陥の位置を特定 └── 「左上に傷」「右下に汚れ」などを検出 ステップ4:欠陥分析(セグメンテーション) └── 欠陥の正確な輪郭を特定 └── 面積を測定(0.5mm²など) ステップ5:判定 └── 軽微な欠陥(0.3mm²以下) → 再加工ライン └── 重大な欠陥(0.3mm²以上) → 廃棄ライン メリット: – 人間の検査員より10倍以上高速 – 24時間稼働可能 – 判定基準が一定(疲れない) – 不良品の流出を90%以上削減した事例も

4-4. その他の応用分野

分野 CVの活用方法 具体例
小売・EC 商品認識、在庫管理、顧客行動分析 Amazon Go(無人店舗)、商品の画像検索、レジなし決済
農業 作物の健康診断、収穫時期判定 ドローンによる農地監視、自動収穫ロボット、雑草検出
セキュリティ 異常検知、人物追跡、侵入検知 監視カメラの自動分析、不審行動検知
スポーツ 選手追跡、動作分析、審判支援 VAR(ビデオ判定)、選手のパフォーマンス分析

⚠️ 5. CVの課題と今後の展望

コンピュータビジョンは強力ですが、まだ解決すべき課題もあります。

5-1. 技術的な課題

課題 具体的な問題 対策
遮蔽 物体の一部が隠れていると認識精度が低下 遮蔽を含む訓練データの充実、複数カメラの使用
照明条件 明るさや光の当たり方で精度が変化 様々な照明条件でのデータ拡張、赤外線カメラの併用
視点の変化 同じ物体でも角度で見え方が大きく異なる 多様な角度のデータで訓練、3Dモデルの活用
データセットのバイアス 訓練データに偏りがあると特定条件でのみ動作 多様で代表的なデータセットの構築

5-2. 今後のトレンド

【CVの未来を形作る4つのトレンド】 ① マルチモーダルAI – 画像とテキストの融合 ・CLIP、GPT-4Vなど ・「この画像の何がおかしい?」と自然言語で質問できる → STEP 19で学習 ② 3Dコンピュータビジョン – 2Dから3Dへ ・NeRF、3D物体検出 ・写真から3Dモデルを自動生成 ③ エッジAI – デバイス上でのリアルタイム処理 ・Face ID、ドローンの自律飛行 ・プライバシー保護、低遅延 ④ 汎用ビジョンモデル – 1つのモデルで何でもできる ・SAM(Segment Anything Model) ・タスクごとにモデルを作る必要がなくなる → STEP 18で学習

📝 練習問題

このステップで学んだ内容を確認しましょう。

問題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. 特徴の設計方法
  2. 精度
  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

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE