GENZITSU / UsefulMaterials

34 stars 0 forks source link

weekly useful materials - 04/06 - #95

Open GENZITSU opened 2 years ago

GENZITSU commented 2 years ago

Learning to Downsample for Segmentation of Ultra-High Resolution Images

高解像画像に対するsegmentationを効率化する手法として、学習可能なdown samplingモジュールを提案した論文 @ ICLR2022 psoter

シーンごとに最適なdown sampleを行うことで、uniformにdown sampleを行った場合よりもよりセグメンテーション結果を得ることができる。

スクリーンショット 2022-03-30 12 25 04 スクリーンショット 2022-03-30 12 26 22 スクリーンショット 2022-03-30 12 26 42

手法の概要図が以下。segmentationタスクということで、resizeを学習するモジュールではなく、downsample pointsを生成するモジュールを噛ませているのが味噌。

スクリーンショット 2022-03-30 12 27 44

もともとedgeの周辺を重点的にサンプリングするというテクニックがあったのだが、クラスごとに適切なパラメータが異なることがわかったため、learnableなモジュールを導入した。(実装は3層CNN)

スクリーンショット 2022-03-30 12 31 47

学習はauxiliary lossが含まれているend-to-endな学習で実施。Leの部分は以下のような定義で実装されている。

スクリーンショット 2022-03-30 12 39 40 スクリーンショット 2022-03-30 12 40 45

以下が定量評価

スクリーンショット 2022-03-30 12 41 33

コメント

1300 x 2500を52 x 100まで過度に小さくしているのでsegmentation結果はあまり正確な感じにはならないが、それでもuniformに小さくするよりかは圧倒的に良くなっているのが驚き。

もう少し現実的なサイズに圧縮すればもっと綺麗なsegmentation mapができそう。(300*600とか?)

でかい画像をモデルに突っ込むにはパッチ分割とかをして情報量を落とさないといけなくなるので、それをするよりも学習速度が上がったり、使える情報量の増加による精度上昇とかがあるかを見極めないといけない。

出典

GENZITSU commented 2 years ago

iLabel Interactive Neural Scene Labelling

3次元画像およびDepthマップからvolume renderingをおこなうことで、アノテーションを省力化する研究

スクリーンショット 2022-03-30 13 08 09 スクリーンショット 2022-03-30 13 08 42 スクリーンショット 2022-03-30 13 11 03 スクリーンショット 2022-03-30 13 11 32 スクリーンショット 2022-03-30 13 11 48 スクリーンショット 2022-03-30 13 11 58

コメント

凄そう

出典

GENZITSU commented 2 years ago

Text to Mesh Without 3D Supervision Using Limit Subdivision

部分可能レンダラーとCLIPを用いて、テキストに合致した3dメッシュを作成する方法の提案。

スクリーンショット 2022-03-30 13 16 52

デモページでは実際に作成された3dメッシュをグリグリ操作することができる。

スクリーンショット 2022-03-30 13 17 58

コメント

differentiable renderが何なのか不明だが、面白い。 (むしろそこが肝な気がする)

出典

GENZITSU commented 2 years ago

BrikerMan / Kashgari

文章分類やsequence labelingを簡単に行えるNLPライブラリ。

ドキュメントも丁寧でパフォーマンス/カスタマイズ性も良さそう。

スクリーンショット 2022-03-30 13 28 24 スクリーンショット 2022-03-30 13 31 12
# 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)

コメント

良さそう。

出典

BrikerMan / Kashgari

GENZITSU commented 2 years ago

Elasticsearch v8に導入されたkNN search APIの検索速度を試す

表題の通り。

実験設定

スクリーンショット 2022-03-30 20 49 49

結果

スクリーンショット 2022-03-30 20 50 26 スクリーンショット 2022-03-30 20 50 49

コメント

どちらの次元数の設定でも、上位100件的な使い方であれば問題なさげに見える。

出典

Elasticsearch v8に導入されたkNN search APIの検索速度を試す

GENZITSU commented 2 years ago

yagays / emoji-ja

代表的な絵文字とそれの読み仮名, 属性などがまとめられたデータセット。 3/16にunicode 14.0番への対応が完了しており、ちゃんとメンテされているのが印象的。

