stMind

about Tech, Computer vision and Machine learning

GPTを自作して学習済みパラメータでテキスト生成

2024年の最初のエントリーはGPTです。 GPTモデルを自作して、OpenAIが公開している学習済みのパラメータをロード、テキスト生成までの一連の処理を実行します。 モデル 正確にはGPT2のTransformerブロックを自作します。 アーキテクチャの大部分はGPTと同じ…

Pose Estimationとローパスフィルタ(One Euro Filter)の実験

フレーム単位の姿勢推定を動画に適用した場合に発生するジッターを解決するローパスフィルタを実験。 使用したのは、ここで紹介されていたコード。 towardsdatascience.com アクション認識のデータセットUCF-101の動画を利用。実行したのはM1 Mac。 フィルタ…

Lambda Labs GPU CloudでJAX/Flax

MacのMetalを使って、手持ちのM1 MacにもJAX/Flaxの実行環境を作ることは出来るのですが、 実際に学習をしようとしてもエラーで詰まってしまうことが多く、JAX/Flaxを実行できる環境を探していました。 Colabを使っても良いのですが、学習を実行するだけでな…

論文紹介:Video-LLaMA

MetaがLLaMA、LLaMA2と公開したことで、どんどん加速しているように見えるLLMに関する研究ですが、LLMに関するOpen Challengesの一つとも考えられている様々なモダリティの取り込みに関する研究で、Video-LLaMAを読んでみました。 arxiv.org github.com Vide…

JAXとcomposable program transformations

https://github.com/google/jaxのAboutは、次のように記述されています。 Composable transformations of Python+NumPy programs: differentiate, vectorize, JIT to GPU/TPU, and more Composable transformationsはどういうことなのか? NeurIPS2020: JAX …

ゼロから作るVision Transformer (JAX/Flax)

最近、Jax/Flaxを触るようになりました。ここでは、Jax/Flaxを用いてVision Transformerを実装した方法と、Jax/Flaxによる学習の方法について紹介しようと思います。 Vision Transformerのおさらい Vision Transformerを実装するにあたって、まずはこの図を…

pytorchとtensorflowのチュートリアル写経で見つけた小さなバグをPull Requestしてマージされるまで

正確にいうと、torchvisionとTensorflow Textのチュートリアル。 torchvisionの方は、ビデオファイルを読み込んでビデオフレームとオーディオフレームを返すVideo APIのチュートリアルで、ビデオのptsはvideo_ptsにappendして、オーディオのptsはaudio_ptsに…

stackoverflowで今年回答した内容のまとめ

今年の目標の一つとして、stackoverflowで回答を増やそうと考えていたのだけど、現時点で11件ほど行なうことが出来たので、ここでまとめておこうと思う。回答がAcceptされるとベターだとは思うものの、回答後のリアクションは質問者次第なので、コミュニティ…

DALL-E 2, Imagen, Parti

テキストから画像を生成するモデルが話題ですが、代表的なモデルであるDALL-E2とImagen、Partiのアーキテクチャを比較しているTwitterのスレッドを紹介。 A quick thread on "How DALL-E 2, Imagen and Parti Architectures Differ" with breakdown into com…

TD OD APIでデータ拡張のオプションを追加する

データ拡張のオプションは、TrainConfigの中でdata_augmentation_optionsとして定義されている。 data_augmentation_optionsは、repeatedフィールドで、PreprocessingStepに指定されているデータ拡張を任意の数だけ指定することができる。 // Message for co…

BERTの概要を掴む

一回目のMulti Head Attention、二回目のGPTに続いて、三回目はBERT。 Multi Head Attentionの概要を掴む - stMind GPTの概要を掴む - stMind Building on parts 1 & 2 which explained multi-head attention and GPT, in part 3 of the Transformer Series …

GPTの概要を掴む

前回は、Multi Head Attentionに関するTwitterの一連のスレッドを紹介した。 Multi Head Attentionの概要を掴む - stMind 今回はGPTについて。 GPT has been a core part of the unsupervised learning revolution that’s been happening in NLP.In part 2 o…

Multi Head Attentionの概要を掴む

DeepMindのResearch Scientistの方がツイートしていたMulti Head Attentionのスレッドの紹介。 全部で12個。英語だけど、日本語に翻訳すれば10分くらいで読めるし、コードサンプルと図もあって短い時間でMHAの概要が掴めると感じた。 Transformers are argua…

データセットをtrain/val/testに分割するコードをnumpyで簡潔に記述する

tl;dr numpy.splitを使って、aryを3つのsubarrayに分割する。 import numpy as np train, val, test = np.split(ary, [int(len(ary) * .6), int(len(ary) * .8)]) 簡単な説明 データをtrain/testに分割する時、scikit-learnのtrain_test_splitを使うことが多…

Pythonで行列から行と列を取得するコードを簡潔に記述する

tl;dr アスタリスクによるアンパックとzipを組み合わせる。 for row_vals, col_vals in zip(matrix, zip(*matrix)): print(row_vals, col_vals) 簡単な説明 まず、matrixは次のようなリストとする。 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 行は難しい…

13年かけてApache Solrのコミッターになった人が語る、OSSコミッターになりたい人向けアドバイス

