ごはんと飲み物は紙一重

Pythonを中心とした、データ分析や機械学習・深層学習関連の記事を書いてます。あとは気まぐれで書く日記や大学のことなどなど・・・

Jetson TX2 環境構築 リベンジマッチ(JetPack3.2.1) ~Openposeを導入するまで~

環境構築と戦う男

twdlab.hatenablog.com

半年ぶりくらいにですが、リベンジする機会があったので。というのも、半年前に構築した環境ではOpenposeが中途半端に動く(gstremerをつかってカメラでモデル実行はできるが動画を読み込ませて解析させるとエラーで落ちる)ということで、改善を試したのですがあんまり良くならなかったので一から入れ直すことに。

前記事同様、アーキテクチャaarch64であるため一筋縄ではいかないため、工夫する必要が。

Jetsont TX2のインストール環境

host環境

TX2 環境

  • JetPack 3.2.1
    • Ubuntu 16.04 LTS
    • CUDA 9.0
    • cuDNN 7.0.5
    • Python3.5.2 & Tensorflow 1.4.0
    • Opencv 3.4.0

VMUbuntuをインストールからJetpackをTX2にインストールまで

前回記事を参考にしながら勧めていきます。

Tensorflowのインストール

半年前の記事からだいぶ時間も立ってJetPack3.2用に作成されたwhlが配布されていたりしたため、このへんはbazelを使わずともスムーズに行けました。

github.com

上記リポジトリの中にあるTensorflow1.4のwhlをダウンロードして

sudo pip3 install てんそるふろーのwheel.whl

することで、pipの中にtensorflowが入ります。圧倒的感謝・・・!Python3.6を入れてる人はtensorflow1.5のwhlもあるみたいなのでそちらでもいいかもしれないです。

OpenCV3.4.0のインストール

jkjung-avt.github.io

ご丁寧に細かい説明や必要ライブラリから導入してくれるわかりやすいサイトでした。これを見ながらOpenCV3.4をMake・Installしていきます。

caffeのインストール

jkjung-avt.github.io

同様にcaffeも入れていきます。途中でrequirement.txtをつかってpip3にインストールする手順があるのですが、scikit-imageがうまく入らない方は、sudo apt-get install -y python-skimage Cythonでscikit-imageとCythonを入れてからpip3に入れてみましょう。

openposeのインストール

github.com

installation.mdを見ながら環境構築を進めますが、このときに

  • Make.config の CAFFE_DIR をインストールしたcaffeのディレクトリに設定する

caffeのときにオプション周りを細かく設定しているので、それをopenposeに適用させるだけなので難しい話ではなかったです。あとは、

cd build
cmake ..
ccmake .. # オプション周りが出ますが、基本[c]onfigure して [g]enerateすればok
make -j`nproc`
sudo make install

と手順を踏んで行くことでビルドできます。

openposeにembed cameraを認識させる。

jetsonの壁ですね。opencvcv2.VideoCapture(0)でembed cameraを認識してくれず、

Error:
No camera found.

となってしまうわけです。これを改善するために調べてみたのですが、

github.com

どうやら相性が良くないらしい。OpenCVで数値指定(defaultなら0)するやつは、全部ダメ臭くソースから細かくコマンドを入れなきゃいけない模様。動かないわけではないけど、ビルドするたびにソースを書き換えるのは億劫。

海外のnvidia質問サイトをみても、声を揃えて「面倒だからusbカメラつけてやったほうがええで」という感じ。

どうしてもやりたければ、上記サイトから変更する感じですね。

まとめ

今回はしっかりリベンジできたのではないかと。半年たった今だと環境構築記事が増えていたおかげか、だいぶ楽に構築することができました。onboardカメラを使わなければ動作はするので、今の所どうしてもカメラを使わなければ行けないという状況ではないため、ここに時間をさくのはやめようかと。

というわけでお次あたりは、

shiropen.com

こんな面白いものが発表されたのでこちらも環境構築してみようかなって感じです。

PyData.Okinawa & PythonBeginners沖縄 合同勉強会に参加してきました!

サボってましたすみませんぬ

6月初の更新ということでだいぶサボってましたが、本日はイベントに参加してきましたのでその感想などなどずらずら書いていこうかと思います。

イベント本編

pydataokinawa.connpass.com

沖縄で開催されるPyDataの中でもこの月の合同勉強会がひときわ人数が多く参加されてるのではないかと思います。去年に引き続き50名を超える参加者が会場に集まりました!

割合的には学生と社会人の割合が5:5ぐらいですかね。だいぶバランスよく集まっている感じでした。

Keynote 「やきうの人」こと @shinyorkeさん

個人的には「技術を選ぶためのスキル」と「スキルを磨くための手段・コミュニティ」の2つについてや、自分を高めるためにどのようにしていくのが良いかなどといったところがとても参考になりました!

ちゅらデータ株式会社 真嘉比愛さん & PythonBeginners沖縄 オーガナイザー 中澤長さん

※現時点でスライド共有がないので更新され次第載せていきます。

