stMind

about Tech, Computer vision and Machine learning

これが未来のサッカー観戦か!Zoomでバーチャルスタンド

www.bbc.com

これからの時代のサッカー観戦はこうなるのかもしれない!

デンマークで行われたリーグ戦、当然ながら現地にファンはいないのだけど、スタジアムに設置された巨大スクリーンにはZoomにログインしたファンの姿が!!(動画は下のURLから)

https://www.espn.com/soccer/danish-sas-ligaen/story/4103225/danish-superliga-returns-in-front-of-supporters-on-zoom

40x2.8mのスクリーンに約200人のファンが映し出され、合計で1万人のファンがリアルタイムに観戦したようです。リモートとはいえ、選手はファンのリアクションが感じられるし、ファンも現地にいるような感覚になれるし、とても良い仕組みだと思う。

プレミアリーグも6月17日に再開されるようだし、感染拡大を予防しつつ、新しい体験を提供する仕組みづくりに取り組んでほしいなと思う。

Scene text detection/recognitionのためのTotal text dataset

GitHub - cs-chan/Total-Text-Dataset: Total Text Dataset. It consists of 1555 images with more than 3 different text orientations: Horizontal, Multi-Oriented, and Curved, one of a kind.

coco-textに対して40分の1くらいの画像数ですが、curved textのground truthを含むTotal-Text-Dataset。

アノテーションデータは、ここからダウンロード出来ます。 また、画像はこちらからダウンロード出来ます。