Apache SolrはOSSな全文検索システムですが、そのApache Solrのコミッターになった人が、オープンソースプロジェクトのコミッターになりたい人向けにアドバイスをしているブログ記事のメモです。 opensourceconnections.com 最初にパッチを投稿したのが2007…

姿勢推定の関節ヒートマップデコードと標準シフト処理の有効性

姿勢推定モデルにおいては、関節毎のヒートマップ表現がよく使われており、OpenPoseを始め、多くの論文で有効性が確認されています。さらに、関節毎のヒートマップから、オリジナル画像における座標へ変換するデコード処理は、これまで十分に考察が行われて…

TF OD APIのpipeline.configの読み方(概要編)

Tensorflow Object Detection API(TF OD API)では、Protocol Buffersを使用して学習と評価のプロセスを設定しています。学習と評価用のスキーマは、tensorflow/models/research/object_detection/protos/pipeline.configに定義されており、ハイレベルでは5…

TF OD APIにおいてどのモデルを使うのかは、どのように判断されるのか?

tl;dr pipeline configに含まれるmodelのアーキテクチャ名から判断され、アーキテクチャに応じたbuildメソッドが使われる。 例えば、以下はfaster_rcnn_resnet50_v1_640x640_coco17_tpu-8のpipeline.configファイル。 具体的なところ configはobject_detecti…

Composed Image Retrieval on Real-life images(CIRR)

cuberick-orion.github.io https://arxiv.org/pdf/2108.04024.pdf Composed Image RetrievalもしくはImage Retrieval conditioned on Language Feedbackは、従来の単一のモダリティを用いた画像検索と異なり、画像とテキストのペアを与えて検索を行うCompose…

Chapter 3.2.3 of Efficient Deep Learning: Self-Supervised Learning

Self-Supervised Learning(SSL)は、pretext taskを解くことで、ラベル付きデータなしに汎用的な表現を獲得する手法。ターゲットタスクに適用するには、SSLでpre-trainingした後に、fine-tuningによりターゲットのラベル空間へのマッピングを学習する。 ラ…

Chapter 3.2.2 of Efficient Deep Learning: Data Augmentation

複雑なタスクを解く大規模なモデルを教師あり学習するとき、モデルの汎化性能は学習データ量に影響される。 しかしながら、高品質なラベル付き学習データを入手するにはコストがかかるという問題がある。 このような課題に対し、既存のデータに様々な変換手…

Chapter 3.2.1 of Efficient Deep Learning: Distillation

Distillationは、事前学習済みの大規模ネットワーク(教師モデル)を用いて、小規模ネットワーク(生徒モデル)を学習する仕組み。教師モデルと、生徒モデルは同じ入力を受け取り、教師モデルの方は生徒モデルのためのSoft labelを生成する。Soft labelは、…

Efficient Deep Learning: A Survey on Making Deep Learning Models Smaller, Faster, and Better

論文のURL:https://arxiv.org/pdf/2106.08962.pdf 深層学習は、ビジョンや自然言語処理、音声認識など様々な分野で飛躍的な進歩をもたらしましたが、モデルの改良が進むにつれてパラメータ数やレイテンシー、学習に必要なリソースなどが大幅に増えており、…

HRNetのQuick Start Guide

CVPR2019で提案されたDeep High-Resolution Representation Learning for Human Pose Estimationのオフィシャル実装をEC2上で実行するまでの記録です。 jingdongwang2017.github.io EC2は、Deep Learning Base AMI (Ubuntu 18.04) Version 38.0 のP3インスタ…

Natural Language Processing Specialization

www.coursera.org CourseraのNLP Specialization、完走しました! NLP Specializationは全部で4つのコース、各コースはさらに4週間分のサブコースで構成されている専門講座になります。最初のコースの終了が7月だったので、全4コースを終了するのに4ヶ月かか…

T-shaped knowledge base

Prepping for MLE interviews? Develop a T-shaped knowledge base. Make yourself a stronger candidate by demonstrating broad technical knowledge AND expertise in one area. pic.twitter.com/8AiYiiNA6D— DeepLearning.AI (@DeepLearningAI_) 2019年7…

Work From Home with Radiko

Work From Homeでのお供、Radikoでラジオ。 大体、こんなところを聞いてる。 AM9:00 - AM11:00 伊集院光とらじおと|TBSラジオFM90.5+AM954~何かが始まる音がする~ AM11:00 - AM12:00 ジェーン・スー生活は踊る|TBSラジオFM90.5+AM954~何かが始まる音がす…

imdb_reviews datasetのレビューに含まれるunique wordの上位N件の分布

レビューのテキストに含まれる語には、どういったものがあるか。特に、上位に含まれる語について、分布を見てみます。 scikit-learnのCountVectorizerを使って実装します。 def get_top_n_words(corpus, n=20, is_stop_words=False): vectorizer = CountVect…

imdb_reviews datasetのレビュー長のヒストグラム

データセット自体を理解し、モデル改善に役立てていきます。 Positiveなレビュー、Negativeなレビュー、それぞれについてレビュー長(ワード数)をカウントし、ヒストグラムで可視化します。 # 4. Count the length of sentences all_sentences = training_s…