真嘉比さんはデータ分析者の1日というタイトルで、データ分析をする現場についてや、今はやっているディープラーニングの落とし穴などをストーリー仕立てで面白おかしく伝えてくれました!学生にはなかなかわからないビジネスの現場というものを伝えてくれました!

中澤さんは「モデルを圧縮してFPGAに押し込む話」ということで実際にPYNC-Z1を用いて、FPGAにモデルを乗せるための工夫や、FPGAを用いる利点などをわかりやすく説明してくれました!予算や電力などの維持費などに制限がある場合に非常に有効だということを知ることができました。

学生LT枠

今回もLT枠で発表してきました。このエントリの前のエントリで紹介した「Jupyter × RISE」でスライドをつくる話をLT用に拡張したものですね。

jupyterで分析をしているpythonistには最適なんじゃないかと思い今回紹介させていただきました。twitterでも結構評判が良かったので今回のLTはわりと成功したんじゃないかと思ってます。おかげさまでPyDataのベストLT賞もいただけたので。

トークセッション

トークセッションはSNS拡散禁止なので深い内容は紹介できないのですが、キャリア形成に関する質問をパネラーに投げたりしながら今回の発表者3名の様々な意見をいただける貴重な機会でした!

現地でしか聞けないあんなことこんなことがたくさん聞けて非常に有意義でした!

イベントを終えて

懇親会には別用で参加できなかったのですが、やはり参加規模が50名以上となるとかなり盛り上がって良いですね!また学生の参加が増えている気もしており、なかでも1年次からPyDataに参加したという学生もおり驚きが隠せません。

追い上げてくる後輩に負けないように自分もデータ分析・機械学習関連の知識や技術力を高めていかないといけないですね。6月は毎週のように技術系統の予定がびっしり詰まってるので毎週末が楽しみです!

JupyterにRISEを導入してcss使ってデザインを変えた話

Jupyterでまとめたノートをそのままスライドに使いたい!

このサイトを見てJupyterでスライドを作ることができるとわかり、使ってみるとこれまたらくらくちんでありがたいわけです。

Jupyterでmarkdownつかって丁寧にノートまとめながら、話す際にはpythonを実行しながらスライドを進められるわけですよ。ほんと素晴らしい。とくにハンズオンとかでは効果を発揮するんじゃないかと思うわけです。

ところで、スライドを作っていると常に思うのは、

自分だけのデザインにしたい!

ですよね。だれしもエンジニアがLT用スライドを作ったりなど思った際に必ずや頭をよぎるデザイン問題。

調べてみるとどうやら普通にcssファイルを使って簡単に編集できる模様。

簡単ですね。

なんでもできちゃうJupyterちゃんは万能ですね。

デザイン編集方法

基本的には、Jupyterセル上でマジックコマンドを実行することでcssを読み込みます。

%%html
<link rel="stylesheet" type="text/css" href="custom.css">

すると、cssに基づいてスライドテーマが変わるわけです。

あとは、chromiumベースのブラウザもしくは、chromeで「検証」を使いながら、テーマに関するdivタグやpタグなどを変更していきましょう。

github.com

githubに参考程度にスライドをカスタマイズするcssをアップロードしているので、中身をみながら読み解いていただけると、スライドのデザインが楽しくなってくるかと思います。

ちなみに背景を変更すると、pandasのtableが見づらくなってしまう現象が発生するので、tableタグをデザインして上げるとみやすくなってオリジナルのtableになるのでぜひやってみると良いかと。それと通常はmarginが大きめ取られているので、スライド上側にタイトルを持ってきたい場合にはmarginを小さくするといかにもLT用って感じのスライドになります。

良いJupyterライフを!

  • 参考サイト

RISE (Jupyter)の 見た目(色・フォント)を変更したい!

オシャレなTableデザインサンプル15点 | コトダマウェブ

【CSS】おしゃれなボックスデザイン(囲み枠)のサンプル30

Pythonでurl内にascii外の文字が含まれているときの対処法

クローラーを作っているときにurl内にutf8があってさあ困った。

やることは、

  • ascii外の文字を検出すること
  • 検出した上でutf8 to asciiにすること

の2点。

stackoverflow.com

上記のstackoverflowにasciiかどうか判別するsampleがあったのでこれを使うことに。

def is_ascii(s):
    return all(ord(c) < 128 for c in s)

すごくシンプルな書き方で好きですね。

でもって、utf8 to asciiにする方法ですが、urllibモジュールでできそうな感じがしていて、

if not is_ascii(url):
    parsed_link = urllib.parse.urlsplit(url.encode('utf8'))
    # pathの場合(quoteならpathをquoteへ)
    parsed_link = parsed_link._replace(path=urllib.parse.quote(parsed_link.path))
    url = parsed_link.geturl()

みたいにしました。もともとutf8なら2行目の.encodeはいらないので削除してもらって構わないです。

という感じで乗り切りました。

今後の進路について

今後の進路について

長々と書いても仕方がないので、結論から先に言うと就職することにしました。ここまでの過程に本当に色々あったのですが短く言うと、

  • 経済的に自立したいと思った
  • 今もらっている内定先で、学会参加や研究、論文発表ができること
  • 自分自身の技術を高められ、周りに評価してくれるか環境があること

