May the Neural Networks be with you

ニューラルネットワークと共にあらんことを

KDD'19 論文採択: マルチタスク学習とconditional attentionによる広告クリエイティブ評価

こんにちは@shunk031です。 Geforce RTX 2080Tiを50枚ほど使うとぽかぽかします。みなさんもぜひ試してみてください。

この記事は彌冨研 Advent Calendar 2019 2日目の記事です。

f:id:shunk031:20191201140720j:plain

国際学会KDD2019に論文が採択されました。 KDDデータマイニング分野で最も有名な会議です。 発表は8月にアラスカでありました。ポスター発表での採択です。 個人ブログにも記録として残そうと思います。

プレプリントarXivにアップロードしています。

arxiv.org

論文採択までの道のり

本論文はGunosyとの共同研究での成果となります。論文採択までの道のりは以下のGunosyデータ分析ブログに詳しく書きました。

data.gunosy.io

KDD採択による外部発表

KDD採択に関連して、勉強会や学会に招待していただきました。

ICML/KDD 2019 Pre-conference session

LAPRASさん主催の ICML/KDD 2019 Pre-conference session にて、概要の発表を行いました。

lapras.connpass.com

テキストアナリティクスシンポジウム

第15回 テキストアナリティクスシンポジウムにて、依頼講演を行いました。 依頼講演のあとはリサーチインターン生とメンターを交えてパネルディスカッションの時間がありました。

speakerdeck.com

参加レポート

KDDに参加した際の参加レポートを書きました。 僕は主に「広告xIT」や「解釈性・公正性」に関連したチュートリアルやワークショップに参加しました。

テンセントの広告技術が未来すぎる!AdKDD2019のテンセントAds招待講演まとめ

data.gunosy.io

公平性および説明性を考慮した機械学習 in KDD2019

data.gunosy.io

その他

KDD採択に関連して、いろんな方々に論文を読んでもらうことができました。 いくつかピックアップして以下に取り上げます。

arXivTimesさん

arXivTimesさんに取り上げてもらいました。ありがとうございます。

github.com

LINEさん

LINEさんの社内分析会議で取り上げてもらえました。ありがとうございます。

speakerdeck.com

所感

今回採択された論文はたくさんの人の支えが合って執筆できたものです。締め切り前は必死に論文を書いていたのを今でも思い出します。 たくさんの思いがこもっているエモい論文がこうして素晴らしい学会に採択されて少しホッとしました。

これからもたくさんの人とコラボレーションしながら、楽しく研究をやっていきます。

2018年の振り返り

こんにちは。@shunk031です。クリスマスにニューラルネットワーク"力"をお願いしましたが、何も貰えませんでした。サンタさんはHinton先生ではないみたいです。毎年同じお願いをしている気がします。

驚くべきことに2018年も今日で終わりみたいです。この1年何をやってきたか振り返りも兼ねて、思い出せるイベントについて軽く残しておこうと思います。

1月

2018年の目標をざっくり決めた

やりたいことをざっくり決めました。 shunk031.hatenablog.com

卒論執筆

卒論を書いてました。そんなに苦しまずに書けました。真面目に研究進めててよかったです。

言語処理学会予稿執筆

卒論でやっていたことを言語処理学会用に書き直していたりしました。こっちのほうが予稿が公に公開されるので先生のレビューが大変でした。初めてちゃんとした予稿を書いたので勉強になりました。

2月

頭痛が続く

2週間近く頭痛が続き、1週間ほどパソコンを触れないぐらいでした。病院で脳CTと血液検査を行いました。結果、脳は特に問題なかったのですが血液検査で肝臓が悪いことが判明して謎でした。処方された薬を飲んでいたら頭痛も治りました。人間の体って難しですね。

JSAI Cup 2018 人工知能学会データ解析コンペティションに参加

SIGNATEのクックパッドコンペに参加していました。去年よりもいい順位になったので少しは成長しているのでは説がありました。

www.slideshare.net

3月

言語処理学会 2018 in 岡山

岡山で開催された言語処理学会に参加しました。

卒業旅行

言語処理学会終わりに岡山から広島、島根を回りました。

大学卒業

え、もう大学4年間終わるんですか?という感じでした。とても充実した4年間でした。

FaberCompanyインターン

参加しました。3日で10万円もらえて最高でした。

mieru-ca.com

第2回Cpaw AI Competition主催

主催しました。参加者の方々に満足していただけてよかったです。

connpass.com

4月

大学院入学

