stMind

about Tech, Computer vision and Machine learning

GPT-4oを使って動画チュートリアルをブログ記事に変換する

LLMのTokenizationについての動画チュートリアルを公開して、本の章やブログの投稿として動画を自動的に変換するワークフローに関するチャレンジのアイデアをAndrej Karpathyさんが投稿したことが発端で、Anthropicの中の人が、Claude3を使ってやってみたと…

CLIPのゼロショット分類におけるプロンプトアンサンブル

CLIPは、画像とテキストがデータセット内でペアになっているかどうかを予測するように事前学習されています。図の(2)と(3)にあるように、ゼロショット分類では、データセット内のすべてのクラス名を含んだテキストを作成し、CLIPによって最も確率の高い…

ScenicのSegment AnythingをGoogle Colab実行

Segment Anythingは、facebook researchのpytorch実装がありますが、 ScenicにもJax/FlaxのSegment Anythingの実装が公開されています。 READMEにある通りですが、Google Colabでシンプルに実行してみます。 image_pathを変えれば、他の画像でも試せる。 REA…

Scenic: A JAX Library for Computer Vision Research and Beyond

github.com Scenicは、TransformerベースのモデルにフォーカスしたオープンソースのJAXライブラリ。 最近、Transformerを適用した動画認識モデルの論文(ViViT, MTV, ObjectViViT)を読んでいる中で見かけていました。 研究のコードであっても、構造化され、…

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ヶ月かか…