GENZITSU / UsefulMaterials

34 stars 0 forks source link

weekly useful materials - 02/02 - #87

Open GENZITSU opened 2 years ago

GENZITSU commented 2 years ago

Towards a more applicative Pose Estimation

law pass filterを用いてkeypoint抽出結果のjitteringを低減させる方法を紹介している。

# from https://towardsdatascience.com/towards-a-more-applicative-pose-estimation-bf18bc311228

while True:
    old_curr_kp, image = get_inference(frame2)
    curr_kp = [x[:] for x in old_curr_kp]  # deepcopy

    if j == 0:
        x_track = [OneEuroFilter(j, curr_kp[k][0], 0.6, 0.015) for k in range(num_kps)]  # track for all keypoints
        y_track = [OneEuroFilter(j, curr_kp[k][1], 0.6, 0.015) for k in range(num_kps)]

    if lpf and j > 1:
        for i in range(num_kps):
            ## x coordinate
            curr_kp[i][0] = x_track[i](j, curr_kp[i][0])

            ## y coordinate
            curr_kp[i][1] = y_track[i](j, curr_kp[i][1])

    output = draw_pose(image, curr_kp)
    output = cv2.cvtColor(output, cv2.COLOR_BGR2RGB)
    outimage = np.asarray(output, dtype=np.uint8)
    outimage = cv2.resize(outimage, size)

    prev_kp = curr_kp
    ret, frame2 = cap.read()
    cframe = cap.get(cv2.CAP_PROP_POS_FRAMES)
    j += 1

コメント

ロバストな認識結果を出し続ける必要があるケースだと必須かも。

出典

元記事

GENZITSU commented 2 years ago

How I apply Continuous Integration to Machine Learning Projects

dvcを用いたML向けCIパイプラインの紹介

github actions上でモデルと検証データをfetchしてスコアリングを行い、MR上に自動的にレポートティングする方法をとっている。

コメント

メモ

出典

元記事

GENZITSU commented 2 years ago

Boruta SHAP: A Tool for Feature Selection Every Data Scientist Should Know

ランダム化した特徴量のfeature importanceとの比較により特徴量選択をするBorutaのfeature importanceをSHAPに変えて同じことをするライブラリBorutaShapを紹介している。

コメント

メモ

出典

元記事

GENZITSU commented 2 years ago

Building Confidence on Explainability Methods

shapshというXAIライブラリではConsitensy(xai手法同士の一貫性), Stability(各特徴量の説明力の一貫性), Compacity(どれだけ少数の特徴量で説明できるか)といった指標のプロットを出せるようで、それっぽい説明をするときに重宝しそうだなと。

スクリーンショット 2022-01-26 21 28 03 スクリーンショット 2022-01-26 21 30 54 スクリーンショット 2022-01-26 21 31 02 スクリーンショット 2022-01-26 21 31 24

コメント

メモ

出典

元記事

shapash

GENZITSU commented 2 years ago

rinna社、日本語に特化した13億パラメータのGPT言語モデルを公開

rinna社はこれまでに、日本語の自然言語処理 (NLP) に特化したGPT (3.3億パラメータ) やBERT (1.1億パラメータ) の事前学習モデルを公開し、多くの研究・開発者にご利用いただいています。最近のNLPに関する研究では、モデルのパラメータ数が多いほど高い性能であることが知られています。 そこでrinna社は、これまでに公開してきたモデルより大規模な13億パラメータを持つ日本語に特化したGPT言語モデルを開発し、日本語のNLPコミュニティに貢献するために、この言語モデルをNLPモデルライブラリ Hugging Face に商用利用可能なMITライセンスで公開しました。

コメント

メモ

出典

元記事

haggingface

GENZITSU commented 2 years ago

AI導入ガイドブック(案) 需要予測(小売り、卸業)

2020年に経産相が公開していた需要予測導入ガイドブック

スクリーンショット 2022-01-27 17 23 44

スクリーンショット 2022-01-27 17 23 35

スクリーンショット 2022-01-27 17 22 23

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

スクリーンショット 2022-01-27 17 23 29

コメント

運用についても熱くカバーされていることに好感が持てる

出典

元記事

GENZITSU commented 2 years ago

AWS Lambdaで環境変数のTZは指定しないほうが良いかもしれない件

