Open GENZITSU opened 2 years ago
3次元画像およびDepthマップからvolume renderingをおこなうことで、アノテーションを省力化する研究
凄そう
部分可能レンダラーとCLIPを用いて、テキストに合致した3dメッシュを作成する方法の提案。
デモページでは実際に作成された3dメッシュをグリグリ操作することができる。
differentiable renderが何なのか不明だが、面白い。 (むしろそこが肝な気がする)
文章分類やsequence labelingを簡単に行えるNLPライブラリ。
ドキュメントも丁寧でパフォーマンス/カスタマイズ性も良さそう。
# from https://github.com/BrikerMan/Kashgari/blob/v2-main/docs/tutorial/text-labeling.md
from typing import Dict, Any
from tensorflow import keras
from kashgari.tasks.labeling.abc_model import ABCLabelingModel
from kashgari.layers import L
import logging
logging.basicConfig(level='DEBUG')
class DoubleBLSTMModel(ABCLabelingModel):
"""Bidirectional LSTM Sequence Labeling Model"""
@classmethod
def default_hyper_parameters(cls) -> Dict[str, Dict[str, Any]]:
"""
Get hyper parameters of model
Returns:
hyper parameters dict
"""
return {
'layer_blstm1': {
'units': 128,
'return_sequences': True
},
'layer_blstm2': {
'units': 128,
'return_sequences': True
},
'layer_dropout': {
'rate': 0.4
},
'layer_time_distributed': {},
'layer_activation': {
'activation': 'softmax'
}
}
def build_model_arc(self):
"""
build model architectural
"""
output_dim = len(self.processor.label2idx)
config = self.hyper_parameters
embed_model = self.embedding.embed_model
# Define your layers
layer_blstm1 = L.Bidirectional(L.LSTM(**config['layer_blstm1']),
name='layer_blstm1')
layer_blstm2 = L.Bidirectional(L.LSTM(**config['layer_blstm2']),
name='layer_blstm2')
layer_dropout = L.Dropout(**config['layer_dropout'],
name='layer_dropout')
layer_time_distributed = L.TimeDistributed(L.Dense(output_dim,
**config['layer_time_distributed']),
name='layer_time_distributed')
layer_activation = L.Activation(**config['layer_activation'])
# Define tensor flow
tensor = layer_blstm1(embed_model.output)
tensor = layer_blstm2(tensor)
tensor = layer_dropout(tensor)
tensor = layer_time_distributed(tensor)
output_tensor = layer_activation(tensor)
# Init model
self.tf_model = keras.Model(embed_model.inputs, output_tensor)
model = DoubleBLSTMModel()
model.fit(train_x, train_y, valid_x, valid_y)
良さそう。
表題の通り。
実験設定
結果
どちらの次元数の設定でも、上位100件的な使い方であれば問題なさげに見える。
NTTの田中さんが第二回 AIクイズ王決定戦にて講演された内容。最新技術にまで触れられている網羅的な資料。
メモ
[文書画像に対する質問応答技術の最新動向/ Recent Trends in Document Visual Question Answering(https://speakerdeck.com/ryotatanaka/recent-trends-in-document-visual-question-answering)
imagenetや20newsといった有名データセットに存在するラベルミスの報告がまとめられているサイト。
人間がラベル付している以上どこまで行ってもミスは無くならないが、面白い笑
アクティブラーニングと自動アノテーション技術を組み合わせてみた検証結果の共有 from アノテーションツール製作会社のFastLabel
アノテーション作業時間が減っていることを考えると、自動アノテーション自体はうまくいってるはずなのだが、自動アノテーションとの相性が良くない原因はなんなんだろうか?
least confidentを採用したということで、たいして学習効果は高くないが難しいサンプルがいつでも写りこんでいるやつが大量に紛れこんでいたのだろうか...?
でもそれで自動アノテーションの精度が悪くなるのであれば、作業時間は短くなるはずだし...?
もしかすると自動アノテーション結果がアノテーション作業者に何らかの負の影響を与えていてアノテーション品質自体が下がっているのかもしれない...
文書画像をblender simulatorで生成するコードを提供
NeurIPS Data centric workshopにて発表されたもの。
すごい
日経新聞社で取り込まれた記事要約システムの提案
手法が面白かったので転記。
構文解析 x TFIDFを用いた文章圧縮手法が面白かった。
Editors-in-the-loop なニュース記事要約システムの提案 / Editors-in-the-loop News Article Summarization Framework
(日鉄ソリューションズ株式会社)の@sonoisaがCLIPの日本語モデルをサンプルコードと共に公開。
チュートリアルは4部構成の予定とのこと。
基礎: 画像とテキストの類似度計算、画像やテキストの埋め込み計算、類似画像検索 (公開準備中) 応用: いらすとや画像のマルチモーダル検索(ゼロショット編) (公開準備中) 応用: いらすとや画像のマルチモーダル検索(ファインチューニング編) (公開準備中) 応用: 画像とテキストの両方を用いたマルチモーダル分類
作成手順は以下
今回はCLIPの画像エンコーダーは本家のものをそのまま利用し、テキストエンコーダーのみ一種の蒸留を用いて日本語化しました。 具体的には、CLIPの日本語化はMultilingual-CLIPを参考にして、以下のステップで行いました。
- CLIPのデータセット(WebImageText)に近い統計的性質を持った、英語と日本語の対訳ペアを作る。既存の画像キャプション(英語)データセットであるConceptual Captions、COCO train/val 2014、VizWizを日本語に機械翻訳することで作成。訓練データは382万件、テストデータは26万件。
- OpenAIにより公開されている英語用CLIP-ViT-B/32モデルのテキストエンコーダーを用いて、1のデータセットの英語文の埋め込みベクトル(512次元のベクトル)を作成。これが教師データになる。
- 日本語Sentence-BERTモデルを、1のデータセットの日本語文(と英語文)を入力したときに2の教師データを出力するように(教師データとの平均二乗誤差が小さくなるように)転移学習する。今回、転移学習は Fine-Tuning can Distort Pretrained Features and Underperform Out-of-Distribution で提案されている2段階で学習する方法に従い、まず全結合層のみ更新し、次に全ての重みを更新するようにしました。
学習した日本語テキストエンコーダーの評価
ステップ1で作ったテストデータ(26万件)に関する平均二乗誤差は 0.00947 でした。
日本語テキストエンコーダーはうまく学習できていそう。
機械翻訳を用いることで、他言語マルチモーダルモデルを個別言語のマルチモーダルモデルに変更できるのは面白い。
機械翻訳があるのであれば、個別言語のクエリを他言語に変換して使用することもできそうではあるが、都度翻訳するのも面倒ということだろうか?
何にせよこのような大規模モデルを公開してくださるのは本当にありがたい。
E869120さんにより数理最適化の入門資料。248pあるが解説が丁寧でとてもわかりやすい。
メモ
元ブログは他の進捗表示方法を紹介していたけれども、ネストループ部分が特に勉強になったのでメモ
# from https://qiita.com/kuroitu/items/f18acf87269f4267e8c1
import time
from tqdm.notebook import trange
for t in trange(10):
for i in trange(10, leave=False):
np.pi*np.pi
time.sleep(1/2**4)
メモ
最新の異常検知モデルが実装されているライブラリ
拡張性が気になるが、見た目使いやすそう
python tools/train.py --model_config_path anomalib/models/padim/config.yaml
メモ
Learning to Downsample for Segmentation of Ultra-High Resolution Images
高解像画像に対するsegmentationを効率化する手法として、学習可能なdown samplingモジュールを提案した論文 @ ICLR2022 psoter
シーンごとに最適なdown sampleを行うことで、uniformにdown sampleを行った場合よりもよりセグメンテーション結果を得ることができる。
手法の概要図が以下。segmentationタスクということで、resizeを学習するモジュールではなく、downsample pointsを生成するモジュールを噛ませているのが味噌。
もともとedgeの周辺を重点的にサンプリングするというテクニックがあったのだが、クラスごとに適切なパラメータが異なることがわかったため、learnableなモジュールを導入した。(実装は3層CNN)
学習はauxiliary lossが含まれているend-to-endな学習で実施。Leの部分は以下のような定義で実装されている。
以下が定量評価
コメント
1300 x 2500を52 x 100まで過度に小さくしているのでsegmentation結果はあまり正確な感じにはならないが、それでもuniformに小さくするよりかは圧倒的に良くなっているのが驚き。
もう少し現実的なサイズに圧縮すればもっと綺麗なsegmentation mapができそう。(300*600とか?)
でかい画像をモデルに突っ込むにはパッチ分割とかをして情報量を落とさないといけなくなるので、それをするよりも学習速度が上がったり、使える情報量の増加による精度上昇とかがあるかを見極めないといけない。
出典