GENZITSU / UsefulMaterials

34 stars 0 forks source link

weekly useful materials - 06/22 - #104

Open GENZITSU opened 1 year ago

GENZITSU commented 1 year ago

Static Quantization with Hugging Face optimum for ~3x latency improvements

huggign face optimumを利用してdistil-bertのCPU推論速度を76ms→25msまで高速させるチュートリアル。 static quantizationによりモデルサイズは約半分になる一方で、精度は92.5% → 92.24%とほぼ低下しないことを確認している。

スクリーンショット 2022-06-15 21 43 22

コメント

メモ

出典

GENZITSU commented 1 year ago

TextPruner による大規模言語モデルの軽量化 / Large language model pruning using TextPruner

ACL2020 demoに採択されたBERT系モデルの軽量化ライブラリ、TextPrunerの紹介

スクリーンショット 2022-06-15 22 06 01

スクリーンショット 2022-06-15 22 06 19

スクリーンショット 2022-06-15 22 08 16

スクリーンショット 2022-06-15 22 08 42

スクリーンショット 2022-06-15 22 09 53

スクリーンショット 2022-06-15 22 10 10

スクリーンショット 2022-06-15 22 10 19

スクリーンショット 2022-06-15 22 12 10

スクリーンショット 2022-06-15 22 12 21

スクリーンショット 2022-06-15 22 12 31

スクリーンショット 2022-06-15 22 13 09

スクリーンショット 2022-06-15 22 14 13

コメント

20%削減程度だとモデルサイズ/推論速度もそこまで減らないので、実用的かと言われると微妙かもしれない。
ただ、軽量化テクの一つとして頭の片隅に残しておきたい。

出典

GENZITSU commented 1 year ago

お手軽で高速なFastAPIでCloudRunに推論APIを公開するまで

表題のチュートリアル。

コメント

flaskからの乗り換えをしようかと検討していたところだったので、助かる。

出典

お手軽で高速なFastAPIでCloudRunに推論APIを公開するまで

GENZITSU commented 1 year ago

Deploying Transformers on the Apple Neural Engine

coremltoolsを用いてhaggingface transformerをiphone推論用に最適化する公式チュートリアル

コメント

メモ

出典

Deploying Transformers on the Apple Neural Engine

GENZITSU commented 1 year ago

SSII2021 [TS3] 機械学習のアノテーションにおけるデータ収集​ 〜 精度向上のための仕組み・倫理や社会性バイアス 〜

アノテーション行う際に気を付けるべき点と対応策(論文)の紹介がされているスライド。

以下特に有益なスライドを抜粋

スクリーンショット 2022-06-15 23 35 24

スクリーンショット 2022-06-15 23 35 37

スクリーンショット 2022-06-15 23 36 14

スクリーンショット 2022-06-15 23 36 27

スクリーンショット 2022-06-15 23 36 49

スクリーンショット 2022-06-15 23 36 58

スクリーンショット 2022-06-15 23 37 05

スクリーンショット 2022-06-15 23 37 14

スクリーンショット 2022-06-15 23 37 21

スクリーンショット 2022-06-15 23 37 31

スクリーンショット 2022-06-15 23 37 50

スクリーンショット 2022-06-15 23 38 35

スクリーンショット 2022-06-15 23 38 46

スクリーンショット 2022-06-15 23 39 01

コメント

実務でデータセット作る際にとても勉強になる。

出典

SSII2021 [TS3] 機械学習のアノテーションにおける データ収集​ 〜 精度向上のための仕組み・倫理や社会性バイアス 〜

GENZITSU commented 1 year ago

SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜

小データ・小ラベルな状況で有力な自己教師あり表現学習とTest time adaptation & source free domain adaptationという手法の解説がなされているスライド。

スクリーンショット 2022-06-17 11 01 58

スクリーンショット 2022-06-17 11 02 23

スクリーンショット 2022-06-17 11 02 54

スクリーンショット 2022-06-17 11 03 29

自己教師あり学習について

スクリーンショット 2022-06-17 11 07 47

スクリーンショット 2022-06-17 11 07 54

スクリーンショット 2022-06-17 11 08 41

スクリーンショット 2022-06-17 11 08 16

スクリーンショット 2022-06-17 11 08 25

Test time adaptation & source free domain adaptation

スクリーンショット 2022-06-17 11 11 51

スクリーンショット 2022-06-17 11 12 07

スクリーンショット 2022-06-17 11 12 24

スクリーンショット 2022-06-17 11 12 36

スクリーンショット 2022-06-17 11 12 46

コメント

わかりやすさが尋常じゃない...

test time adaptationは実務にめちゃくちゃ役立ちそう。

出典

SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜

GENZITSU commented 1 year ago

特許庁主催のAIコンペで1位、ヤフーの画像検索技術を使った優勝解法紹介

特許庁がnishikaで開いた類似商標画像検索コンペティションで1位を取った手法の紹介。 2位が0.685なのに対して1位が0.734と大差をつけているのがポイント。

コンペ概要

実行環境や推論速度の制限があることがポイント

タスク: 特許庁が提供した約80万枚の商用画像検索用データセットの中から、実際に審査官が類似していると判定した画像を探し出すこと。
評価方法: Recall@20
モデル実行環境 vCPU8コア、32GBメモリ、1TBストレージ、Tesla T4 GPUx1 推論速度の制限: 画像一枚の検索処理を8秒以内に完了すること

全体概要

スクリーンショット 2022-06-21 23 11 24

コンペ特有の工夫: phashを用いたpositive pairの割り当て

訓練データ上は正解データが1枚しか与えられていないが、実際にはもっと類似画像があるため何らかの方法でpositive pairを割り振る必要があった。

