ガートナー「日本における未来志向型インフラ・テクノロジのハイプ・サイクル 2020」について考察

またこの季節がやってきましたね、ガートナーによるインパクトをもたらす技術の考察です。

ガートナー、「日本における未来志向型インフラ・テクノロジのハイプ・サイクル:2020年」 https://www.gartner.com/jp/newsroom/press-releases/pr-20200910

今回、やはり注目はデジタルヘルスとロボティック・プロセス・オートメーション(RPA)です。他サイトでも述べられていますが、COVID19影響でやむを得ない規制緩和・テレワークや遠隔業務の半ば強制的な普及・業績リカバリのための効率化推進といったところが一気に進みました。RPAについては「実際に使ってみた」という企業が急速に増えたので、「なるほど、こんなもんか」といった状況になったのでしょう、ガートナーの図でも「過度な期待」の時期を通り過ぎている点が印象的です。

デジタルヘルスケアは医療関連の規制緩和や、個人データの扱いに関する制度整備によって、いっそうできることが増える予感がしますね。これまではプライバシーなどの観点で個人に関するデータをハンドリングしにくかった点が、目的次第では規制緩和されていくことも予想されます。

5Gや量子コンピューティングは、その技術レベルに見合った課題・目的が見つかるかどうかが鍵になります。別にいまのコンテンツや通信環境で満足しているならば4Gでもいいわけで、セキュリティの課題だったり、ARやVR、またはオンライン化による大容量通信のニーズと課題あったりが台頭すると、やっと価値を生むのでしょう。量子コンピューティングも同様に、何に使うのか、を見つけられるビジネスマンがどれだけ今度出てくるかが鍵ですね。

黎明期にAIプラットホームが挙がっていますが、これが何を具体的に指しているのかちょっと疑問です。よくあるGUIベースで「素人でもAI開発できます!」といった類だとすると、私はなかなか懐疑的です。きれいに整ったデータしか入力できなかったり、ちょっと凝ったモデルは実装できなかったり、なによりモデリング手法やテクニックは今後も進化を続けそうなので追従できないのではないかと思っているからです。

人工知能は過度な期待を過ぎたとあります、これには研究者の私も納得(まだ若干、期待値がオーバーな印象は残りますが)。人工知能単体ではなくデータや運用とセットで検討したり、日立などいくつかの企業がAIコンサルティング+導入支援のサービスビジネスを始めたりと、人工知能の特性や条件を把握したうえで社会実装が進み始めたと感じています。

劇場版 ヴァイオレット・エヴァーガーデン(★ネタバレあり★)

2020.09.18、ついに京都アニメーションの作品「ヴァイオレット・エヴァーガーデン」が公開されました。

とりあえずMOVIX京都で販売してたコンボセットの写真をどうぞ

食べづらいわ!!

や、きれいなイラストですし、ヴァイオレットさん素敵なんだけど、そんな切なそうでどこか憂き表情で見られるとポップコーン食べにくくないですか!?


ここからネタバレ

なかなかモヤモヤした箇所があったのでメモ。

少佐→ヴァイオレットへの「愛してる」は、親から子への愛情的なニュアンスだったのか?または、男性から女性へのニュアンスだったのか!?

アニメ本作では前者だと思っていたし、劇場版ではヴァイオレットから少佐へ「愛してるを伝えたい」と言ってるシーンもありましたが、それも子から親への想いに似た感情かと推測してました。

しかし、エンディング後に登場した、指切りしている2人のワンショットから察するに、どこかから感情は男女の愛になっていたのか!?

というのが私の疑問。


兄から「自由になれ」とも言われ、島で新たな居場所も見つけ、少佐は1度自由になりました。

また、自動手記人形の仕事など新しい生活に馴染んで、アニメ本編の最終回では「もう命令はいりません」とも宣言したヴァイオレットさんも、自由になりつつあると言えます。劇場版でも、少佐に会えるまであと少しというタイミングで、指切りして約束したからと仕事に戻ろうとするシーンもありました。

そんな、1度は自由になった2人が、再びお互いを必要として選んだ。戦場にいた頃とは全く異なるマインドで一緒になることを選んだ。この流れや描写は見事だと思いましたし、美しい関係性になったんだなぁと感動ものでした。

つなげる力 最高のチームに大切な13のこと

2019年のラグビーワールドカップ日本大会で初の8強進出を果たした日本代表、その背番号13を背負い続けたラファエレ・ティモシー選手の初の著書です。

ラファエレ選手はサモア生まれ、ニュージーランド育ち、そして大学から日本に来ました。数少ないチャンスを掴み、活躍を果たした背景には、どんな努力があったのか?書籍内で述べられています。

タイトル的には13の教訓があるような印象ですが実際はそんなことありません。単純に背番号13に合わせただけのようです。