学部から引き続き法政大学の大学院に進学しました。同時期にGPUが40枚ぐらい一緒に入学してきました。

NVIDIA Deep Learning Seminnerに参加

参加しました。最先端の研究事例とかを聞けて楽しかったです。

blogs.nvidia.co.jp

5月

研究室運動会

毎年やってるんですが、めちゃくちゃ楽しいです。

運動会の裏側 | 彌冨 仁研究室

AIPR2018執筆

卒論でやっていたことをまとめて国際学会に出そうということでやっていました。

arxiv.org

6月

DLLabハッカソン参加

参加しました。当日にチームに振り分けられ、対象データセットを用いた識別器を作るハッカソンでした。Azure上でdockerを動かして識別器を構築する感じでした。途中dockerコンテナがハングして消し飛んでしまい、ボリュームもマウントしていなかったのもあってスナップショットも消えてしまいました。スコア的にはトップを取れそうだったので悲しかったです。このあとめちゃくちゃdocker勉強しました。

dllab.connpass.com

Piascore DLアドバイザー

DLLabハッカソンでSoTAを詰め込んだ手法でモデルを構築しているところを認められ、同じチームだったpiascoreさまにお話を頂いてdeep learning技術中心のアドバイザーを始めました。僕自信もとても成長できるディスカッションを複数回させていただき、とても勉強になりました。

piascore.com

7月

バイト

何社かサマーインターンを応募して受かっていたのですが、最終的には好きなことをやらせていただけて時給も他社と合わせていただけたgunosyで広告周りの研究開発をさせていただくことになりました。

ISIC2018コンペティション参戦

ISIC2018の皮膚障害自動診断システムのコンペティションに参加していました。このころ結構大変で辛かった思いがあります。そもそもメインでNLPをやっていたのでCV系の話で英語論文書くとは思っていなかったです。

arxiv.org

8月

バイト

引き続き広告周りの研究開発をやっていました。そのままYANSに出そうという流れでエイヤでやりました。メンターさん、指導教員両方にとても迷惑を掛けてしまう感じになってしまったのですが結果をまとめられてよかったです。

HackU最優秀賞受賞

時間がない中進めていたHackUにて最優秀作品賞をいただくことができました。初めてみんなとチーム開発できたので楽しかったです。

shunk031.hatenablog.com

YANS2018 in 香川

夏休みにgunosyでやっていたことをまとめてYANSで発表しました。うどんを食べまわったのをよく覚えています。

data.gunosy.io

9月

Cpaw LT

LTで皮膚障害自動診断の最新動向について発表しました。

speakerdeck.com

研究室合宿

今年は秩父でした。B4が卒論中間発表の練習をするのを応援するだけなので修士ポジションは楽でした。最終日雨の中ラフティングをやったのをよく覚えています。

10月

AIPR2018参加

初めての国際学会で、そもそも初めての海外でした。めちゃくちゃ楽しかったです。また論文書いて海外行きたいです。

shunk031.hatenablog.com

shunk031.hatenablog.com

shunk031.hatenablog.com

shunk031.hatenablog.com

第3回Cpaw AI Competition主催

主催しました。参加者の方々に満足していただけてよかったです。

cpaw.connpass.com

11月

大学院の授業で論文読み

大学院のヒューマンインターフェースの授業で論文読みをやりました。

speakerdeck.com

初めての国際学会も終わったところで、こんなことを考えてました。

12月

Kaggle Meetup Tokyo LT参加

これまで主催してきたCpaw AI Competitionの話をさせていただきました。各所から同様のことをやりたいというお話もあり、いろいろなフィードバックをいただくことができました。

speakerdeck.com

アドベントカレンダー執筆

初めてアドベントカレンダーなるものに2つほど参加して記事を書きました。

shunk031.hatenablog.com

shunk031.hatenablog.com

修論中間発表

学会で発表したものをそのまま発表しました。難なく終わってよかったです。

国内学会論文執筆

情報処理学会2019と言語処理学会2019を並行して書いてます。大変なことになってます。

実装とか

Chainerを用いた再現実装をいくつか公開したりもしました。最近はPyTorchも書いたりしてます。

github.com github.com github.com github.com github.com github.com github.com github.com

まとめ

外部で発表することが多い1年でした。B4でインプットしたことを吐き続ける1年だったなとも感じます。来年はM2となり進路を考えなければならなくなったりと、純粋に研究だけに打ち込める時間が減りそうなのが心配です。引き続きインプット・アウトプットを大切にしていきます。

