Open GENZITSU opened 2 years ago
dvcを用いたML向けCIパイプラインの紹介
github actions上でモデルと検証データをfetchしてスコアリングを行い、MR上に自動的にレポートティングする方法をとっている。
メモ
ランダム化した特徴量のfeature importanceとの比較により特徴量選択をするBorutaのfeature importanceをSHAPに変えて同じことをするライブラリBorutaShap
を紹介している。
メモ
rinna社はこれまでに、日本語の自然言語処理 (NLP) に特化したGPT (3.3億パラメータ) やBERT (1.1億パラメータ) の事前学習モデルを公開し、多くの研究・開発者にご利用いただいています。最近のNLPに関する研究では、モデルのパラメータ数が多いほど高い性能であることが知られています。 そこでrinna社は、これまでに公開してきたモデルより大規模な13億パラメータを持つ日本語に特化したGPT言語モデルを開発し、日本語のNLPコミュニティに貢献するために、この言語モデルをNLPモデルライブラリ Hugging Face に商用利用可能なMITライセンスで公開しました。
メモ
AWS Lambdaでは環境変数のTZを設定することが可能だが、ドキュメントを読むと事前定義された環境変数のキーは設定できないと書かれている。
定義されたランタイム環境変数 Lambda ランタイムは、初期化中にいくつかの環境変数を設定します。ほとんどの環境変数は、関数またはランタイムに関する情報を提供します。これらの環境変数のキーは予約済みであるため、関数設定では設定できません。
ということで、あまりここを触らず、関数中でTZの変換などはしたほうがいいかもしれない。
メモ
メタバース、もとい同時接続型アバターコミニュケーション、の技術的な限界を、通信速度/描画処理速度の観点から解説している記事。現状の技術だとアバター描画負荷が最大のボトルネックとなっており、大人数での同時接続を行うためには簡易アバターを用いる他ない模様。
日本のスマートフォン通信速度の統計量を鑑みると、以下のことが言える。
日本の人口の75%にメタバースを普及させたいのであれば、下り速度は88Mbps未満、上り速度が11Mbps未満の通信速度にする必要があります。 もう一段上げるとすると、通信速度を下り123Mbps未満、上り17Mbps未満に抑えると、日本の人口の50%にアプローチ出来ます。
面白い。
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を取得できるので、シミュレーション空間に溶け込んだ画像を生成することができるとのこと。
ちなみに、このシステムを使って正確な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.
今回はこれに加えて、自然界で撮影された肖像画画像を用いて教師あり学習もしている。
とはいえ、このこのような画像に一枚一枚アノテーションすることもできないので、以下のような手順を踏んでいる。
合成画像で作成したセグメンテーションモデルを利用して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.
ちなみにネットワーク構成は以下
合成データオンリーだと完璧にはならないけど、自然画像に対するpseudo labelingに使用できるくらいにはモデルの性能を高められるのが意外だった。 synthetic data → real data に対するpseudo labeling & チェック は今後のスタンダートなアプローチになりそうだ。
産業用カメラなどのノイズの多い画像に対する高画質化を行うAIをLeepMindが作成
LeapMindは、エッジデバイス上でリアルタイム動作するAI画像処理モデルを発表した。この画像処理モデルは同社の超低消費電力AI推論アクセラレータIP「Efficiera」(エフィシエラ)を使い、エッジデバイス上でノイズの多い画像に対してリアルタイムにノイズを低減、高画質化する、画質改善を特徴とするモデル。従来より挙げられていた性能面と画質精度面の課題を解決し、高性能・高画質・軽量化を実現する。
RGBではなくraw 2 rawで計算することで低遅延なdenoisingができる模様。
産業用カメラってどうしてもノイズが乗ってしまうんだなというのと、NNによるデノイズができてしまうんだなと言う驚きが大きい。 実際のFPSがとても気になるところ。
以下のようなすごい機能(Donarch)を内製で作った道のりがまとめられている。
YAMLフォーマットで特徴量のデータセットを指定するだけで定期的なデータドリフトの検知と統計情報の集計、結果を確認するダッシュボードの構築、アラート通知といったモデルモニタリングに必要なシステムを自動的に構築します。
様々な理由でモデルに流入するデータは変化し、モデルの予測性能を低下させてしまう。
データドリフトについてはLearning under Concept Drift: A Reviewという論文が詳しいらしく、そこそこな量の手法が存在する。
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を習得するとこういうこともできるのかという、別の収穫もあった。
BERT (roberta)のdistilationをどうやって行うかを実装付きで紹介している。
メモ
コードを最適化する際の一つのガイドラインとして以下を提唱
私は状態 (state)、結合 (coupling)、複雑性 (complexity)、コード量 (code) の順に削減することでコードを最適化する。
- コードがよりステートレスになるなら、結合を増やすこともいとわない
- 結合を減らすためには、コードをもっと複雑にすることもある
- コードの複雑さが軽減されるなら、コードをコピーする
- コードの重複排除をするのは状態・結合・複雑性を増さない時のみに限る
ステートレスである方が推論が簡単ということで、この順番なんだとか
ステートレスな設計というのが未だピンときていないがメモ
インターネットから収集したドローンからの撮影映像(3,000,000 frame以上)にbboxやtext caption, voice captionの情報を付与したデータセットが深圳ビッグデータ研究所から発表された。githubはあるもののdataset自体はcomming soonのようだ。
データセットの作成方法は今流行のsemi automatic annotationによるもの
もし公開されたらいち早く使ってみたいところ。レポジトリのライセンスはGPL3なのでワンチャンある
Towards a more applicative Pose Estimation
law pass filterを用いてkeypoint抽出結果のjitteringを低減させる方法を紹介している。
コメント
ロバストな認識結果を出し続ける必要があるケースだと必須かも。
出典
元記事