Slide 1

Slide 1 text

3Dクラスタリングと距離学習 板垣正敏 2021-11-14 @Python機械学習勉強会 in 新潟

Slide 2

Slide 2 text

今⽇お話しすること š モチベーション š ModelNet10データセットを⽤いた3次元データのクラスタリング š Voxel化したデータのk-means++/t-SNEによるクラスタリング š 10クラスの識別器として学習させた3D-CNNモデルの特徴ベクトルを使ったクラスタリング š Autoencoderの隠れベクトルを使ったクラスタリング š k-means++による疑似ラベル⽣成と3D-CNN訓練によるクラスタリング š AugmentationとTriplet Lossによる距離学習から得た特徴ベクトルのクラスタリング š 上記の実験結果 š まとめ š コード(Jupyter Notebook)は下記で公開している š https://github.com/masa-ita/3d_clustering_experiments 2

Slide 3

Slide 3 text

モチベーション š 新潟国際情報⼤学藤⽥教授と、新潟県歴史博物館、東京国⽴博物館、九州国⽴博物館の研究者の ⽅々、BSNアイネットと私で、考古学へのディープラーニング適⽤を研究している中で、縄⽂⼟器 の3Dスキャニングデータをもとにしたクラスタリングが題材に上った。 š 縄⽂⼟器のスキャンはまだ始まったばかりであったため、ModelNetを使って分析モデルの調査を ⾏うことになった。 š 深層学習によるクラスタリングの⼿法を調べているうち、Autoencoderの隠れベクトルに距離学 習を組み込んでいる例を知り、距離学習⾃体がクラスタリングに使えないかと考えた。 3 https://arxiv.org/abs/2009.04091v1

Slide 4

Slide 4 text

今回使ったデータ︓ ModelNet10 Dataset š プリンストン⼤学が公開している3 次元物体識別ベンチマーク⽤データ セット š ModelNet10は4900のオブジェクト から成るCADデータを元にした3D オブジェクトデータセット š ⾊、階調のなどテクスチャのない データ š クラス数によりModelNet10と ModelNet40がある š ライセンスは学術研究に限定 š 今回はtrimeshライブラリを使い、 64x64x64のVoxelデータにリサイズ 変換後使⽤ 4

Slide 5

Slide 5 text

クラスタリングと可視化のための⼿法 š k-means š クラスタリングの代表的⼿法 š ランダムに選んだ中⼼(セントロイド)からの距離をもとに初期クラスターを形成、クラスターの中⼼の 再計算とクラスターの⽣成を繰り返す⽅法。 š PCA(主成分分析) š 分散共分散⾏列の固有ベクトルを⽤いて、相関のある特徴量から互いに相関のない特徴量空間へのマッピ ングを⾏う⽅法。 š 次元削減にも⽤いられる。 š t-SNE š 次元削減とクラスター顕著化の⼿法。 š ⾼次元空間の中のサンプル(点)を中⼼とする t分布を仮定し、距離から類似度を計算。Kullback–Leibler 情報量を指標として⽬的とする低次元空間に類似分布を反復再現し、低次元へのマッピングを⾏う⽅法。 5

Slide 6

Slide 6 text

特徴量抽出︓4種類の⽅法 š Raw Features š 64x64x64のVoxelの3Dデータ(3階のテンソル)を226224次元のフラットなベクトルに変換 š 3D-CNN Classifier š 分類器として訓練した3D-CNNから得たベクトルを特徴量とする š Autoencoder š ⼊⼒を再現するように学習させたAutoencoderの隠れベクトルを特徴量とする š k-means Pseudo Label 3D-CNN š k−means法での疑似ラベル⽣成と3D-CNNの学習を繰り返す š Triplet Loss with Augmented Data š サンプルをデータ拡張により⽔増して1つのクラスとし、Triplet Lossで距離学習させ特徴量とする 6

Slide 7

Slide 7 text

特徴量抽出器とし ての3D-CNN š 3D-CNNを使った分類器を学習さ せる š 学習済みの3D-CNNで分類層の⼀ つ前の出⼒(活性化関数適⽤前) を特徴量とする 7 この層の出⼒ を特徴量とし て取り出す

Slide 8

Slide 8 text

Autoencoder š ⾃⼰学習であるAutoencoder の隠れベクトルを特徴量として クラスタリングを⾏う⼿法 š Ex. š https://github.com/deve lopfeng/DeepClustering š http://ecmlpkdd2017.ijs.s i/papers/paperID345.pdf š 隠れベクトルは32768次元 š 他のモデルのようにGAP後の 128次元では再現性が低いため、 ⾼次元なモデルを使⽤した š バッチサイズ10、エポック数 200 8 Encoderの出⼒ を特徴量とする

Slide 9

Slide 9 text

k-means++による 疑似ラベル反復学習 š DeepCluster &DeeperCluster by Facebook Research š Deep Clustering for Unsupervised Learning of Visual Features š https://arxiv.org/abs/1807.05520 š https://github.com/facebookresearch /deepcluster š Unsupervised Pre-Training of Image Features on Non-Curated Data š https://arxiv.org/abs/1905.01278 š https://github.com/facebookresearch /deepercluster 9

Slide 10

Slide 10 text