そこで、各画像のphashを計算し、それらの値が近しいものでtrain内 / cite内でグループ化し、正解として与えられている1つのペア情報からグループのマージをすることでpositive pairの割り当てを実施。

スクリーンショット 2022-06-21 23 13 47

ちなみにphashとはperceptual hashのことで、似ている画像であればあるほど似たようなhash値になるような値で、詳細はこのブログが詳しい。
また、imagehashというライブラリが存在する模様

  1. 画像を縮小する。8x8よりも大きいサイズにする(例えば32x32など)。
  2. グレースケール化する。
  3. DCTする。
  4. 低周波数成分の8x8だけを取り出す。
  5. 直流成分を除いた低周波数成分の平均値を算出する。
  6. 平均値よりも高いか低いかで2値化する。
  7. ラスタスキャン順など何らかの順で一列にし、64bitのハッシュを得る。

phashではなくCNNの特徴を用いたグループ化も試されていたが、phashよりも結果が悪かったとのこと。
定性的に見るとCNN特徴の方が結果が良かったようだが、今回の正解データの与えられ方と相性が悪かったのかもと考察されていた。

Loss

ロスはcontrastive learningではなく、MultiSimilarityLossを利用したとのこと。いろいろ使ってみたらこいつが一番良かったらしい。

複数のネガポジを使ってロスを算出している感じ。

スクリーンショット 2022-06-22 9 13 59

モデル

各モデルの出力はbackboneにpoolingをかけた上で、特徴ベクトルとして変換させたとのこと。   この際の次元は大きい方が精度が上がったらしい。

当初は256次元や512次元としていたものの、1,024次元や1,536次元に増やすことでスコアの改善がみられたため、

スクリーンショット 2022-06-21 23 27 16

Batch Samplingの工夫

ナイーブにバッチを構成してしまうとバッチ内に正例がなくなってしまうので、以下のような工夫を実施

スクリーンショット 2022-06-21 23 29 39

その他の学習上の工夫

horovodを用いた分散学習 ② Optimizer: FusedLAMB ③ CrossBatchMemory(memory_size=2048)の利用

コンペ特有の後処理

正解画像とされている画像とは別の画像がモデルの出力的により似ていると判定される事象が発生。
正解画像が上位20件から漏れてしまうのを防ぐために、「test画像とのcos類似度が0.5以上のtrainがいた場合にそいつに正解として割り当てられている画像を候補に突っ込む」という後処理を実施。 これにより、スコアが 0.679636 から 0.734111 へ約5pt程度改善したとのこと。

スクリーンショット 2022-06-21 23 39 28

実行時間節約 tips

GPUを用いた類似度計算は高速であるものの、特徴抽出用のCNNでT4の16GBのメモリのうち14GBが占有されていたため、事前にNGT(Neighborhood Graph Treeという近傍探索ライブラリ)のindex(ONNG)を事前に作成しておき、CPU上で検索処理を行う方法を選択。 (1枚あたり2.1 sec)

NGTについてはpythonのラッパーがある模様 (pyngt)

コメント

商標画像検索という実務が強く意識されたコンペであったため、用いられているテクニックやライブラリについても実用的なものが多かった。
phashによる類似画像のグループ化は初耳の方法だったが、CNNによって抽出される特徴とは別のものが出てくるようなので、類似画像チェックが必要なプロジェクトに使えるかもしれない。

出典

GENZITSU commented 1 year ago

xwying / torchshow

pytorchのtensor可視化をよしなにやってくれるライブラリ。

そのテンソルが生画像なのかマスク画像なのか、feature mapなのか、バッチなのかを自動で読み取って最適な可視化方法を提供してくれる。

生画像の描画

some text

maskの描画

some text

バッチの描画

a

特徴マップ

a

カスタムレイアウト

a

ビデオ

a

コメント

めちゃくちゃ便利そう。

出典

GENZITSU commented 1 year ago

いらすとや利用規約

1つの資料で使えるイラストの上限は20点までなので注意が必要

書籍・チラシ・パンフレット・ウェブ・テレビ・パッケージ・電子書籍・動画・ソフトウェア・パワーポイントでのプレゼン・卒業アルバム・名刺など、媒体を問わず1つの制作物につき20点(重複はまとめて1点)まで商用利用をすることができます。

コメント

しらんかった

出典

元記事

GENZITSU commented 1 year ago

HaGRID - HAnd Gesture Recognition Image Dataset

ハンドサインの検出から種別の判別までを目的とした552,992件の画像からなるデータセットがCC BY SAライセンスで公開された。

収録されているハンドサインは以下に加えて、no_gestureというものもある。

スクリーンショット 2022-06-21 21 44 03

スクリーンショット 2022-06-21 21 44 46

約3.5万人のユニークユーザーのfull HD画像が収録されていて、test dataはtrain dataに存在しないunique userのみが収録されている。
年齢は18 - 65才までカバーされていて、屋内が主だが証明条件や撮影距離 (0.5 ~ 4m)などはバラエティに富んだものとなっているとのこと。

既存のデータセットと比べて、規模が1周り大きい

スクリーンショット 2022-06-21 21 48 46

また各カテゴリの方よりも小さい。

スクリーンショット 2022-06-21 21 55 23

データの収集は基本的にyandexが提供するクラウドソーシングサイト経由で以下のようなタスク画面で実施。
撮影条件を明示的に与えている模様。

スクリーンショット 2022-06-21 21 53 03

スクリーンショット 2022-06-21 21 53 11

かなり綺麗なデータセットのようで、分類は比較的容易にできる模様。

スクリーンショット 2022-06-21 21 56 29

コメント

商用利用も可能ということで、zoomなどのオンライン会議用ツールに対して手話コマンドを実装したり、手を検出する必要がある何らかのプロジェクトなどに使えるかも。

出典