ですね。前回のエントリと言ってることはほとんど一緒です。

twdlab.hatenablog.com

唯一違うところをあげるとするならば、

経済的に自立したいと思った

ところですかね。理由は色々とあるんですがそれは直接聞いてください・・・

さて就職先なのですが、もちろんこのブログを読んでくれている人なら知っているであろう、私がインターンしているちゅらデータさんですね。

この結論を出すまでに、社長の真嘉比さんが親身に相談に乗ってくれて、なおかつアドバイスもいただきながら最後の最後はDATUM本社訪問の時に気持ちが固まりました。

社長のもつビジョンが自分のこの先、五年十年先の人生の目標に沿っていること、考え方だけでなく技術力やその他の多くの場面で尊敬できるところがあるところ、数え切れないほど尊敬できるところがあるそんな社長の作り上げたい目標にぜひコミットさせてほしい、それが私の本心ですね。

大学院はどうするんだよという話ですが、

大学院は経済的な自立をしてから、強い気持ちを持って行きます

それは決して修士課程だけというわけではなく、やりようによっては修士をすっとばして博士を目指すもできることなど、いくつかイレギュラーなほうほうが存在するということです。

私は一般的な方法でストレートには行かず、ひねくれまがってイレギュラーな形で研究への道に進もうというわけです。

もちろんそれが一般的な方法よりも難しいことは承知ですが、それをやりきるくらいに強い目標と意志をもてば成せないことはないと思ってます。浪人したことで学んだので。

というわけで、私は就職という道に舵をきることが決まったので、のこり一年ないですが少なからず修士レベルいけるなら博士レベルに匹敵できるようなそんな研究をしていけたらなと思います。

もしもっと聞いてみたいことがあれば、ぜひお話を聞いてみたいので、この記事にコメントするなり、SNSで声をかけるなりお願いします。あ、もちろん飲みのお誘いでも結構ですよ笑

一難去ってまた一難、そんな午後

名刺をすらねば

明日からDATUM STUDIO株式会社訪問ということで、名刺入れを見直してみると数枚しかなかったので、久しぶりに名刺を作成することに。

1年前に学会に参加するために刷った100枚の名刺も気がつけばいろんな方と名刺交換されたわけで、ネットワーキングできている結果ですね。

というわけで意気込んで、名刺を印刷する用紙を購入。

値段も高くないため、印刷環境があれば結構お手頃に名刺が作れるという寸法。

ちなみに名刺はと言うと、

www.labelyasan.com

をつかって作りました。必要な画像はgimpでいじりながら、名刺のレイアウトはラベル屋さんで調整するという感じですね。

いざ印刷!

テストページにも印刷し問題ないなと確認して印刷してみると。

表と裏を逆に印刷しボロボロに

うそやん。

テストページで確認したにも関わらず、この失態。さらには余裕ぶっこいて10枚全部印刷したので名刺100枚分パァになってしまうという・・・

気を取り直して

失敗したからといって刷らないわけにはいかないので、またやり直しです。

今度はちゃんと数回のテストをした上で、さらにはレイアウトの調整も加えて万全の準備で印刷へ。

「今度こそ失敗しない」

確信したその時。そう俺は踏んでしまったのです。地雷を。

まさかまさかのインク切れ。幸いにも1枚目でストップできたので一時中断しインクを入れ替えることに。

三度目の正直

そしてついに三度目にして印刷に成功。

本当に疲れた。

本当はサクサク印刷して明日の準備をしようと思ったのに午後はこれで時間を潰してしまいましたね・・・

3Kを消費して得た教訓

練習とテストは入念に。いきなり本番しちゃだめ

こんなん当たり前やんと思うんですがね・・・自作に限らず、プログラムもサービスも一緒ですね・・・

焦って制作物を作ってもボロが出ちゃうので、自作こそ丁寧に計画的にです。

というわけでブログを更新していたらもう外は夜なわけで。早く荷物の準備して今日は寝ましょ寝ましょ。

むだい

更新が滞ってきてるので何か更新しようかと思った次第です。

何もやって言われてないかと言われるとそうでもなく、どちらかと言えば いまのちゅらデータ株式会社でのバイトに精を出している感じですかね。

インターン生は仕事の中の美味しいところだけを触れるので、 毎日毎日楽しく開発や資料作成の手伝いをしています。

他にはというと、

あ、

そういえば今週水曜日から電撃東京訪問ということで、 ちゅらデータのしゃちょーさんの案内の元、親会社である DATUM STUDIO株式会社へお邪魔いたします。

なんだかんだで一度も訪問したことはなかったので、 どういう雰囲気なのか、実際のデータアナリストさんの声とかを聞きながら、 自分の進路にさらに情報を付け加えていこうかなという次第です。

でも、そろそろ願書も提出時期なので、そんなにゆったりはしてられないのですが。

進路にあせあせしてるせいで、技術的なところだったり研究的なところに時間が裂けてなかったりという問題も発生していますが、早くこの辺バシッと決めてまた勉強して行かないと。