アノテーションはmatファイルで、下記のフォーマットで提供されています。

  • Column 1-2 = X-coordinate
  • Column 3-4 = Y-coordinate
  • Column 5 = Text
  • Column 6 = Orientation (c=curve; h=horizontal; m=multi-oriented; #=dont care)

画像に表示して確認してみました。下記のコードをipythonなどで実行すれば、別の画像にも同じように出来るはずです。

In [1]: import cv2

In [2]: import scipy.io as sio

In [3]: import numpy as np

In [4]: data = sio.loadmat('gt_img13.mat')

In [5]: img = cv2.imread('img13.jpg')

In [6]: for i in range(data['gt'].shape[0]):
   ...:     points = np.array([(x, y) for x, y in zip(data['gt'][i][1][0], data['gt'][i][3][0])], dtype=np.int32)
   ...:     cv2.polylines(img, [points], isClosed=True, color=(0, 255, 0), thickness=3)
   ...:     

In [7]: cv2.imshow('TEST', img)

In [8]: cv2.waitKey(0)

In [9]: cv2.destroyAllWindows()

f:id:satojkovic:20200528221125j:plain

ICCV2017の論文、Revisiting IM2GPS in the Deep Learning Era

論文を読むのがそれなりの速度で行えるようになってきた。せっかくなので、読んでいるものをこのブログにまとめていこうと思う。 といっても、詳細に入るのではなく、主にAbstractとIntroduction、代表図面のあたりのまとめで、従来手法の課題や著者のアプローチの概要を把握した内容にする。

まずは、タイトルに有るように、画像から地理位置情報を推定するタスクに関する論文。

Introduction

メタデータの付与されてない一枚の画像から位置を推定するのは、相当難しい。 そこで、クエリ画像に対してGPS座標を推定するタスクと考える。 GPS座標であれば、アプリケーションにも依るが、ある閾値以内で推定成功と判定する事ができる。

このとき考えられる手法の一つは、データベースに含まれる位置の既知な画像の中から、クエリ画像と一致する画像を局所特徴マッチングで検索するアプローチ。 ただし、このアプローチが機能するのは、

  1. データベースに含まれる画像とクエリ画像が、比較的近い見え方であること
  2. クエリ画像にランドマークとなるようなコンテンツが含まれていて、局所特徴マッチングしやすい が条件。

とはいえ、これらが成り立つことは想定できないことが多いので、局所特徴マッチングに頼らないアプローチが必要。

従来手法と課題

Im2GPSでは、Instance recognitionとScene recognitionの論文で使わたHand-craftedな特徴量を導入して、instance levelなマッチング(「ギリシャアテネにある建物」というレベル)による方法を提案した。

PlaNetでは、地球表面を細分化して、細分化したクラスの分類問題として定式化。画像からクラスの確率分布を出力するCNN(細分化した各クラスのメタデータがついた画像を用いた学習)を使うことで、大きな精度向上を果たした。

PlaNetの方法の課題は

  1. 得られる位置精度が粗い(もっと細かい位置を本当は知りたい)
  2. CNNで直接クラス分類するのは難しいタスク

アプローチ

この論文では、上記二つを併用して性能向上を目指した。実際に、PlaNetに対して+10%以上の性能向上が出来て、Deep featureの利用とこの特徴量による画像検索の構成にしたことによるものと考察してる。

f:id:satojkovic:20200527213001p:plain

Reference

Revisiting IM2GPS in the Deep Learning Era: https://arxiv.org/pdf/1705.04838.pdf

Wavenetを用いた疑似エフェクターの実現

teddykoker.com

ギターのエフェクターをWavenetで生成してやろうという試み。

モデルは24層のWavenetをベースにして、モデルサイズ削減と推論高速化のために出力を単一値(1x1フィルタで256→1に)にして、正解と予測値の差を最小化するように学習しているようです(Adamで1500エポック、RTX2070で2時間ほど)。

リンク先では両方の音源を聴き比べることが出来るのですが、どちらが生成したもので、どちらが実際に弾いたものか分からない。すごい!

コミット履歴として可視化するBERTとその派生手法

amitness.com

コミット履歴では追加されたコード(+)と削除されたコードが(-)が差分として可視化されますが、Githubに論文がプッシュされて、その後の論文が改善点をコミットしていけば、論文は重要な差分だけに圧縮されて把握しやすくなるのでは?というアイデアTwitterにポストされていたみたいで、BERTとその派生手法をPoCとしてやってみたよ、という内容。(自動生成ではなく手動で作ったのだと思われる)

論文のContributionsがコミット履歴として可視化されたイメージですね。コミットメッセージは、なぜそのようなアイデアを考えたのか、どのように実現したのか、結果はどうなったのかが記述されていれば論文を読んだり、検証したりしやすくなりそうですね。

The boring technology behind a one-person Internet companyの話

www.listennotes.com

ListenNoteというポッドキャスト検索エンジンがあるのですね。個人としては、ポッドキャストってあんまり使ってないのだけど、タイトルに惹かれて読んでみた。ちなみに、タイトルにあるboring technologyは退屈なということではなく、慣れ親しんだ技術ということのようです。

  • ListenNotesは、ListenNotes.comAPIを提供している
  • 全てAWS上で動いていて、合計20サーバーで構成(production-something)
  • BackendはDjango / Python3、OSはUbuntu
  • Web FrontendはReact + Redux + Webpack + ES

その他にも、サーバ構成管理や開発ツールなども詳細に紹介されてて、一見の価値ありです。

Tensorflowとpythonで書かれたmusic source separationのためのライブラリSpleeter

deezer.io

github.com

music source separationは、複数の楽器演奏パートの合成音源から個別の演奏パート(trackやstem等と呼ぶ)に分割するタスクのこと。例えば、ボーカル、ベース、ドラム、その他、それぞれの音源に分割するなど。

https://archives.ismir.net/ismir2019/latebreaking/000036.pdf

ISMIR2019(International Symposium on Music Information Retrieval)のextended abstractにあるImplementation detailsは以下の通りです。

  • 12層のU-net
    • 6層のencoder / 6層のdecoder
  • Single GPUで1週間学習
  • musdb18のテストデータセット(3時間27分のaudio)に対して、4つのパートに分割して、wavファイルに出力するまで2分以下
    • Tensorflowのモデルをロードする時間(15秒程度)を含む
    • RTX2080Ti、Intel Xeon Gold 6134 CPU @ 3.20GHz
  • 100秒のaudioであれば、1秒以下で4つのパートに分割できる
  • 公開の既存システムOpen-Unmixと比較して、多くの指標で精度向上