スクリーンショット 2022-03-31 15 24 38

世界的に有名なdemojiは絵文字をアルファベットへ置換してくれはするが、日本語にはできないので、日本語言語モデルとの相性はあんまり良くない。

スクリーンショット 2022-03-31 15 28 32

コメント

SNSに対するテキスト分析にめちゃ使えそう。

出典

yagays / emoji-ja

GENZITSU commented 2 years ago

文書画像に対する質問応答技術の最新動向/ Recent Trends in Document Visual Question Answering

NTTの田中さんが第二回 AIクイズ王決定戦にて講演された内容。最新技術にまで触れられている網羅的な資料。

スクリーンショット 2022-03-31 16 11 12 スクリーンショット 2022-03-31 16 11 47 スクリーンショット 2022-03-31 16 11 54 スクリーンショット 2022-03-31 16 12 14

コメント

メモ

出典

[文書画像に対する質問応答技術の最新動向/ Recent Trends in Document Visual Question Answering(https://speakerdeck.com/ryotatanaka/recent-trends-in-document-visual-question-answering)

GENZITSU commented 2 years ago

Label Errors in ML Test Sets

imagenetや20newsといった有名データセットに存在するラベルミスの報告がまとめられているサイト。

スクリーンショット 2022-03-31 16 53 15

スクリーンショット 2022-03-31 16 54 40

スクリーンショット 2022-03-31 16 54 58

スクリーンショット 2022-03-31 16 56 17

コメント

人間がラベル付している以上どこまで行ってもミスは無くならないが、面白い笑

出典

Label Errors in ML Test Sets

GENZITSU commented 2 years ago

Active Learning for Auto Annotation

アクティブラーニングと自動アノテーション技術を組み合わせてみた検証結果の共有 from アノテーションツール製作会社のFastLabel

スクリーンショット 2022-03-31 21 20 36

スクリーンショット 2022-03-31 21 20 58

スクリーンショット 2022-03-31 21 21 41

スクリーンショット 2022-03-31 21 22 14

スクリーンショット 2022-03-31 21 22 37

スクリーンショット 2022-03-31 21 22 47

スクリーンショット 2022-03-31 21 23 54

スクリーンショット 2022-03-31 21 24 18

スクリーンショット 2022-03-31 21 24 55

スクリーンショット 2022-03-31 21 25 15

コメント

アノテーション作業時間が減っていることを考えると、自動アノテーション自体はうまくいってるはずなのだが、自動アノテーションとの相性が良くない原因はなんなんだろうか?

least confidentを採用したということで、たいして学習効果は高くないが難しいサンプルがいつでも写りこんでいるやつが大量に紛れこんでいたのだろうか...? でもそれで自動アノテーションの精度が悪くなるのであれば、作業時間は短くなるはずだし...?
もしかすると自動アノテーション結果がアノテーション作業者に何らかの負の影響を与えていてアノテーション品質自体が下がっているのかもしれない...

出典

Active Learning for Auto Annotation

GENZITSU commented 2 years ago

fidelity / sim2real-docs

文書画像をblender simulatorで生成するコードを提供

NeurIPS Data centric workshopにて発表されたもの。

スクリーンショット 2022-03-31 21 50 01

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

スクリーンショット 2022-03-31 21 49 17

スクリーンショット 2022-03-31 21 47 38

コメント

すごい

出典

GENZITSU commented 2 years ago

Editors-in-the-loop なニュース記事要約システムの提案 / Editors-in-the-loop News Article Summarization Framework

日経新聞社で取り込まれた記事要約システムの提案

手法が面白かったので転記。

スクリーンショット 2022-03-31 22 19 17

スクリーンショット 2022-03-31 22 19 31

スクリーンショット 2022-03-31 22 19 48

スクリーンショット 2022-03-31 22 20 05

スクリーンショット 2022-03-31 22 20 12

スクリーンショット 2022-03-31 22 20 20

スクリーンショット 2022-03-31 22 20 29

スクリーンショット 2022-03-31 22 20 36

コメント

構文解析 x TFIDFを用いた文章圧縮手法が面白かった。

出典

Editors-in-the-loop なニュース記事要約システムの提案 / Editors-in-the-loop News Article Summarization Framework

GENZITSU commented 2 years ago

【日本語モデル付き】2022年にマルチモーダル処理をする人にお勧めしたい事前学習済みモデル

(日鉄ソリューションズ株式会社)@sonoisaがCLIPの日本語モデルをサンプルコードと共に公開。

チュートリアルは4部構成の予定とのこと。

基礎: 画像とテキストの類似度計算、画像やテキストの埋め込み計算、類似画像検索 (公開準備中) 応用: いらすとや画像のマルチモーダル検索(ゼロショット編) (公開準備中) 応用: いらすとや画像のマルチモーダル検索(ファインチューニング編) (公開準備中) 応用: 画像とテキストの両方を用いたマルチモーダル分類

作成手順は以下

今回はCLIPの画像エンコーダーは本家のものをそのまま利用し、テキストエンコーダーのみ一種の蒸留を用いて日本語化しました。 具体的には、CLIPの日本語化はMultilingual-CLIPを参考にして、以下のステップで行いました。

  1. CLIPのデータセット(WebImageText)に近い統計的性質を持った、英語と日本語の対訳ペアを作る。既存の画像キャプション(英語)データセットであるConceptual CaptionsCOCO train/val 2014VizWizを日本語に機械翻訳することで作成。訓練データは382万件、テストデータは26万件。
  2. OpenAIにより公開されている英語用CLIP-ViT-B/32モデルのテキストエンコーダーを用いて、1のデータセットの英語文の埋め込みベクトル(512次元のベクトル)を作成。これが教師データになる。
  3. 日本語Sentence-BERTモデルを、1のデータセットの日本語文(と英語文)を入力したときに2の教師データを出力するように(教師データとの平均二乗誤差が小さくなるように)転移学習する。今回、転移学習は Fine-Tuning can Distort Pretrained Features and Underperform Out-of-Distribution で提案されている2段階で学習する方法に従い、まず全結合層のみ更新し、次に全ての重みを更新するようにしました。

学習した日本語テキストエンコーダーの評価

ステップ1で作ったテストデータ(26万件)に関する平均二乗誤差は 0.00947 でした。

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

スクリーンショット 2022-04-04 17 04 36

日本語テキストエンコーダーはうまく学習できていそう。

コメント

機械翻訳を用いることで、他言語マルチモーダルモデルを個別言語のマルチモーダルモデルに変更できるのは面白い。
機械翻訳があるのであれば、個別言語のクエリを他言語に変換して使用することもできそうではあるが、都度翻訳するのも面倒ということだろうか?

何にせよこのような大規模モデルを公開してくださるのは本当にありがたい。

出典

GENZITSU commented 2 years ago

数理最適化ことはじめ / Introduction to Mathematical Optimization

E869120さんにより数理最適化の入門資料。248pあるが解説が丁寧でとてもわかりやすい。

スクリーンショット 2022-04-05 0 01 32

コメント

メモ

出典

数理最適化ことはじめ / Introduction to Mathematical Optimization

GENZITSU commented 2 years ago

wordtune

自分の書いた英文をより自然にパラフレーズしてくれるソフトウェア。

chrome拡張も公開されている。

スクリーンショット 2022-04-05 0 06 17

コメント

DeepLと併用することで、簡単に英語の文章が書けてしまいそう笑

出典

wordtune

GENZITSU commented 2 years ago

tqdmでネストループを表現する

元ブログは他の進捗表示方法を紹介していたけれども、ネストループ部分が特に勉強になったのでメモ

# 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)

スクリーンショット 2022-04-05 0 14 31

コメント

メモ

出典

Pythonで進捗表示したい!

GENZITSU commented 2 years ago

openvinotoolkit / anomalib

最新の異常検知モデルが実装されているライブラリ

拡張性が気になるが、見た目使いやすそう

python tools/train.py --model_config_path anomalib/models/padim/config.yaml

スクリーンショット 2022-04-05 0 25 45

コメント

メモ

出典

openvinotoolkit / anomalib