内容は本人の自伝が中心で、日本代表になるまで、そして日本代表になってから、それぞれの時期に本人が悩んだこと、大切にしたことが述べられています。記載されている教訓の数は13なんてとっくに超えています

 

特に印象的だったのはラファエレ選手が家族から常々言われた「Be Happy(幸せだと思いなさい)」という言葉。幸せだと言っていれば言葉通り幸せになれる、という意図だそうです。

故郷を離れて日本で挑戦を始めたラファエレ選手は、ホームシンクになったり落ち込んだ時も、この言葉を思い出しながら努力を重ねたそうです。

あとは、最後のQ&Aコーナーで、毎朝のルーティンに「感謝していることと今日の目標を書く」というのが印象的でしたね。元ヘッドコーチのエディさんは毎朝アイデアを紙に書き出していたそうですが、1流の存在には「朝」と「紙に書く」というのが1つのキーファクターなのかもしれません。

“課題は解くものではない!” エンジニアが新規事業創造本部に2年間出向して見えたこと

“課題は解くものではない”

これが、ソフト開発や、IoTシステム設計や、機械学習の研究など、エンジニアや研究者としてバリバリ技術どっぷりなキャリアを積んできた私が、新規事業創造本部に2年の出向をして気づいたことです。

もう少し正確にいうと “課題は解くものではなく形成するもの” ということです。これは私の師匠からの「険しそうな山があったので頑張って登ってみました、みたいな研究テーマはダメ」という言葉にも似ていて、思考が素早くて実行能力の高い優秀な人材ほどハマりがちな罠です。


2017年の3月、私はお客様のデータを分析する日々を過ごしていて、次年度はどんな手法を適用しようかなどと無邪気に考えていた所に2年間の出向が伝えられました。まぁまぁ突然でした。

しかも技術系の部署ではなく新規事業創造本部、しかも新設の部署、しかも京都じゃなく東京、なんかもう環境が変わりまくりです。

異動先では事業実現するための技術アプローチを設計するという技術者らしい役割を与えられました。しかし、ゼロから事業を作っていく段階なので、ある程度アイデアが形になるまでは手を動かす仕事はお預け。私が生み出すものは商品でも技術プロトでもなく多産多死のアイデアとパワポ。チームメンバと「こんな事業はどうだ」「ここにチャンスがあるのでは!?」と議論する日々でした。

外部コンサルに論破されたり、外部コンサルを論破したりするうちに、pptをキレイに作る方法が身につき、従来以上にショートカットキーを使いこなすようにもなりました。何をやっているんだ自分はと思ったこともあります。


大きな気づきの機会となったのはCTOとの初ディスカッションです。チームで考え抜いた渾身の事業仮説プレゼンに対して、CTOからのコメントはシンプルな3つのクエスチョンのみでした。

“顧客は誰?価値は何?競合にどう勝つ?これをちゃんと示せ”

ああ、なんかもう、序盤からズレてたんだな。。。そんな気持ちになりました。自分でもビックリするのは、新規事業を考えているうちに3つのシンプルかつ最重要なクエスチョンを見失うことです。これは注意していてもいつの間にかやってしまうというタチの悪いものです。

どう儲ける?自社にできる?差別化は?と考えていると、知らず知らずのうちにHowにフォーカスしてしまい、解決すべき課題の特定や課題の具体化が未完のままHowの発想ばかり加速します。

この罠にハマりやすい大きな理由としてHowを考えることは夢が広がるようで楽しく心地よいことが挙げられます、だから本当にタチが悪い。そして、完成した美しい事業ストーリーを、Howを考える快感の外側から見たときに「で、これって人々が最も求めるものなの?ただの自分が一番やりたいことじゃないの?」となってしまうのです。


よくよく考えると新規事業創造だけでなく研究や開発でも同様です。別のシーンで次のような経験をしました。

学会聴講中にアイデアを閃き、意気揚々と技術部署の後輩に話を持ちかけ、その技術検証に乗り出そうとしたときです。決裁者の言葉はこうでした

“技術のImproveがあるのは認める、ただし顧客にとってのImproveが見えない”

またやってしまった、、、orz そんな気持ちでした。

まだ誰もやってない、まだ解決されていない、そんな問題を解けば役に立つだろうし論文にもなるだろう、高度なカッコいい手法で解決してやる。そんな考えが私の中にあったのです。師匠からの「険しそうな山があったので頑張って登ってみました、みたいな研究テーマはダメ」という忠告の通りでした。


このような経験を通して私が今後大切にしていきたい、そして皆様にお伝えしたいことは「課題は解くものではなく形成するもの」ということです。

世の中には課題がたくさん溢れていますが、解決する価値がある課題は一部分のみだったり、まだ顕在化していなかったりします。

