Dilbert漫画の画像分類アルゴリズムを開発するための一般的なアプローチ

自己開発の練習として、私はDilbertの漫画の特定のセルを与えられた漫画(Dilbert、PHB、Ratbertなど)に存在する文字を識別できる単純な分類アルゴリズムを開発したいと考えています。

私はこれを行うための最善の方法は、(1)それを一連の特徴に変換する画像にいくつかのアルゴリズムを適用すること、(2)トレーニングセットと多くの可能な機械学習アルゴリズムのうちの1つを使用して、特定の文字がセル内に存在する特定の特徴の欠如。

だから私の質問は –
(a)これは正しいアプローチか、(b)いくつかの分類アルゴリズムとテストするMLアルゴリズムがあるため、正しいものを見つけるための良い方法は何か、(c)どのアルゴリズムを始めるか私たちが基本的に漫画の分類練習を行っていることを考えると、

ベストアンサー

だから私はあなたのステップ1(画像にアルゴリズムを適用し、それを一連の機能に変換する)の正しい軌道に乗っていると思います。

This project is more challenging that most ML problems because
here you will actually have to create your training data set from
the raw data (the individual frames comprising the cartoons). For
instance, grab a frame, identify two characters in that frame,
Dilbert and the character with horns (Dilbert’s boss i believe,
don’t know his name), extract those two characters from that frame
and append to each the appropriate class label (e.g., “1” for
Dlibert).

Step 1

Dilbertの漫画を構成する各フレームから個々の文字を抽出するには、各フレームの
スペクトル分解
を提案します。あなたがこのテクニックに精通していない場合、そのコアでは、それは単なる固有ベクトル分解です。

Python(またはR、Python-to-Rバインディング( RPy
など)を使用することができれば)を好きなら、 sklearn を参照してください。特に、この優れたライブラリ(もともと SciPy
scikits
プロジェクトの傘の下で開発され、行列計算にNumPy +
SciPyを使用していました)は、画像分割のアルゴリズムがいくつかあります。 href =
“http://scikit-learn.org/stable/auto_examples/cluster/plot_segmentation_toy.html”
rel =
“noreferrer”>スペクトルクラスタリングを参照してください。あなたのプロジェクトのこのステップでは、これらの2つのscikitsを見たいでしょう。

  • sklearn.feature_extraction
    (特に画像サブモジュール)

  • sklearn.cluster.spectral_clustering

Included with these two modules are two good example scripts,
one segmenting a digital photograph and the
other segmenting an image comprised of three
partially super-imposed circles with minimal contrast w/r/t each
other and w/r/t the background–both, i suspect are more difficult
problems that the decompositions you will need to perform. In other
words, sklearn has two complete,
well-documented example scripts included in the source
distribution, both of which process data similar to yours. Either
or both would be an excellent template for this step.

ステップ2

So that’s the first step; here’s the second: sort all
of the components of the decomposed images into groups, one
group for each Dilbert character
. Next, assign a class label
to each Group, e.g., if there are four characters from your
decomposition step, then a decent choice for class labels is “0”,
“1”, “2”, and “3.” Append those class labels to the component
matrices (the decomposition products from step 1) so each character
matrix is mapped to its corresponding class (Dilbert
character).

ステップ3

Select a suitable ML technique. You have many choices for this
step; the only criteria are that the technique is in the
supervised category (because you have assigned class
labels to your data) and that it function as a classifier
(i.e., it returns a class label, versus a regressor which outputs a
numerical value). Given this is a personal project, i would chose
the one that seems most interesting to you. A few that satisfy the
criteria i just mentioned are: multi-layer perceptron
(neural network), support vector machine (SVM), and
k-nearest neighbors (kNN).

ステップ4

分類器のトレーニング、検証、テスト

Alternative Technique:
Template Matching

ステップ1が完了すると(各画像はオブジェクトのセットに分解されますが、その一部は文字を表すことは間違いありません)、これらの分解製品を手作業で選別し、漫画の各キャラクターの標本を収集することができます。
テンプレート です。

次に、イメージからセグメント化されたオブジェクトをこの一意のテンプレートのセットと比較します。 scikit-image 、別のscipy
scikitでは、テンプレート画像と候補画像を渡す match_template
というメソッドを使うことができ、このメソッドはピクセルを示す2D配列を返します(-1と1との間の)1対1の相関を示す。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です