Xonshの設定を ~/.xonsh/*.py に分割して読み込む

こんにちは。shunk031です。この時期こたつに入って読む論文は最高ですよね。

この記事は Xonsh Advent Calendar 2018 17日目の記事です。

xonshの設定をする際、設定ファイルを複数に分割して読み込みたいなーと考えました。 そこでふと思ったのが「あれ?Pythonって先頭にドットがあるモジュールって読み込めるんだっけ?」という疑問です。

今回はホームディレクトリに .xonsh というドットから始まるディレクトリを作り、そこに分割した設定ファイル群をxonsh起動時に読み込む方法を調べました。

方法

まずは .xonshrc の設定例を示します。

import imp
import os
import sys

XONSH_DIR = os.path.expanduser('~/.xonsh')
sys.path.append(XONSH_DIR)

open_file, file_name, desc = imp.find_module(XONSH_DIR)
dot_xonsh = imp.load_module(XONSH_DIR, open_file, file_name, desc)

以上の方法で ~/.xonsh をモジュールとして読み込むことができます。

詳細

対象のディレクトリをPythonモジュールとしてインポートする

対象のディレクトリをPythonモジュールとしてインポートする場合は sys.pathディレクトリのパスを指定します。

import os
import sys

XONSH_DIR = os.path.expanduser('~/.xonsh')
sys.path.append(XONSH_DIR)

先頭が ドット であるディレクトリを読み込む

ディレクトリ名の先頭が ドット から始まる場合、 imp モジュールを用いて以下のように読み込みを行います。

import imp

open_file, file_name, desc = imp.find_module(XONSH_DIR)
dot_xonsh = imp.load_module(XONSH_DIR, open_file, file_name, desc)

このようにして .xonsh ディレクトリを dot_xonsh モジュールとして読み込むことができます。

まとめ

Xonshの設定を ~/.xonsh/*.py に分割して読み込む際の「ドットから始まるモジュールの読み込み」の方法についてまとめました。imp モジュールを用いたモジュールのインポートを用いることでドットから始まるモジュールも読み込むことが可能となります。

ChainerCVを用いた皮膚障害検出システムの構築

こんにちは。shunk031です。NIPS改めNeurIPSが開催されてるということは12月ですね。この記事は Chainer/CuPy Advent Calendar 2018 12日目の記事です。

f:id:shunk031:20181210095921p:plain

昨今はGoogleの本格的な医療分野への進出*1もあってか、医療xAIの分野に盛り上がりを感じます。 医療の現場では医師が目視で大量の診断画像を確認することが非常に多いです。 そこで今回は大量の診断画像から簡易的に病変部位を検出すべく、ChainerCVを用いた皮膚障害検出システムを構築していきたいと思います。

以降に皮膚障害画像等が含まれますので、苦手な方は 閲覧に注意して いただければ幸いです。

はじめに

近年Faster-RCNN*2やYOLO*3SSD*4など、深層学習ベースの物体認識手法が高い認識精度を記録しています。今回はこうした物体認識手法のうち、SSD (Single Shot Multibox Detector) を用いて悪性度の高い皮膚障害であるメラノーマの領域を自動で検出するシステムをChainerCVを用いて実装しました。

なお、今回実装した結果は shunk031/chainer-skin-lesion-detector にて公開しております。

github.com

皮膚障害について

皮膚がんは皮膚障害の一種で、アメリカでは毎年5,000,000症例以上診断がなされています。特に悪性黒色腫「メラノーマ」*5は皮膚がんの最も深刻な形態で、皮膚がんにおける死亡率の多くを占めています。

2015年には、世界的なメラノーマの発症率は35万人を超えると推定され、約6万人が死亡したという報告があります。死亡率はかなり高いですが、早期発見の場合は生存率95%を超えています*6。したがって初期病徴を迅速に捉え、早期発見することが重要になってきます。

使用するデータセット

医療分野におけるデータ分析にする際に一番ネックとなるのがデータセット少なさです。特に深層学習ベースの識別器を用いる際はとてもクリティカルな問題になります。今回のタスクである 皮膚障害検出 に対するデータセットも、「公開されていてそのまま使える」といったものは探した限りではありませんでした。

幸いながら、皮膚障害全般のデータセットISIC 2018 | ISIC 2018: Skin Lesion Analysis Towards Melanoma Detection という皮膚障害認識のコンペティションで用いられた、HAM10000*7*8という比較的規模の大きいデータセットがあります。

このHAM10000をベースに、今回のタスクである皮膚障害検出に対するデータセットを簡易的に作成することにしました。

以下の画像はHAM10000に含まれる、Lesion Segmentation (病変部位の輪郭検出) に用いられるデータの例です。

f:id:shunk031:20181210071919p:plain
from Task 1: Lesion Boundary Segmentation | ISIC 2018 https://challenge2018.isic-archive.com/task1/

こうしたground truthに対して病変領域におけるバウンディングボックスを構築し、病変領域の検出を行おうと考えました。

皮膚障害検出データセットの作成

皮膚障害検出データセットを作成する際には以下2つのステップが必要です:

以下順を追って説明します。

バウンディングボックスの生成

セグメンテーション用のground truthから皮膚障害検出用のバウンディングボックスを取得します。PILのImage.getbbox*9を用いることで、画像内の非ゼロ領域のバウンディングボックスを計算できます。

In [1]: from PIL import Image

In [2]: gt = Image.open('ISIC_0000000_segmentation.png')

In [3]: gt.getbbox()
Out[3]: (31, 29, 620, 438)

https://github.com/shunk031/chainer-skin-lesion-detector/blob/master/src/make_dataset.py#L72-L76

ChainerCVのutils*10visualizations*11を用いることで、簡単に画像の読み込みと可視化をして確認することができます。

ln [1]: from chainercv.utils import read_image

ln [2]: from chainercv.visualizations import vis_bbox

ln [3]: import numpy as np

ln [4]: left, upper, right, lower = gt.getbbox()

ln [5]: gt_img = read_image('ISIC_0000000_segmentation.png')

ln [6]: vis_bbox(gt_img, np.asarray([[upper, left, lower, right]]))

実行すると以下のようにバウンディングボックスを含めて可視化することができます。

f:id:shunk031:20181210090334p:plain

Image.getbboxを使うことで綺麗にバウンディングボックスを生成することができました。

次に、得られたバウンディングボックスをもとにVOCフォーマットのXMLファイルを作成します。

VOCフォーマットのXMLファイルの生成

先行研究の深層学習ベースの物体検出・認識アルゴリズムPascal VOC*12といった大規模なデータセットを元に学習を行っています。 今回はこのPascal VOCのアノテーションデータと同じフォーマットのXMLファイルを作成し、それらをもとに学習を行っていきます。 ChainerCVはPascal VOCデータセットを想定した便利メソッドが多数揃っているため、恩恵も受けやすいです。

以下のブログを参考に、VOCフォーマットのXMLファイルを生成してみます。

segafreder.hatenablog.com

In [1]: import xml.etree.ElementTree as ET

In [2]: def make_voc_based_xml(folder_name, file_name, bbox):
   ...:     """
   ...:     Make VOC based XML string
   ...:     """
   ...:     left, upper, right, lower = bbox
   ...:     annotation = ET.Element('annotation')
   ...:
   ...:     annotation = ET.Element('annotation')
   ...:     tree = ET.ElementTree(element=annotation)
   ...:     folder = ET.SubElement(annotation, 'folder')
   ...:     filename = ET.SubElement(annotation, 'filename')
   ...:     objects = ET.SubElement(annotation, 'object')
   ...:     name = ET.SubElement(objects, 'name')
   ...:     pose = ET.SubElement(objects, 'pose')
   ...:     truncated = ET.SubElement(objects, 'truncated')
   ...:     difficult = ET.SubElement(objects, 'difficult')
   ...:     bndbox = ET.SubElement(objects, 'bndbox')
   ...:     xmin = ET.SubElement(bndbox, 'xmin')
   ...:     ymin = ET.SubElement(bndbox, 'ymin')
   ...:     xmax = ET.SubElement(bndbox, 'xmax')
   ...:     ymax = ET.SubElement(bndbox, 'ymax')
   ...:
   ...:     folder.text = folder_name
   ...:     filename.text = file_name
   ...:     name.text = 'lesion'
   ...:     pose.text = 'frontal'
   ...:     truncated.text = '1'
   ...:     difficult.text = '0'
   ...:     xmin.text = str(left)
   ...:     ymin.text = str(upper)
   ...:     xmax.text = str(right)
   ...:     ymax.text = str(lower)
   ...:
   ...:     return annotation

https://github.com/shunk031/chainer-skin-lesion-detector/blob/master/src/make_dataset.py#L20-L53

実行すると以下のようなXMLファイルを生成することができます。

<?xml version="1.0" ?>
<annotation>
  <folder>ISIC2018_Task1_Training_GroundTruth</folder>
  <filename>ISIC_0000000_segmentation.png</filename>
  <object>
    <name>lesion</name>
    <pose>frontal</pose>
    <truncated>1</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>31</xmin>
      <ymin>29</ymin>
      <xmax>620</xmax>
      <ymax>438</ymax>
    </bndbox>
  </object>
</annotation>

こうして得られたアノテーションデータと皮膚障害画像から、皮膚障害の検出を行うモデルのトレーニングを行います。

モデルのトレーニン

今回はChainerCVのSSDを用いて、以上で作成したアノテーションデータを元にモデルのトレーニングを行います。SSDアルゴリズムの説明は今回省かせていただきます。実装に先立ちまして、ChainerCVをベースとした以下の資料がとても参考になりました。

qiita.com

ChainerCVを用いたSSDモデルの構築

ChainerCVのexampleを元にSSDを学習させるコードを記述します。具体的な実装は以下を御覧ください。

https://github.com/shunk031/chainer-skin-lesion-detector/blob/master/src/main.py

Chainer・ChainerCVは素晴らしい深層学習フレームワークなので特に躓くところはありません。もともとのexampleが素晴らしすぎるため、大部分をそのまま使い回すことができます。少し補足するならば、画像を読み込んで前処理をし、モデルに流すDatasetMixinクラスです。

import xml.etree.ElementTree as ET

import chainer
import numpy as np
from chainercv.utils import read_image

from util import const


class ISIC2018Task1Dataset(chainer.dataset.DatasetMixin):

    def __init__(self, img_fpaths, gt_fpaths):
        assert len(img_fpaths) == len(gt_fpaths), \
            f'# of image: {len(img_fpaths)} != # of ground truth: {len(gt_fpaths)}'
        self.annotations = self.load_annotations(img_fpaths, gt_fpaths)

    def load_annotations(self, img_fpaths, gt_fpaths):

        annotations = []
        for img_fpath, gt_fpath in zip(img_fpaths, gt_fpaths):
            anno_dict = self.parse_annotation(gt_fpath)
            annotations.append((img_fpath, anno_dict))

        return annotations

    def parse_annotation(self, xml_fpath):
        anno_dict = {'bbox': [], 'label': []}

        anno_xml = ET.parse(str(xml_fpath))
        for obj in anno_xml.findall('object'):
            bndbox = obj.find('bndbox')
            name = obj.find('name').text.strip()
            anno_dict['label'].append(const.LABELS.index(name))
            anno_dict['bbox'].append([
                int(bndbox.find(tag).text) - 1
                for tag in ('ymin', 'xmin', 'ymax', 'xmax')])

        return anno_dict

    def __len__(self):
        return len(self.annotations)

    def get_example(self, i):

        img_fpath, anno_dict = self.annotations[i]
        img = read_image(str(img_fpath), color=True)
        bbox = np.asarray(anno_dict['bbox'], dtype=np.float32)
        label = np.asarray(anno_dict['label'], dtype=np.float32)
        
        # Return arrays with the following shape
        # img: (ch, h, w)
        # bbox: (num bboxes, (ymin, xmin, ymax, xmax))
        # label: (num labels, )
        return img, bbox, label

chainer.datasets.DatasetMixin クラスを継承し、get_exampleにて画像とバウンディングボックス、対象ラベルを返すようにする必要があります。

モデルの評価

予測精度

学習して得られたモデルを元に評価を行います。物体検出で広く用いられている評価指標である mean Average Precision (mAP) を元に予測精度を評価します。

from chainercv.evaluations import eval_detection_voc

test_dataset = ISIC2018Task1Dataset(test, test_gt) # テストデータの準備
chainer.serializers.load_npz('model_best.npz', model) # 予め学習したモデルの読み込み

result = {'ap': [], 'map': []}
for idx in tqdm(range(len(test_dataset))):
    img, gt_bboxes, gt_labels = test_dataset[idx]  # テストデータからデータを取得
    bboxes, labels, scores = model.predict([img]) # モデルに予測させる
    score = eval_detection_voc(bboxes, labels, scores, [gt_bboxes], [gt_labels]) # mAP等を計算

    result['ap'].append(score['ap'])
    result['map'].append(score['map'])

print(np.mean(result['map']))
>> 0.9421965317919075

以上を実行した結果、今回構築したモデルにおいて mAPは 0.94 を記録しました。

予測結果の可視化

構築した皮膚障害検出システムは比較的高い精度を記録することができました。では実際のモデルの予測結果を見てみましょう。

成功例

以下に正しく検出できた例を示します。撮影の際に写り込んでしまう黒い枠に反応することなく、正しく病変部位を予測することができています。写り込んでしまっている体毛にも頑健であることが分かります。

f:id:shunk031:20181211062233j:plainf:id:shunk031:20181211062236j:plain
f:id:shunk031:20181211062244j:plainf:id:shunk031:20181211062248j:plain

失敗例

では次に正しく検出できなかった例を示します。システムがエラーしているサンプルを観察するのはとても重要です。

こちらは予測したバウンディングボックスがground truthよりも大きかった例です。

f:id:shunk031:20181211064354j:plainf:id:shunk031:20181211064358p:plain

こちらは病変部位の色が薄いパターンです。

f:id:shunk031:20181211064852j:plainf:id:shunk031:20181211064849p:plain

人間が診断しても正確な判断が困難なサンプルであることが見て取れると思います。こうしたサンプルに対してどのようにモデルを改善していくかが今後の課題になってきそうです。

おわりに

ChainerCVを用いて皮膚障害検出システムを構築しました。医療画像分野は取得できるデータがとても少なく、工夫をしてデータセットを作る場面があるかもしれません。そこで今回は他のタスクに利用可能な形でデータセットを簡易的に作成し、最新のモデルで病変部位の識別を行うシステムを構築しました。ChainerCVはとても簡単にモデルを作成することが可能で、なおかつ分析する際にもユーティリティーがとても便利に使えます。 医療xAIの分野は盛り上がりつつあります。PyTorchベースの医療診断フレームワーク*13*14も現れてきておりますし、これからの発展がとても楽しみです。

参考

*1:Scalable and accurate deep learning with electronic health records | npj Digital Medicine https://www.nature.com/articles/s41746-018-0029-1

*2:Ren, Shaoqing, et al. "Faster r-cnn: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015.

*3:Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

*4:Liu, Wei, et al. "Ssd: Single shot multibox detector." European conference on computer vision. Springer, Cham, 2016.

*5:5. 悪性黒色腫(メラノーマ)|一般社団法人日本皮膚悪性腫瘍学会 http://www.skincancer.jp/citizens_skincancer05.html

*6:About melanoma: https://challenge2018.isic-archive.com/

*7:Noel C. F. Codella, David Gutman, M. Emre Celebi, Brian Helba, Michael A. Marchetti, Stephen W. Dusza, Aadi Kalloo, Konstantinos Liopyris, Nabin Mishra, Harald Kittler, Allan Halpern: “Skin Lesion Analysis Toward Melanoma Detection: A Challenge at the 2017 International Symposium on Biomedical Imaging (ISBI), Hosted by the International Skin Imaging Collaboration (ISIC)”, 2017

*8:Tschandl, P., Rosendahl, C. & Kittler, H. The HAM10000 dataset, a large collection of multi-source dermatoscopic images of common pigmented skin lesions. Sci. Data 5, 180161 doi:10.1038/sdata.2018.161

*9:Image Module — Pillow (PIL Fork) 4.1.1 documentation  https://pillow.readthedocs.io/en/4.1.x/reference/Image.html#PIL.Image.Image.getbbox

*10:Utils — ChainerCV 0.11.0 documentation https://chainercv.readthedocs.io/en/stable/reference/utils.html

*11:Visualizations — ChainerCV 0.11.0 documentation https://chainercv.readthedocs.io/en/stable/reference/visualizations.html

*12:The PASCAL Visual Object Classes Homepage http://host.robots.ox.ac.uk/pascal/VOC/

*13:perone/medicaltorch: A medical imaging framework for Pytorch https://github.com/perone/medicaltorch

*14:pfjaeger/medicaldetectiontoolkit: The Medical Detection Toolkit contains 2D + 3D implementations of prevalent object detectors such as Mask R-CNN, Retina Net, Retina U-Net, as well as a training and inference framework focused on dealing with medical images. https://github.com/pfjaeger/medicaldetectiontoolkit

ワシントンDCで行われた国際会議で発表してきて、そのノリでニューヨークとボストンに行ってきた 4/4

こんにちは。@shunk031です。段々と寒くなってきましたね。足元にGPUマシンだけが暖かく見守ってくれる季節になりました。

初めての国際学会でワシントンDCに3泊4日、その後移動してニューヨークに3泊4日、ボストンに3泊4日ほど観光してきました。 そもそも海外渡航が初めてだったので、準備等も含めて旅行記のようなものを残しておきます。

f:id:shunk031:20181025074202j:plain

目次

学会発表

http://shunk031.hatenablog.com/entry/aipr2018_01shunk031.hatenablog.com

観光

なんとか初めての国際学会での発表を終えて、これからが本番です。ワシントンDC、ニューヨーク、ボストンの主要観光スポットをいい感じにまわる戦略でやっていきました。 観光するにあたり、Google mapのマイマップ機能はとても重宝しました。 dekiru.net

学会中は研究費で宿代などが出ていましたが、観光時にはAirbnbを使って格安で部屋をとりました。 abnb.me

移動には基本地下鉄を使いました。Pasmo/Suicaのような地下鉄カードを買っていい感じにチャージするとスムーズに乗れました。 夜まで観光してしまった場合はUberを使いました。初めて使ったんですがとても便利ですね。

https://www.uber.com/invite/epgfsxwww.uber.com

初日のワシントンダレス国際空港からホテルへは乗り合いのシャトルバスSuper Shuttleを使ってみました。 行き先を予め予約しておくとかなり格安で市街地のホテルまで乗せて行ってくれます。 私は予約せずにのりばのお姉さんに行き先を言って乗車したのですが、それでもUberの半額程度で目的地まで乗せてくれました。

www.supershuttle.com

ワシントンDC

学会発表終わりのワシントンDC観光編はこちら。

http://shunk031.hatenablog.com/entry/aipr2018_02shunk031.hatenablog.com

ニューヨーク

ニューヨーク観光編はこちら。とても刺激的な街でした。

http://shunk031.hatenablog.com/entry/aipr2018_03shunk031.hatenablog.com

ボストン

泊まったところ

  • Central Square駅から5分ぐらいのところでとてもアクセスが良かったです。すぐ近くに綺麗なコインランドリーがあり、洗濯もできました。

食べたもの

Union Oyster House

www.tripadvisor.jp

f:id:shunk031:20181026142919j:plainf:id:shunk031:20181026143327j:plain

Lobster Scampi, Mussels

f:id:shunk031:20181026142747j:plain Live Lobsters Prepared Boiled Or Broiled

f:id:shunk031:20181026142812j:plain Union Grilled Oysters

らーめん山頭火

www.tripadvisor.jp

f:id:shunk031:20181026144034j:plain

Headhall

www.tripadvisor.jp

f:id:shunk031:20181026144247j:plain Fish & Frites

f:id:shunk031:20181026144238j:plain Buffalo Fried Shrimp

f:id:shunk031:20181026144259j:plain New England Clam Chowder

  • MITの近くのお店です。とても賑わっていました。ビールの種類がとても多いみたいです。
Boston Chowda Co.

www.tripadvisor.jp

Lobster Roll & Lobster Pie

  • ロブスターロールが美味しいお店と聞いてランチできました。サクッと食べれていいのですが、$25ぐらいでびっくりしました。
Boston and Maine Fish Co.

www.tripadvisor.jp

  • ロブスターロールだけだと物足りなかったのでシュリンプカクテルを購入しました。
Summer Shack

www.tripadvisor.jp

f:id:shunk031:20181026145857j:plain

f:id:shunk031:20181026145853j:plain LOBSTERS IN THE ROUGH

f:id:shunk031:20181026145830j:plainf:id:shunk031:20181026145839j:plain

LOBSTER POTSTICKERS & MUSSELS

行ったところ

  • Quincy Market
  • Harvard University
  • Massachusetts Institute of Technology
  • The Boston Public Library
  • Prudential Center Tower

買ったもの

ワシントンDCで行われた国際会議で発表してきて、そのノリでニューヨークとボストンに行ってきた 3/4

こんにちは。@shunk031です。段々と寒くなってきましたね。足元にGPUマシンだけが暖かく見守ってくれる季節になりました。

初めての国際学会でワシントンDCに3泊4日、その後移動してニューヨークに3泊4日、ボストンに3泊4日ほど観光してきました。 そもそも海外渡航が初めてだったので、準備等も含めて旅行記のようなものを残しておきます。

f:id:shunk031:20181025074202j:plain

目次

学会発表

shunk031.hatenablog.com

観光

ワシントンDC

学会発表終わりのワシントンDC観光編はこちら。 shunk031.hatenablog.com

ニューヨーク

泊まったところ

www.tripadvisor.jp

  • Path駅から10分かからないぐらいの場所でした。初めて共用バスルームの部屋を借りたのですが、少し気を使いましたね。

食べたもの

Joe's Shanghai

www.tripadvisor.jp

f:id:shunk031:20181026124048j:plainf:id:shunk031:20181026124042j:plain

小籠包・麻婆豆腐・青椒肉絲

  • 夜に行ったのですがとても並んでいました。小籠包、麻婆豆腐、青椒肉絲を頼みました。ご飯が食べた過ぎて頼んだのですが、"ライス"が来ました。

The Halal Guys

www.tripadvisor.jp

f:id:shunk031:20181026124654j:plain Combo over Rice

f:id:shunk031:20181026125145j:plain

  • ニューヨークの屋台料理屋さんです。昼から行列ができていて、買ったら路上のベンチに座って食べる感じです。サイズがとても大きく、その日は1食これを食べただけで生活できました。

Benjamin Steakhouse

www.tripadvisor.jp

f:id:shunk031:20181026125421j:plain

f:id:shunk031:20181026125417j:plain Steak for Two

  • ニューヨークと言えばステーキ、ステーキと言えばBenjamin Steakhouseということなので行ってきました。高級なお店ほど店内が暗い理論があるらしいですが、写真の通り暗かったです。

www.tripadvisor.jp

www.tripadvisor.jp

  • Lucky CatとMuldoon's Irish Barはニューヨーク在住の知り合いの方と行きました。ニューヨーカーの生活を少し体験することができました。

行ったところ

f:id:shunk031:20181026125930j:plain

  • Times Square
  • Empire State Building
  • World Trade Center
  • Central Park
  • Battery Park
  • Statue of Liberty
  • Grand Central Station
    • ささやきの回廊

ボストン

ボストン観光編はこちら。有名大学を中心に観光しました。

shunk031.hatenablog.com

ワシントンDCで行われた国際会議で発表してきて、そのノリでニューヨークとボストンに行ってきた 2/4

こんにちは。@shunk031です。段々と寒くなってきましたね。足元にGPUマシンだけが暖かく見守ってくれる季節になりました。

初めての国際学会でワシントンDCに3泊4日、その後移動してニューヨークに3泊4日、ボストンに3泊4日ほど観光してきました。 そもそも海外渡航が初めてだったので、準備等も含めて旅行記のようなものを残しておきます。

f:id:shunk031:20181025074202j:plain

目次

学会発表

初めての国際学会発表編はこちら。たくさんフィードバックをいただけました。 shunk031.hatenablog.com

観光

ワシントンDC

泊まったところ

食べたもの

www.tripadvisor.jp

  • ちょうど宿泊していたホテルのすぐ裏にあったベーグル屋さんで朝食を買いました。現金のみだったので初手で現金がなくなりましたが美味しいベーグルでした。

www.tripadvisor.jp

  • アメリカはピザが何よりも安いと聞いて行きました。デフォルトで2ピース$5ぐらいだったのですが、日本のLサイズのピザ半分ぐらいの大きさでした。

www.tripadvisor.jp

  • ワシントンはシーフードが美味しいという噂を聞いたのでいきました。いろんな種類の海鮮がスパイシーなタレに漬かったComboというのを頼みました。

www.tripadvisor.jp

f:id:shunk031:20181026114309j:plain ALL AMERICAN

f:id:shunk031:20181026114320j:plain MUSSEL POT

f:id:shunk031:20181026131630j:plain VANILLA BEAN CHEESECAKE (BANANAS FOSTER)

  • 学会発表終了後に行ったお店です。FARMERS (サラダ)、ALL AMERICAN (ハンバーガー)、MUSSEL POT (ムール貝の鍋) を頼みました。デザートで食べたチーズケーキがとても重かったです笑

行ったところ

ワシントンの有名所の観光名所は回ったと思います。この他にもおすすめの名所があったら教えてください。

  • Dupont Circle
  • White House
  • Suntrust
  • Cosmos Club
  • United States Capitol
  • National Museum of American History
  • National Museum of African American History and Culture
  • Washington Monument
  • World War Ⅱ Memorial
  • Lincoln Memorial

その他

LIME

町中を歩いていると電動スクターを乗った人をたくさん見ました。何か調べてみるとLIMEという電動スクーターをシェアするサービスのようです。

www.li.me

アプリを入れて支払い情報を入れて設定するとすぐに使えるようになります。スクーターのロック解除に$1で、¢15/分程度で楽に移動できるのでとてもおすすめです。

ニューヨーク

ニューヨーク観光編はこちら。とても刺激的な街でした。 shunk031.hatenablog.com

ボストン

ボストン観光編はこちら。有名大学を中心に観光しました。 http://shunk031.hatenablog.com/entry/aipr2018_04shunk031.hatenablog.com