ごぶさたです、遠藤です。
最近、自宅の計算用マシンが息を吹き返しました。 システムを入れていたSSDがしばらく前に死亡し、以降ほったらかしになっていたのですが、 ようやくやる気が出てとりあえずOSが立ち上がってGPUを使った計算ができるようにまでは 復旧させられました。 今後は、計算用マシンを活用してCNNの実装実験とかを色々やってみたいなと思っています。
さて、ディープラーニングで何か遊ぼうとした時に、データセットが必須となります。 今回は、 Cityscapes Dataset を入手して Semantic Segmentation の実験の準備をしたいと思います。
この手のデータセットは数十GBのファイルをダウンロードする必要があり、基本的には データセットを使うマシン上で直接DLしたいものです。 GUIを立ち上げてブラウザで落としてもいいのですが、ここはせっかくなので wgetで データを落としてみたいと思います。
すると、ここで問題になるのが、 Cityscapes のダウンロードにはユーザー認証が必要 ということで、 忘備録をかねてメモを残します。
Step 1. ユーザー認証ログイン
ここのパスワード認証の仕組みをまとめると、以下のようになっています。
- ユーザーがフォームにメールアドレスとパスワードを記載する
- 送信ボタンを押すと、メールアドレスとパスワードが POST メソッドでサーバに送信される
- 認証成功すると、ダウンロードページに遷移し、その際に認証情報が Cookie に保存される
- ダウンロード時は、Cookie の認証情報を見て、サーバが認証ユーザであることを確認する
Cookie を使った認証になっているので、まず Cookie の取得を行う必要があります。 これも wget で行うことができます! コマンドは以下のとおりです。
$ wget --keep-session-cookies --save-cookies=cookies.txt --post-data 'username=XXXXXX&password=XXXXXX&submit=Login' https://www.cityscapes-dataset.com/login/
ここで、POST で送信するデータは、ユーザネーム、パスワードだけでなく submit=Login
も必要な点がポイントです。
これを省いた場合、うまく認証されませんでした。
適切な POST データを送らないと、当然ではありますが弾かれてしまうようです。
ここで疑問になるのが、どのようなPOSTデータを送っているかということですが、これは Web ブラウザで実際に ログインして、そこで送った POST データを使うのが良いです。 今時のブラウザであれば、開発者向けのデバッグツールが付属しており、何を送ったかがわかるようになっています。 ちなみに、Vivaldi であれば右クリックから、「検証」をクリックです。 多分 Chrome も同じです。
正常に認証されると、以下のようなレスポンスが返ってきます。 ダウンロードページにリダイレクトされているのが、成功の証です。
$ wget --keep-session-cookies --save-cookies=cookies.txt --post-data 'username=XXXXXX&password=XXXXXX&submit=Login' https://www.cityscapes-dataset.com/login/
--2017-11-21 19:29:39-- https://www.cityscapes-dataset.com/login/
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Resolving www.cityscapes-dataset.com... 139.19.217.8
Connecting to www.cityscapes-dataset.com|139.19.217.8|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://www.cityscapes-dataset.com/downloads/ [following]
--2017-11-21 19:29:41-- https://www.cityscapes-dataset.com/downloads/
Reusing existing connection to www.cityscapes-dataset.com:443.
HTTP request sent, awaiting response... 200 OK
Length: 8280 (8.1K) [text/html]
Saving to: ‘index.html’
index.html 100%[=========================================================>] 8.09K --.-KB/s in 0.001s
2017-11-21 19:29:42 (13.9 MB/s) - ‘index.html’ saved [40740]
Step.2: ダウンロード
ここまで来たら、Cookie の認証情報を使って、実際にダウンロードするのみです。 下記のコマンドで実行します。
$ wget --load-cookies cookies.txt --content-disposition https://www.cityscapes-dataset.com/file-handling/?packageID=XXXX (1-4 をいれる)
ダウンロードするファイルはいくつかありますが、とりあえず4種類取っておけば 一通り Semantic Segmentation を試せると思われます。 全部で60GB弱ありますので、気長に待ちましょう。
今回はこれで以上です。 また何か書けるネタがあれば随時更新していきたいと思います。
では。