距離学習とは š 多次元の特徴量(⾔い換えれば埋め込み ベクトル)を⽣成する上で、下記のよう に学習させる š 似た対象の埋め込みベクトル同⼠は近く š 似ていない対象の埋め込みベクトル同⼠は 遠く š 検索や顔認証、異常検知などの分野で提 案されてきた⼿法 š 深層学習以前 š マハラノビス距離学習 š 深層学習以後 š Siamese Network š Triplet Network š L2 Softmax Network 10

Slide 11

Slide 11 text

Triplet Lossについて š 基準となるサンプル(アンカー)と、似てい るサンプル(ポジティブ)、似ていないサン プル(ネガティブ)間の距離を⽐較 š 似ていないサンプル同⼠の距離が、似ている サンプル同⼠の距離よりも設定したマージン だけ⼤きいように学習する š 学習には適切なTripletを選択する必要がある š Hard Triplet 𝑑!" > 𝑑#" š Semi-Hard Triplet 𝑑!" + 𝑚 > 𝑑#" https://copypaste-ds.hatenablog.com/entry/2019/03/01/164155 11 https://omoindrot.github.io/triplet-loss

Slide 12

Slide 12 text

データ拡張による教師なし距離学習 š 1サンプルを1クラスとし、データ拡張をする ことでTripletを⽣成し距離学習 š データ拡張にはVolumentation-3Dを使⽤ š 距離学習にはTensorFlow Addonsの TripletSemiHardLossを使⽤ š モデルの損失関数を変えるだけでバッチ内の ⼀番難しいTripletの組み合わせで損失を計算 する š 1バッチ=8サンプル×4拡張=32個で実験 š 2エポック程度で学習は進まなくなる Sample1 AugSample1 AugSample2 AugSample3 AugSample4 Sample2 AugSample5 AugSample6 AugSample7 AugSample8 anchor positive negative 12

Slide 13

Slide 13 text

実験結果 13

Slide 14

Slide 14 text

クラスタ数による クラスタ内残差平⽅和の変化 14 Raw Features Autoencoder k-means Pseudo Label Triplet Loss 3D-CNN Classifier k=10に変曲点

Slide 15

Slide 15 text

クラスタとラベルの対応関係 15 Raw Features Autoencoder k-means Pseudo Label Triplet Loss 3D-CNN Classifier クラスター とラベルが 1対1対応 クラスター とラベルの 関係は はっきりし ない

Slide 16

Slide 16 text

PCAによる可視化︓クラスラベル 16 Raw Features Autoencoder k-means Pseudo Label Triplet Loss 3D-CNN Classifier クラスター が最もはっ きりしてい る

Slide 17

Slide 17 text

PCA正規化後のt-SNE︓クラスラベル 17 Raw Features Autoencoder k-means Pseudo Label Triplet Loss 3D-CNN Classifier クラスター がはっきり している 最もクラス ターが不鮮 明

Slide 18

Slide 18 text

PCA正規化後のt-SNE︓クラスターID 18 Raw Features Autoencoder k-means Pseudo Label Triplet Loss 3D-CNN Classifier

Slide 19

Slide 19 text

まとめ š Voxelデータによる3次元オブジェクトのクラスタリングを試⾏した š 特徴抽出を⾏う3D-CNNの事前学習データによるバイアスを避けるため、教師なし学習によるク ラスタリングを前提とし、下記の3つを⽐較した š Autoencoder š クラスタリングによる疑似ラベル⽣成と3D-CNNの学習の⼆重ループ š データ拡張とTriplet Lossによる距離学習 š 疑似ラベル⽣成を⽤いた3D-CNNの学習では、分離性能の良いクラスタが得られたが、特徴量⾃ 体が初期設定のクラスタ数に影響を受けていることが確認された š データ拡張とTriplet Lossによる距離学習では、学習が早い段階で収束してしまうため、抽象度の ⾼い特徴抽出ができなかった š Autoencoderはバイアス無しに特徴量を学習できる⼿法である 19

Slide 20

Slide 20 text

クラスタリングのための特徴量抽出は どうあるべきか︖ š クラスタリングとは「似たもの同⼠を集める」ことである。 š したがって、クラスタリングのための特徴量抽出は、「データの中の共通点を⾒つけて抽出する」こと が望ましく、これは分類問題と共通することである。 š 他⽅で、この学習は「共通点」以外の情報を「捨てている」可能性を意味している。 š ⼀⽅、各サンプルを1つのクラスとみなして同⼀性の学習を⾏う⼿法では、「他とは異なる特徴」を学 習することになり、「共通性」のウエイトは低くなると考えられる。 š Autoencoderによる特徴量抽出では、こうした偏りがない特徴量抽出が⾏われていると考えられる。 š 単なるグルーピングではなく、埋め込みベクトルの空間内の位置関係などを分析に使⽤する場合には、 こうした共通点の強調や特異性の強調などのバイアスがかからない特徴量抽出が望ましいと考える。 š ただし、Autoencoderの学習には⼤量のデータと計算時間を要するため、少量のデータのクラスタリ ングには適していない。また、異常検知にも⽤いられている学習したデータに近くないものについては 再現できない特性からわかるように、学習対象にない特徴については抽出できない可能性があることに 留意する必要がある。 20