サーバ

2019年06月04日

AutoML Video Intelligenceの使い方



AutoML Tablesばっかり注目されますが
Video Intelligenceを実際に使おうとした時によく分からない事が結構あったので、その原因と解決法です。


https://console.cloud.google.com/video-intelligence/introduction
(APIを有効にしたら)始めるを押します。


AutoML Video Intelligence


データセットの作成をクリックします。

Cloud Storage


先に動画ファイルをGoogle Cloud Storage にアップロードします。


train.csv


ファイルリスト CSV ですが、この仕様が紛らわしいです。
ここで指定するcsvは、その先でデータセットcsvを指定する形式になっているからです。 ここで1回で指定すれば良いのではないかと思うのですが...


train.csv はこのような形式で指定します。
gs://bucket/video.mp4,ok,1,2
gs://bucket/video.mp4,ng,2,3
test.csvの方は、第二カラムのラベルが要りません

そして、ファイルリスト CSVはこう指定します。
TRAIN,gs://bucket/train.csv
TEST,gs://bucket/test.csv
これらcsvファイルは、すべてCloud Storage上に配置します。


しかし十分なデータが必要です。足りないと
 一部のラベル(例: 「ok」)で十分な video segments が割り当てられていません。video に video segments をさらに追加するか、追加の CSV ファイルをインポートしてください。
などとメッセージが出ると思います。

学習データにはファイル自体が10以上は必要なようです。
同じファイルを指定すると、deduped扱いされます。
同じファイルを別名にしても、deduped扱いされます。
続きを読む

tak_tak0 at 00:22コメント(0) この記事をクリップ!

2019年05月20日

日本語自然言語処理ライブラリGiNZAの使い方



githubの例では、形態素解析しかしてない様に見えるので、有効性が分からないのですが
GiNZA開発の背景と意義は、
日本語の自然言語処理では、各種処理(形態素解析、係り受け解析)はそれぞれ個別のライブラリとして存在していたので、研究者は実際の自然言語処理の場面では各々を統合する必要がありました。
また、日本語を前提とした言語処理に依存したシステムでは、国際化対応が難しくなります。
多言語対応システムでは、辞書データを変更するだけで対応が可能なので、日本語でもそのような統一的な処理をしたかったのでした


日本語の単語依存構造解析のための長単位解析
田中貴秋 林克彦 永田昌明  NTTコミュニケーション科学基礎研究所
人工知能学会全国大会(第30回)2016
日本語の構文解析は,文節依存構造 (係り受け) 解析として行われることが多いが,
Universal Dependencies (以下UD) [Towards a Universal Grammar for Natural Language Processing, 日本語 Universal Dependencies の試案] のような言語横断的な言語アノテーションを考えると,
適用可能な言語が限定される文節単位の構造よりも,単語単位の依存構造の方が扱いやすい
上記のような理由で、単語依存構造解析では、文節単位ではなく単語単位での関係性を記述します。




pip install "https://github.com/megagonlabs/ginza/releases/download/v1.0.2/ja_ginza_nopn-1.0.2.tgz"
基本的にはこれだけでインストール出来ます。
python -m spacy.lang.ja_ginza.cli

Loading model 'ja_ginza_nopn'
mode is C
disabling sentence separator

これは、コンソールから入力して解析結果を得る方法です。
# text = これは、コンソールから入力して解析結果を得る方法です。
1 これ 此れ PRON 代名詞 _ 13 iobj _ SpaceAfter=No|NP_B
2 は は ADP 助詞-係助詞 _ 1 case _ SpaceAfter=No
3 、 、 PUNCT 補助記号-読点 _ 1 punct _ SpaceAfter=No
4 コンソール コンソール NOUN 名詞-普通名詞-一般 _ 6 nmod _ SpaceAfter=No|NP_B
5 から から ADP 助詞-格助詞 _ 4 case _ SpaceAfter=No
6 入力 入力 VERB 名詞-普通名詞-サ変可能 _ 12 advcl _ SpaceAfter=No
7 し 為る AUX 動詞-非自立可能 _ 6 aux _ SpaceAfter=No
8 て て SCONJ 助詞-接続助詞 _ 6 mark _ SpaceAfter=No
9 解析 解析 NOUN 名詞-普通名詞-サ変可能 _ 10 compound _ SpaceAfter=No|NP_B
10 結果 結果 NOUN 名詞-普通名詞-副詞可能 _ 12 obj _ SpaceAfter=No|NP_I
11 を を ADP 助詞-格助詞 _ 10 case _ SpaceAfter=No
12 得る 得る VERB 動詞-非自立可能 _ 13 acl _ SpaceAfter=No
13 方法 方法 NOUN 名詞-普通名詞-一般 _ 0 root _ SpaceAfter=No|NP_B
14 です です AUX 助動詞 _ 13 cop _ SpaceAfter=No
15 。 。 PUNCT 補助記号-句点 _ 13 punct _ SpaceAfter=No
Ginzaで得られる情報とその形式はこのようになっています。