AWS Lambdaでは環境変数のTZを設定することが可能だが、ドキュメントを読むと事前定義された環境変数のキーは設定できないと書かれている。

定義されたランタイム環境変数 Lambda ランタイムは、初期化中にいくつかの環境変数を設定します。ほとんどの環境変数は、関数またはランタイムに関する情報を提供します。これらの環境変数のキーは予約済みであるため、関数設定では設定できません。

ということで、あまりここを触らず、関数中でTZの変換などはしたほうがいいかもしれない。

コメント

メモ

出典

元記事

GENZITSU commented 2 years ago

MLOps勉強会の2021を紹介されたツールを振り返ってみた

めっちゃまとめられている

スクリーンショット 2022-01-30 18 16 06

コメント

すごい

出典

元記事

GENZITSU commented 2 years ago

メタバースの技術限界の解説

メタバース、もとい同時接続型アバターコミニュケーション、の技術的な限界を、通信速度/描画処理速度の観点から解説している記事。現状の技術だとアバター描画負荷が最大のボトルネックとなっており、大人数での同時接続を行うためには簡易アバターを用いる他ない模様。

通信速度

スクリーンショット 2022-01-30 18 22 57

日本のスマートフォン通信速度の統計量を鑑みると、以下のことが言える。

日本の人口の75%にメタバースを普及させたいのであれば、下り速度は88Mbps未満、上り速度が11Mbps未満の通信速度にする必要があります。 もう一段上げるとすると、通信速度を下り123Mbps未満、上り17Mbps未満に抑えると、日本の人口の50%にアプローチ出来ます。

アバターのトラッキングに必要な通信料

スクリーンショット 2022-01-30 18 25 12

ネットワーク方式ごとの同時接続可能人数

スクリーンショット 2022-01-30 18 25 34 スクリーンショット 2022-01-30 18 25 41

通信に必要なCPUからみた同時接続可能人数

スクリーンショット 2022-01-30 18 27 36

描画性能から鑑みた同時接続可能人数

スクリーンショット 2022-01-30 18 28 36

コメント

面白い。

出典

元記事

GENZITSU commented 2 years ago

Accurate Alpha Matting for Portrait Mode Selfies on Pixel 6

googleのスマホPixel 6に搭載されている肖像画モードで使用されている、human mattingをどのように作成したかがまとめられている。

従来手法の課題

画像編集ソフトを用いた前景と背景を人手でのアノテーション → スケールしない グリーンバックを使った手法 → 撮影対象に緑の影がはいってしまったり、現実の照明環境を再現できなかったりする。

Most recent work for image matting relies on manually annotated per-pixel alpha mattes used to separate the foreground from the background that are generated with image editing tools or green screens. This process is tedious and does not scale for the generation of large datasets. Also, it often produces inaccurate alpha mattes and foreground images that are contaminated (e.g., by reflected light from the background, or “green spill”). Moreover, this does nothing to ensure that the lighting on the subject appears consistent with the lighting in the new background environment.

今回の手法

volumetric capture systemと言うシステムを用いて、多様な人物の正確なメッシュを作成してsegmentationのground truthとして用いている。

さらにこのシステムを用いると多様な照明環境を正確に反映したimageを取得できるので、シミュレーション空間に溶け込んだ画像を生成することができるとのこと。

スクリーンショット 2022-01-30 18 41 35 スクリーンショット 2022-01-30 18 42 12 スクリーンショット 2022-01-30 18 50 55 スクリーンショット 2022-01-30 18 52 50

ちなみに、このシステムを使って正確なlightning画像が作れるのはHDR画像を作れるからのようだ。

Leveraging the reflectance field for each subject and the alpha matte generated with our ground truth matte generation system, we can relight each portrait using a given HDR lighting environment. We composite these relit subjects into backgrounds corresponding to the target illumination following the alpha blending equation. The background images are then generated from the HDR panoramas by positioning a virtual camera at the center and ray-tracing into the panorama from the camera’s center of projection.

今回はこれに加えて、自然界で撮影された肖像画画像を用いて教師あり学習もしている。

スクリーンショット 2022-01-30 18 56 40

とはいえ、このこのような画像に一枚一枚アノテーションすることもできないので、以下のような手順を踏んでいる。

