Open GENZITSU opened 2 years ago
音声特徴量を抽出することのできるライブラリopenSMILEの紹介記事
ライブラリ自体は商用での利用を認めていないので注意
特徴量の抽出は以下のように簡単に実施可能で、メルスペクトログラムに加えて、音声学に乗っ取った特徴量を複数抽出してくれる。
feat = smile.process_file(f'./TRAIN/{Filename}')
以下ライセンス
openSMILE follows a dual-licensing model. Since the main goal of the project is widespread use of the software to facilitate research in the field of machine learning from audio-visual signals, the source code, and binaries are freely available for private, research, and educational use under an open-source license (see LICENSE). It is not allowed to use the open-source version of openSMILE for any sort of commercial product. Fundamental research in companies, for example, is permitted, but if a product is the result of the research, we require you to buy a commercial development license.
非商用なのが残念。
音声系の古典的な特徴量にいろいろ種類があるのも知らなかった。
ドコモが2020年3月にリリースしたゴルフスイング動画のクラウド解析サービスの技術詳細 / 開発プロセスがまとめられている資料。
本アプリではスマートフォンで解析した動画をクラウド姿勢推定, ヘッドの軌跡推定を行うことでユーザーに正しいスイングをフィードバックしてくれる。
本AIを作成するにあたっては、ゴルフクラブの種類や撮影場所を変えた役1,000本の動画(120FPS, FullHD, 20秒)を用いているとのこと。
姿勢推定に関しては、①人物検出→関節検出を行うTop-Downアプローチと②関節検出を行なったのちに関節を結ぶBotom-up アプローチのうち、後者のBotom-upを選択。
検出したヘッドの軌跡は、アドレス, トップ, インパクト, フィニッシュの4ポジションの検出位置をルールベースつなぎ合わせることで実現。
検出したスイング点に関して体の角度などから評価を実施している。
近年のサービス開発はいかに早く、優れたUI/UXを持つアプリを作るかが大事なので、開発プロセスも工夫したとのこと。
①UI/UXプロセスの内製化
外部のデザインベンダーを用いず、全ステークホルダーが参加したワークショップ形式で、UI/UXを検討したとのこと。
開発部門がここを担うことで、昨日と実装コストを鑑みた提案を行うことができたとのこと。
SketchとProttを用いたプロトタイピングツールを用いて、約1ヶ月ほどで検討がおわったとのこと。
技術の紹介だけでなく開発プロセスまで載せている珍しい資料。
開発と企画の橋渡し的な存在がいると良いものを早く作れるのはやはり真理なんだなと。
スイングポイントの検出に絞ってゴルフクラブを検出しているのも、この検討プロセスあってのことが気がする。
(普通なら前時刻検出しに行きそう)
2021年後半にリリースされたDocker ComposeのV2とV1の記法差異をまとめてくれている記事。
Compose Spec[1]に準拠しているのが特徴。
Compose Specは、クラウドやプラットフォームに依存しないコンテナベースのアプリケーションを定義するための、開発者向けの標準仕様です。
以下元記事からの貼り付け。
configs周りがかなり強化された印象。早めに乗り換えたい。
著名な検索エンジンからkeywordにマッチした画像を収集できるライブラリ。
It also provides built-in crawlers for popular image sites like Flickr and search engines such as Google, Bing and Baidu
# from https://github.com/hellock/icrawler
from icrawler.builtin import GoogleImageCrawler
google_crawler = GoogleImageCrawler(
feeder_threads=1,
parser_threads=2,
downloader_threads=4,
storage={'root_dir': 'your_image_dir'})
filters = dict(
size='large',
color='orange',
license='commercial,modify',
date=((2017, 1, 1), (2017, 11, 30)))
google_crawler.crawl(keyword='cat', filters=filters, max_num=1000, file_idx_offset=0)
撮ってくる画像の著作権までは気にしてなさそうなので注意。
AIモデルの出漁結果から学習データを復元する「Model Inversion Attack」がどれほど危険かを検証した記事。
結論から言えば、この手法はモデル出力から勾配法を適用する必要があるので、APIベースのAIサービスには適応できず、なおかつ復元結果はかなり不安定なので、そこまでの危険性はなさそう。
ナイーブに真っ黒な画像から進めた場合の結果
学習データの平均から進めた場合の結果
結果わかる通り、この手法の実適応はかなり難しく、被害事例も確認されていない
実行結果を見てわかるとおり、Model Inversion Attackには不安定なところがありますし、まだ実際の攻撃被害事例のようなものは当チームの知る限り確認されていません
この手法は大したことないようだが、今後このシリーズ紹介されてくる手法はもっと強そうな奴が出てきそうな予感。
日本語転移学習モデルにおける事前学習コーパスのフィルタリングの有無が性能にどう寄与するかを検証した事例の紹介。
どうやら必ずしもフィルタをした方が良いというわけでもない模様。
検証データセット
• JCommonsenceQA: 常識推論タスク • JNLI: 文関係推論タスク • JSTS: 文類似性推定タスク
メモ
google-researchからtrimapというtriplets lossベースの次元削減手法のJAX実装がリリース。
TriMap is a dimensionality reduction method that uses triplet constraints to form a low-dimensional embedding of a set of points. The triplet constraints are of the form "point i is closer to point j than point k". The triplets are sampled from the high-dimensional representation of the points and a weighting scheme is used to reflect the importance of each triplet.
現状だとtransform単体でのembeddingができないので、やや不便な印象。
論文の方にはパラメータごとの結果の比較が載っている。
ロス関数はこんな感じ、高次元データ用のサンプル重み付スキームが導入されている。
UMAPの方が便利そうだけど、メモ。
動画とタイトルを入力して良い感じのサムネイル画像を順位づけして自動選択する手法の提案論文 @NLP2022
CLIPとピーク検出をもとに以下のような画像の選択に成功している。
CLIPを用いることで、動画に対する教師データの作成を回避している。
ピーク検出手順
- CLIP スコアを時系列データとする
- CLIP スコアの移動平均を算出
- CLIP スコアの移動平均からピークを検出
- ピークの近傍からキーフレームを抽出
ランキングモデル
複数のキーフレームに対し,より良い画像を順位付けするランキングモデルを構築する.このランキングモデルの学習データには,朝日新聞デジタルの記事に含まれる画像と,その表示順を利用する.
最終的な順位はCLIPの順位とランキングの順位をもとに以下のように決定
CLIPの面白い活用事例。 単にCLIPスコアだけだと似たようなフレームばかり出てきそうだが、ピーク検出を一個挟むことでそれが回避されている。
医療コンペの取り組み方が紹介されているスライドなのだが、過去の上位解放が多数載っておりそっちが勉強になる。
以下気になったもの
メモ
AI(人工知能)開発ベンチャーのACESは2022年3月17日、営業支援AIツール「ACES Meet」の正式リリースを発表した。オンライン会議サービスの「Zoom」と連携し、会議の動画から話者ごとに会話を自動で書き起こし、議事録を作成する。1アカウント当たり月額7000円で提供する。
2021年11月にβ版をリリースし、今回は「話者分離」「表情解析」および「Salesforce連携機能」を追加した。同社が特許を保有する喜びや困った際の表情の特徴点を抽出する「REsCUE」というアルゴリズムに加え、視線推定や顔向き推定など複数のアルゴリズムを組み合わせて、参加者の心理的状態の変化を時系列で把握できる。
めちゃくちゃ安い気がする笑
公開されてる上位10解法を見て、面白かったものだけピックアップ
# from https://www.kaggle.com/c/ai-medical-contest-2022/discussion/314111
transforms_train = albumentations.Compose([
RandomResizedCrop(CFG.size, CFG.size, scale=(0.85, 1.0)),
HorizontalFlip(p=0.5),
ShiftScaleRotate(p=0.5, rotate_limit=15),
HueSaturationValue(hue_shift_limit=5, sat_shift_limit=5, val_shift_limit=5, p=0.1),
RandomBrightnessContrast(brightness_limit=(-0.1,0.1), contrast_limit=(-0.1, 0.1), p=0.5),
CLAHE(clip_limit=(1,4), p=0.1),
Cutout(max_h_size=int(CFG.size * 0.05), max_w_size=int(CFG.size * 0.05), num_holes=5, p=0.1),
Normalize(
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225],
),
ToTensorV2(),
])
# from https://www.kaggle.com/c/ai-medical-contest-2022/discussion/314111
transforms_train = albumentations.Compose([
albumentations.RandomResizedCrop(image_size, image_size, scale=(0.9, 1), p=1),
albumentations.HorizontalFlip(p=0.5),
albumentations.ShiftScaleRotate(p=0.5),
albumentations.HueSaturationValue(hue_shift_limit=10, sat_shift_limit=10, val_shift_limit=10, p=0.7),
albumentations.RandomBrightnessContrast(brightness_limit=(-0.2,0.2), contrast_limit=(-0.2, 0.2), p=0.7),
albumentations.CLAHE(clip_limit=(1,4), p=0.5),
albumentations.OneOf([
albumentations.OpticalDistortion(distort_limit=1.0),
albumentations.GridDistortion(num_steps=5, distort_limit=1.),
albumentations.ElasticTransform(alpha=3),
], p=0.2),
albumentations.OneOf([
albumentations.GaussNoise(var_limit=[10, 50]),
albumentations.GaussianBlur(),
albumentations.MotionBlur(),
albumentations.MedianBlur(),
], p=0.2),
albumentations.Resize(image_size, image_size),
albumentations.OneOf([
JpegCompression(),
Downscale(scale_min=0.1, scale_max=0.15),
], p=0.2),
IAAPiecewiseAffine(p=0.2),
IAASharpen(p=0.2),
albumentations.Cutout(max_h_size=int(image_size * 0.1), max_w_size=int(image_size * 0.1), num_holes=5, p=0.5),
albumentations.Normalize(),
])
上位陣の精度はどっこいどっこいだったので、正直どの手法でも問題なさそう
勝敗に一番利いたのは実務でも大事な、リークの発見だったように思える。
インターネットから集めたノイジーなデータでも綺麗に画像生成ができる?Self-Distilled StyleGAN について解説!
背景
StyleGANは綺麗な画像生成をするために画像の位置や姿勢を矯正した上でGANの学習を行っていたが、そのような画像を大量に用意するのは困難である。
訓練用の画像を収集するためにインターネット検索を活用することも可能だが、画像検索では犬という画像を検索しても多様な様式の画像やノイズになる画像も含まれるため、活用に課題があった。
Self-Distilled StyleGANでは学習に悪影響を与えるサンプルをモデル自身で排除できる機構self-filteringとマルチモーダルな画像様式に対応可能なmulti-modal based truncation trickを用いることで、インターネット画像からでも綺麗な画像生成を行えるGANの開発に成功した。
手法
self-filteringとは、VAEによる異常検知のように、画像を潜在変数にencodeした上でgeneratorによる画像生成を行い、再構成誤差がどの程度あるかで、ノイズとなるデータかどうかの判定を行うというもの。
今回の論文では、一度filteringを行った後の画像でStyleGAN2の学習を再度行っている。
multi-modal based truncation trickとは、GANの生成テクニックとして用いられてきたGlobal MeanへのTruncationではなく、潜在変数をいくつかのクラスタに分割した後、もっと近くにあるクラスタMeanへのTruncationを行う手法。
コメント
GAN自体あまり詳しくなかったので勉強になった。
GANによる画像生成は多様性と画像の綺麗さのトレードオフであることが理解できてよかった。
出典
インターネットから集めたノイジーなデータでも綺麗に画像生成ができる?Self-Distilled StyleGAN について解説!
Self-Distilled StyleGAN: Towards Generation from Internet Photos
github
[DLHacks]StyleGANとBigGANのStyle mixing, morphing