@ogawanaoki771

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

機械学習での開曲線(open curves)と閉曲線(closed curves)を分類する二値分類タスク 

Discussion

問題の背景

  • 私は、開曲線(open curves)と閉曲線(closed curves)を分類する二値分類タスクに取り組んでいます。

  • レイキャスト法、輪郭追跡、Euler数など、判定アルゴリズムそのものを実装する方法ではなく、学習によって分類境界を獲得する機械学習手法について議論したいです。

  • タスクは、少数の例から幾何学的な概念を学習し、未知の図形へ一般化することを目的としており、機械学習におけるBongard問題と類似した設定です。

  • 入力の画像形式は、ラスタ画像、ベクタ画像問いません。

  • また、人手で設計した幾何学的特徴量は一切使用しないと仮定します。

  • 本質問では、モデルが生の入力(ラスタ画像または座標列)から概念を獲得する能力を評価したいため、人手で設計した特徴量や、「開曲線・閉曲線」の判定に直接利用できる幾何学的前処理・特徴抽出は比較対象に含めないものとします。

  • なお、本質問では、ImageNetやModelNetなど外部データセットによる事前学習、自己教師あり学習、転移学習、および外部データを用いた特徴抽出は行わないものとします。利用可能な教師ありデータは、上記12サンプルのみとします。

  • ラベル付き・ラベルなしを問わず、外部データを用いた学習は一切行わないものとします。

評価条件

  • 学習データ: 12サンプル(各クラス6サンプル)以下

  • テストデータ: 100サンプル

  • 事前学習なし

  • 転移学習なし

  • データ拡張なし

  • テストデータは、学習時とは異なる図形ファミリー(例:訓練では円・三角形・折れ線のみ、テストでは星形・スプライン曲線など)から生成しています。

  • 事前に「開曲線(open curves)と閉曲線(closed curves)を分類する二値分類タスク」を知らない状態であること。

  • 輪郭抽出や細線化など、人手で画像から幾何学情報を抽出する前処理は用いないものとします。

  • 入力が最初から座標列や点列として与えられる場合は、その表現をそのまま利用することは許容します。

  • 上の表現は、曖昧かもしれません、ベクタ画像は輪郭表現とも呼べるからです。

  • 人手で設計した特徴量や、問題固有の幾何学情報を抽出する前処理は使用しないものとします。具体的には、輪郭追跡、細線化(Skeletonization)、Euler数、Hu Moments、Fourier Descriptor、HOG、SIFTなどを入力特徴として利用する方法は対象外とします。

質問内容

比較対象(ベースライン)としてどのような手法を採用するのが妥当でしょうか。

例えば、以下のような手法が候補になると考えています。

  • SVM(RBFカーネル)
  • k近傍法(k-NN)
  • ランダムフォレスト
  • MLP(小規模な全結合ネットワーク)
  • これらの制約は、事前知識や大規模データへの依存を排除し、純粋に少数例から幾何学的概念を獲得・一般化する能力を比較することを目的として設定しています。
  • これら以外にも、少数データかつ未知の図形への一般化性能を評価する上で、適切なベースラインがあれば教えていただきたいです。

さらに知りたい内容

  • 実験目標としてAccuracy80%以上を目安としています。
  • 上の条件下で80%以上を達成した報告例や、達成可能と思われる手法があれば知りたいです。

なお、以下の条件は許容するものとします。

学習データは恣意的に選択してよい、
テスト時にハイパーパラメータを調整してよい。
(ただし、利用できる情報はテストスコアのみとする)
>>>実運用ではなく、ベースライン探索のための条件です。

  • 私の目的は、特定のデータセットで最高精度を競うことではなく、このような極端なFew-shotかつ未知図形への一般化という条件において、比較対象として妥当なベースラインを知ることです。また、この条件で80%以上のAccuracyやF1 Scoreを達成可能な機械学習手法があるかどうかについても、実例や知見をご教示いただけると幸いです。

私が取り組んだこと

まず、SVM(RBFカーネル)を評価したところ、

学習データ:12枚
テストデータ:100枚

という条件で、Accuracyは約70%でした。

その後、実装を工夫したところ、

学習データ:4枚
テストデータ:90枚

という条件では、以下の結果が得られました。

Accuracy:74.44%
Precision:70.77%
Recall:92.00%
F1 Score:80.00%

  • なお、この結果は、ある乱数シードと学習サンプルの組み合わせで得られた最良例です。学習サンプル数やサンプルの選択による性能のばらつきが大きく、一般に4枚が12枚より優れていることを示すものではありません。
  • 現時点では、4枚の学習データを用いた条件で最良の結果が得られましたが、この傾向はシードや学習サンプルの選択に強く依存しており、再現性については今後さらに検証が必要と考えています。
  • この結果は、複数のシード・学習サンプルの組み合わせを試した中で最も良かったケースです。平均性能ではありません。
0 likes
This answer has been deleted for violation of our Terms of Service.

Your answer might help someone💌