合成画像で作成したセグメンテーションモデルを利用してpsudo-ground truthを作成 (ensemble & TTAを利用)

we created a pipeline to automatically annotate in-the-wild photos generating pseudo–ground truth alpha mattes. an ensemble of models that computes multiple high-resolution alpha mattes from in-the-wild images. Additionally, during this process we performed test-time augmentation by doing inference on input images at different scales and rotations, and finally aggregating per-pixel alpha values across all estimated alpha mattes.

生成されたground truth画像を見た目でチェックして、学習データに入れるかどうかを振り分ける

Generated alpha mattes are visually evaluated with respect to the input RGB image. The alpha mattes that are perceptually correct, i.e., following the subject's silhouette and fine details (e.g., hair), are added to the training set.

この、自然画像に対するpsudo labelingが今回の手法では重要だったとのこと

we supervise the training of the model using pseudo–ground truth alpha mattes from in-the-wild images to improve model generalization, explained below. This ground truth data generation process is one of the key components of this work.

ちなみにネットワーク構成は以下

スクリーンショット 2022-01-30 18 34 04

コメント

合成データオンリーだと完璧にはならないけど、自然画像に対するpseudo labelingに使用できるくらいにはモデルの性能を高められるのが意外だった。 synthetic data → real data に対するpseudo labeling & チェック は今後のスタンダートなアプローチになりそうだ。

出典

元記事

GENZITSU commented 2 years ago

AIがノイズを低減 エッジカメラでもリアルタイムで高画質化を実現 LeapMindのAI推論アクセラレータIP「エフィシエラ」

産業用カメラなどのノイズの多い画像に対する高画質化を行うAIをLeepMindが作成

LeapMindは、エッジデバイス上でリアルタイム動作するAI画像処理モデルを発表した。この画像処理モデルは同社の超低消費電力AI推論アクセラレータIP「Efficiera」(エフィシエラ)を使い、エッジデバイス上でノイズの多い画像に対してリアルタイムにノイズを低減、高画質化する、画質改善を特徴とするモデル。従来より挙げられていた性能面と画質精度面の課題を解決し、高性能・高画質・軽量化を実現する。

RGBではなくraw 2 rawで計算することで低遅延なdenoisingができる模様。

スクリーンショット 2022-01-31 22 10 56

コメント

産業用カメラってどうしてもノイズが乗ってしまうんだなというのと、NNによるデノイズができてしまうんだなと言う驚きが大きい。 実際のFPSがとても気になるところ。

出典

元記事

GENZITSU commented 2 years ago

MLOpsを支えるヤフー独自のモデルモニタリングサービス

以下のようなすごい機能(Donarch)を内製で作った道のりがまとめられている。

YAMLフォーマットで特徴量のデータセットを指定するだけで定期的なデータドリフトの検知と統計情報の集計、結果を確認するダッシュボードの構築、アラート通知といったモデルモニタリングに必要なシステムを自動的に構築します。

スクリーンショット 2022-01-31 22 35 24

データデータドリフトとは

様々な理由でモデルに流入するデータは変化し、モデルの予測性能を低下させてしまう。

スクリーンショット 2022-01-31 22 45 01

データドリフトについてはLearning under Concept Drift: A Reviewという論文が詳しいらしく、そこそこな量の手法が存在する。

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

ツールを内製した理由

システム構成図

スクリーンショット 2022-01-31 22 51 36

スクリーンショット 2022-01-31 22 56 08

DronachではAIプラットフォームでマネージドサービスとして提供しているArgo Workflowsを採用しました。

DronachはKubernetesのOperatorパターンの仕組みを採用。 Operatorパターンとは、Kubernetesに登録されたカスタムリソースの状態の定義に近づくように、リソースに対応するコントローラが必要な処理を次々実施する仕組みです。Dronach固有のカスタムリソースはモニタリングの設定とダッシュボードの2つです。

ユーザーは以下のようなymlを書くだけでモニタリングができるようになる

# from https://techblog.yahoo.co.jp/entry/2022013130257343/

apiVersion: dronach.yahoo.co.jp/v1alpha1
kind: BaseModel
metadata:
  name: dronach-sample-model
