色ヒストグラムとk-NNで画像分類を実装する【画像処理100本ノック】
約 2 分
目次
概要
Q.84〜87では、画像を色ヒストグラムの特徴ベクトルへ変換し、距離にもとづくクラス分類、 Accuracyによる評価、k-NNへ発展させます。
色ヒストグラムを特徴量にする(Q.84)
RGB各チャンネルを4階調へ減色し、チャンネルごとに4ビンのヒストグラムを作ります。 画像1枚は合計12次元のベクトルになります。
[R0, R1, R2, R3, G0, G1, G2, G3, B0, B1, B2, B3]
画素をそのまま比較する場合と異なり、画像内で物体の位置が少し変わっても色の分布が近ければ 似た特徴になります。一方、空間的な配置は失われます。
最近傍のクラスを選ぶ(Q.85)
テスト画像と各学習画像の特徴ベクトル間で距離を計算し、最も近い学習画像のラベルを予測値に します。
const distance = Math.sqrt(
feature.reduce((sum, value, i) => sum + (value - train[i]) ** 2, 0),
);
Accuracyで評価する(Q.86)
予測ラベルと正解ラベルを比較し、正解数をテスト画像数で割ります。分類器を作るだけでなく、 同じデータと指標で変更前後を比べられるようにします。
k-NNへ拡張する(Q.87)
最も近い1件だけでなく、距離が近いk件のラベルで多数決します。1つの学習画像のノイズや
外れ値に予測が左右されにくくなります。同数の場合の規則やkの選び方も結果へ影響します。
まとめ
この4問で、前処理、特徴抽出、距離計算、予測、評価という画像認識の最小構成を確認できます。 後続のk-meansでは正解ラベルを使わず、特徴ベクトル同士の距離からグループを作ります。
おすすめの記事
最新の記事
よく読まれている記事
タグから探す
- javascript129
- typescript66
- node.js54
- linux54
- 画像処理48
- amazon-aws47
- アルゴリズム37
- canvas35
- html529
- 画像処理100本ノック27
- php24
- centos24
- python22
- 競技プログラミング21
- mac21
- mysql20
- opencv17
- 雑談16
- 機械学習16
- docker16
- wordpress15
- atcoder14
- apache12
- データベース12
- amazon-s312
- red-hat12
- prisma12
- ubuntu11
- github10
- git10
- react10
- mariadb10
- vue.js9
- aws-cdk9
- css38
- 可視化8
- 小ネタ8
- next.js8
- nestjs8
- amazon-lightsail7
- ブログ6
- cms6
- oracle6
- perl6
- gitlab6
- iam5
- amazon-ec25
- 資格試験5
- aws-amplify5
- curl4