コーディング例ですが、
nlp = spacy.load('ja_ginza_nopn')
この時
OSError: [E050] Can't find model 'ja_ginza_nopn'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.

こうなってしまいます。

このモデルがどこにあるのかと言うと、
tar -xzvf ja_ginza_nopn-1.0.2.tgz
ja_ginza_nopn-1.0.2.tgzの中の、
ja_ginza_nopn-1.0.2/ja_ginza_nopn ではありません。
ja_ginza_nopn-1.0.2/ja_ginza_nopn/ja_ginza_nopn-1.0.2 の方だと思います。

ディレクトリ構造を操作してないなら、このように指定すると思います。 ディレクトリ名を指定します。
nlp = spacy.load('ja_ginza_nopn-1.0.2/ja_ginza_nopn/ja_ginza_nopn-1.0.2')


単語依存構造解析に利用する設定ファイル一式は
このディレクトリ以下にあります。




tak_tak0 at 00:19コメント(1) この記事をクリップ!

2019年05月07日

NVIDIA, SPADEで独自モデルの学習方法

SPADE Project Page
SPADEのコードを見たいと思っていまして、 Code (to be released soon) だったのですが、
使えるようになっていたので、それの方法です。
git clone https://github.com/NVlabs/SPADE.git
cd SPADE/
pip3 install -r requirements.txt
基本的にはこうするだけです。 Synchronized-BatchNorm-PyTorchは、学習時に使います。
cd models/networks/
git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch
cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm .
cd ../../
チュートリアルでは、 COCO-Stuff Dataset を使うようにとのことですが、
やはり独自データセットで学習したいと思います。

images, labels, インスタンスマップは、datasets/coco_stuffと同じディレクトリ構造にする必要があります。
"things instance map" と "stuff label map" の両方の境界を組み合わせたインスタンスマップを作ったとの事ですが、実際に用意されてる画像を見てみると、 ラベル と インスタンスの差がほとんど無いように見えるので、インスタンスマップ画像が本当に必要なのか疑問に思うのですが...

また
custom データセットを使いたい場合、 coco_generate_instance_map.pyを使用するとか書いてありますが、
コードの方を見れば分かる通り、 coco_generate_instance_map.pyは実行出来るファイルではありません。実行しても何も起きません。非常に語弊があると思います。




データセットですが、
画像データを以下の3ディレクトリに配置します。
datasets/dataname/train_label/
datasets/dataname/train_img/
datasets/dataname/train_inst/
各ディレクトリの、ラベル,インスタンス,元画像ファイルは同じ名前である必要があります。
そして、画素の値と実行時オプションに、明示的ではない厳しい制約が有るようです。

--dataroot は要りません。
!python train.py --name experiment_name --dataset_mode custom --label_dir datasets/dataname/train_label --image_dir datasets/dataname/train_img --instance_dir datasets/dataname/train_inst
オプションの与え方はこの様にします。

よく意味が分からないオプションの意味ですが、
クラスラベルとして未知のクラスがある場合は--contain_dopntcare_labelを指定します。
未知クラスを除いた、入力ラベルクラスの数は --label_nc
--no_instanceを指定した場合、インスタンスマップを入力として追加しません。

........................
続きを読む

tak_tak0 at 23:23コメント(0) この記事をクリップ!
サイト内検索
にほんブログ村 科学ブログへ
にほんブログ村
adsense
Archives
amazon
blogchart
QRコード
QRコード
Recent Comments