解決する価値のない課題を、かっこいい手法を考えて検証を重ねて見事に解決したところで誰も喜びません。汗水流した達成感だけ残るので本人はいい気分だし、かえってそのせいで価値を認めない他人を馬鹿だと罵るかもしれません

大切なのは解決する価値のある課題を見極めること。または、まだ誰も気づいていない課題を見つけ出して形成することです。


いま私は京都に戻って少数部隊の研究所でアシスタントマネージャーを勤めています。大好きな京都で楽しい楽しい研究に打ち込む事になりますが、メンバーも含めてこの教訓を忘れずにいようと思います。

最後に、この学びを共有することで皆様の活動に役立てられれば幸いです。

Pytorch で Iterable.next() すると停止する

原因: num_workersの設定が正しくない

対策:num_workers=0 にする

こんな感じ

dataloader = DataLoader(trainset, batch_size=5, shuffle=True, num_workers=0)

 

以下:公式ドキュメントより引用

num_workers (python:intoptional) – how many subprocesses to use for data loading. 0 means that the data will be loaded in the main process. (default: 0)

つまり、下手にサブプロセスで実行しようとしてミスると停止する

 

花粉症薬のメモ日記

今年もまた花粉症のシーズンがやってきました。私は10年前からずっと花粉症がひどくて期間中は薬を服用し続けているのですが、花粉症薬は副作用がわりと強烈に出ることがあるので注意が必要ですね。

とはいえ、副作用より花粉症の方が辛いので結局薬を我慢して飲んだりするんですけど、、

この2年間はディレグラにお世話になっていたのですが、花粉症の症状は気持ちいほどピタッと止まる代わりに、飲み続けていたせいか副作用が気になりだして動悸で目が覚めたり、そもそも眠れない日が続いたりしました


引用元:くすりのしおり

 