spec:
  data:
    name: sampledata
    dataType: tabular
    fileFormat: csv
    volumeSize: 1Gi
    hdfs:
      keytabSecret: keytab 
      account: dronach-sample-user
      path: "/user/dronach/sample_{{workflow.creationTimestamp.y}}{{workflow.creationTimestamp.m}}{{workflow.creationTimestamp.d}}.csv"
  profile:
    schedule: "0 */1 * * *"
    resources:
      limits:
        cpu: 1
        memory: 500Mi
      requests:
        cpu: 1
        memory: 200Mi
  dataDrift:
    template:
      schedule: "0 */1 * * *"
      resources:
        limits:
          cpu: 1
          memory: 500Mi
        requests:
          cpu: 1
          memory: 500Mi

検知自体は以下のような仕組みで実施

OSSであるAlibi Detectを採用。 Alibi Detectはベースとなるデータと新しいデータを比較し、2つのデータセットのデータ分布が同じであるかを検定します。Alibi Detectは複数の検定アルゴリズムをサポートしています。Dronachは利用者がアルゴリズムを個別に指定しなくてもAlibi Detectで利用可能な複数の検定アルゴリズムを並行して実行します。ユーザーは複数のアルゴリズムの結果を見て、データドリフトが起きているかを総合的に判断します。

またデータの統計量の計算も行っている。

Dronachは特徴量の統計情報を定期的に収集する機能を提供。 統計情報の収集はデータロギングのOSSであるwhylogsを使っています。whylogsは内部でデータの統計用法を高速に計算する近似アルゴリズムのライブラリであるApache DataSketchesを採用しており、大量のデータであっても短時間でデータの統計情報を計算できます

ここでは通知のみを行う仕様となっている

検定アルゴリズムがデータドリフトの可能性を検出するとDronachはSlackにアラートを送ります。どのデータがどの程度分布が変わるとサービスに影響があるとみなすのかはユーザーであるサービスの開発、運用チームが判断すべきです。そのため、Dronachはモデルの自動的な再学習はサポートせずデータドリフトの発生の可能性をモデリングチームに伝えるのみにとどめています。

コメント

データドリフト検知はその重要性は分かっているものの、どのようにシステムを組めばいいかわからんといった感じだったので、とても参考になるケース。

k8sを習得するとこういうこともできるのかという、別の収穫もあった。

出典

元記事

GENZITSU commented 2 years ago

Distillation of BERT-like models: the code

BERT (roberta)のdistilationをどうやって行うかを実装付きで紹介している。

コメント

メモ

出典

元記事

GENZITSU commented 2 years ago

状態、結合、複雑性、コード量の順に最適化する

コードを最適化する際の一つのガイドラインとして以下を提唱

私は状態 (state)、結合 (coupling)、複雑性 (complexity)、コード量 (code) の順に削減することでコードを最適化する。

  • コードがよりステートレスになるなら、結合を増やすこともいとわない
  • 結合を減らすためには、コードをもっと複雑にすることもある
  • コードの複雑さが軽減されるなら、コードをコピーする
  • コードの重複排除をするのは状態・結合・複雑性を増さない時のみに限る

ステートレスである方が推論が簡単ということで、この順番なんだとか

コメント

ステートレスな設計というのが未だピンときていないがメモ

出典

元記事

GENZITSU commented 2 years ago

WebUAV-3M: A Benchmark Unveiling the Power of Million-Scale Deep UAV Tracking

インターネットから収集したドローンからの撮影映像(3,000,000 frame以上)にbboxやtext caption, voice captionの情報を付与したデータセットが深圳ビッグデータ研究所から発表された。githubはあるもののdataset自体はcomming soonのようだ。

スクリーンショット 2022-02-01 22 48 50

スクリーンショット 2022-02-01 22 49 02

データセットの作成方法は今流行のsemi automatic annotationによるもの

スクリーンショット 2022-02-01 22 49 32

コメント

もし公開されたらいち早く使ってみたいところ。レポジトリのライセンスはGPL3なのでワンチャンある

出典

github

論文

GENZITSU commented 2 years ago

Fast Forward Computer Vision: train models at a fraction of the cost with accelerated data loading!

画像系モデル学習時の画像読み込みの速度をとてつもなく早くしてくれるライブラリffcv。

スクリーンショット 2022-02-01 22 56 54

コメント

使用感よくわからないので、メモだけ

出典

元記事