処方してくれたお医者さんに相談したんですが、「覚醒効果はありません(キリッ」って言われておいおい嘘だろう、と。

という背景もあり、これは何かマズイ予感がするので、自分で調べたところディレグラは交感神経を刺激するため体が休まりにくかったり眠りにくくなったりするとのこと。(おいおい以前通っていたところはヤブ医者かよ

即、病院を変えました。

そちらの先生によると「ディレグラは強力な効果が期待できますが、飲み続けるような薬ではないですね」とのこと。

ナ、ナンダッテーーー!!

というわけで、最近は副作用を抑えめの新しい薬「デザレックス錠」が出たらしいので、こっちとしばらく付き合ってみます。

もちろん薬は個人差や相性もありますし、ディレグラは花粉症の症状を抑えてくれる素晴らしい薬です。今日伝えたかったことは自分が服用する薬なのでちゃんと調べて服用しようということ。(結論

 


引用元:くすりのしおり

 

 

 

Visual-SLAMのわかりにくい点を整理するブログ

大きな市場が見込めるロボット技術領域で競争が激化する昨今、その要素技術の1つであるSLAM(Simultaneous Localization And Mapping)も注目を集めています。しかし「なんとなくこんな処理だろう」と大雑把な理解はしているものの、いざ説明しようと思うと出来そうで出来ないのがSLAM。そこで、ちゃんと丁寧に内容を理解していこうというのが本日の内容です。

■SLAMの目的:

SLAMの目的は①自己位置推定と②マップ作成です。「えっ、目的が2つあるの?」となるかもしれませんが、正式名称も「Simultaneous Localization And Mapping」となっており、この2つは切っても切れない関係にあります。

空間内で自分がどの位置にいるのかを把握する自己位置推定では、そもそも「空間」がどのようになっているのか把握しなければ自己位置推定したところで情報量がありません。なにも存在しない無限遠方の3D空間で「アナタはいまココにいます」と世界座標系の(x,y,z)を用意されても困るわけです。

よって他オブジェクトが同じ座標系のどこにいるのかというマップがないと自己位置推定は意味を持たないわけです。

また、マップ作製も自己位置推定と密接な関係にあり、SLAMにおいて自己位置推定を抜きにMAP作成はできません。画像群を一括処理するSfMと比べてSLAMは逐次的に取得される画像からMAP作成するので、入力画像について「世界座標におけるどの位置からどの姿勢で撮影したのか?」という自己位置が推定できなければ入力画像から3次元を更新できません。

■SLAMの入力:

入力は画像です。RGBだったりRGB-Dだったりしますが、とにかく画像です。ただし異なる視点から複数回撮影された画像です。(1枚ずつ処理することもありますが)SLAMには複数の画像を用います。

■SLAMの出力:

出力は2つあります。1つ目はMapで、観測された対象物の世界座標系における3次元座標の集合です。ここには壁があって、ここには通路があって、という空間の把握に役立ちます。ただし観測された画像のあらゆる画素や特徴点がMap反映されるわけではありません。計算量が膨大になったり、対応点の算出が困難になったりするため、冗長な点を省いたり、特徴的な点だけをMapに反映することがあります。

2つ目の出力はPoseです、これは画像を撮影したときのカメラパラメータで、「どんなカメラでどの位置からどんな姿勢で撮影したのか」という情報に相当します。よって、カメラパラメータは画像1枚ごとに異なりますが、かといって全ての画像に対してカメラパラメータを推定するとは限りません。処理量が膨大になるのでカメラパラメータ推定を実行するのはMap作成に重要と判断した画像(これをKey- Flameと呼びます)だけで、冗長なものは間引くこともあります。カメラパラメータ推定は3次元空間内での自己位置推定と等価です。

カメラパラメータには内部パラメータと外部パラメータの2つがあります。内部パラメータとはカメラのスペックのようなもので、焦点距離やレンズ歪などに相当します。外部パラメータとは「世界座標系におけるカメラの位置&姿勢」とご理解ください(以下サイトの説明がわかりやすいです https://www.slideshare.net/takahashikousuke/camera-calibration-111239064)。

なお、カメラの内部パラメータは既知として、外部パラメータのみ推測するような問題設定が比較的多いです。

↓ Takahashiさんによるこの説明がわかりやすいです

 

■アルゴリズム:

Map推定結果とPose推定結果から「この位置からこの姿勢で撮影したらこういう画像ができるだろう」と計算された投影点、と、実際にカメラが撮影した観測点を比較して、誤差が最小となるようにMapとPoseを更新します。

■難しさ:

RGBで取得した画像を入力とした場合、画像からMap推定するときの中間過程に「Depth推定」が必要となります。つまり2次元のRGB画像から深度(Depth)を推定して3次元の世界座標系にマッピングするため、ここでも誤差が発生する可能性があります。Map推定の誤差なのか、Depth推定の誤差なのか、Pose推定の誤差なのか、見極めが難しくなります。

先述したように撮影した全画像についてマッピングや自己位置推定を行うと処理がいつまでも終わりません。よってMap推定に有効なサンプル(KeyFrame)を選定する必要があり、その選定方法について様々な手法が提案されています。
どの対象物(画素、特徴点)をMap推定やPose推定に使用するのかという選定にも工夫が必要です。特にPose推定については下手なものを用いるとカメラ間で対応が取れなかったりするためです。例えば濃度勾配が高い画素のみを推定に用いるなどの手法があります。

局所的には正確に対応点を取ってMapやPoseを推定できたとしても、それを逐次的に繰り返すうちに誤差が蓄積して、全体のMapやPose推定では歪みが出ることがあります。この対策として局所最適と全体最適の両方を取り入れた手法などが提案されています(Loop Closingなど)。

t-SNEをCUDA使って爆速で実行

機械学習の研究をしていると特徴量の分布を確認したくなることは多い。特にDomain Adaptationなどの研究になると分布の重なり具合の確認のために可視化が必要となる。

そういった場合によく用いられるのがt-SNEという手法だが、可視化のための低次元空間の算出の処理がとにかく重い。

うっかり多すぎるデータをINPUTしてしまうと、そのままフリーズしたりもする。

何か対策はないものか、、、と調べてたらあったよ(やっぱり)

 

 

機械学習の界隈は「こんなんあればなぁ」と思ったものはだいたい既に実装されているから恐ろしい、技術の進展早すぎ

論文: https://arxiv.org/abs/1807.11824

Code: https://github.com/CannyLab/tsne-cuda

Slide: https://hpml2018.github.io/HPML2018_6.pdf

Anacondaでのインストールも可能: https://anaconda.org/CannyLab/tsnecuda

 

めっちゃ早くなってるやん!!

 

なお、インストール後に『libcublas.so.<VERSION> not found』となった場合は

  • 『LD_LIBRARY_PATH』が正しいか確認
  • CUDAとマッチしたVerのtnsecudaをinstallしているか再確認

faster-RCNNなどDetectionモデルを動作させるときに引っかかる点

 

詰むパターン

  • ValueError: bg_num_rois = 0 and fg_num_rois = 0, this should not happen!
  • lossがnanになる

 

引っかかる箇所

  • 画素をカウントするとき左上座標を(0,0)とするのか(1,1)とするのかが異なり、データ前処理を誤ってアノテーション座標に(-1,-1)が含まれてしまう。
  • コード修正しても『data/cache/***_roidb.pkl』を削除しないとキャッシュを読み込んでエラーが出続ける
  • ANCHOR_SCALEが小さすぎるとLOSSが果てしないことになって「nan」になる