某家電メーカーの技術者がスキルアップのために勉強したことを記録するブログですこの広告は、90日以上更新していないブログに表示しています。Learningのネットワークを動かしてみました。今回はtensorflowのソース内にあるstruct2depthです。慣れていればどうってことないのでしょうか、初見でつまずいてしまったので、手順を記録しておきます。Brainが開発した、単眼カメラから深度とエゴモーション(カメラ自身の動き)を推定する手法です。取得するのが難しい、距離の正解情報を必要とせずに距離推定器を学習させることができるのが特徴です。GITHUBからレポジトリをクローンするhttps://github.com/tensorflow/modelsstruct2depthはツリーの中のresearch/struct2depthにあります。Cityscapesは車載カメラで撮影した画像と距離情報を含むデータセット4推論したい画像をinputフォルダに格納する試しにKITTIの画像データの一部を使って推論を行います。KITTIのデータセットはこちらからダウンロードできます。Image_03の中の画像をinputフォルダにコピーします。5util.pyを修正するこのまま推論を実行すると私の環境では画像ファイルの読み込みで以下のエラーが発生しました。byte以下のようにutil.pyを修正します。model/KITTI/model-199160outputフォルダに推論結果(距離画像とegomotion)が出力されます。以下は結果の一例です。右側の自転車に乗っている人と電柱が正しく推定できていることがわかります。カメラ入力での推論ここまではGITHUBの情報とほぼ同じですが、USBカメラで撮影した画像を入力してリアルタイムで距離推定を行ってみました。inference.pyの中の関数_run_inferenceを以下のように修正し、inference_webcam.pyという新しいpythonスクリプトを作ります。cv2.destroyAllwindows()ソースコードの中で入力画像の加工を行っています。ネットワークの入力解像度が416x128なので、カメラで撮影したVGAの画像をクリップ、リサイズして416x128の画像を作成しています。以下のコマンドで推論を実行します。model/KITTI/model-199160以下の画像はノートPCについているカメラで撮った映像を入力したときの結果です。赤で囲ったところに手をかざしているのですが、何なのかよくわからない結果となっています。右側の黄色っぽところは何もないのですが、この部分は距離が近いと推定されています。車載カメラで撮影した映像とノートPCについているカメラで撮った画像では違いが大きすぎて、学習結果をそのまま使うには無理があるのでしょう。用途に合わせた再学習が必要ということですね。まとめGoogleが開発したstruct2depthというネットワークの動かし方とUSBカメラで撮った映像で推論する方法をまとめてみました。何かのお役に立てればと思います。今回はmotoさんの「転職と副業のかけ算」という本を読んだので、学んだことを書いていきたいと思います。単行本(ソフトカバー)この商品を含むブログを見る著者のmotoさんのことはtwitterで知りました。この本が発売された直後、多くの推薦ツイートが挙げられていました。本書は自分の最近の活動のテーマである、「会社に縛られず生きていける力をつける」ということと共通する内容であり、その成功例として研鑽の仕方、キャリアの作り方を学ばせていただきたいと思います。いった昭和、平成の雇用制度はこれからは期待できません。会社の言いなりになり、言われた仕事をこなすだけの人間はいつリストラされてもおかしくありません。これからの時代、安定的に暮らしていくには個人で稼ぐ力を身に付けていくことが必要です。会社に依存せず、いざとなったら転職できる、副業で収入を得るといった状態にしておくことが理想的でしょう。自分の市場価値を伸ばすいつでも転職できる状態にしておくためには、自分の市場価値を高め、企業から欲しい人材になっておくことが必要です。それは必ずしも会社内での評価とは一致しません。転職市場での市場価値です。市場価値が高い人とは、どんな環境であれ、組織を成長されられる人。会社に利益をもたらす人だと思います。そのような人になるために、スキルアップを図っていく必要があります。私は結果が出ないことを周りの人や環境のせいにしてしまうところがあるのですが、市場価値の高い人はそのようなことに言い訳をしないはずです。この本を読んで考えを改めるべきと反省しました。本業で実績を出すスキルアップというと、社外のセミナーなどを受講するといったイメージがあるかもしれませんが、motoさんはあくまで本業で実績を出すことが大前提と言われています。自分がやったことのない仕事は自分を成長させるチャンスです。このような機会を見逃さず、積極的に取りに行き、苦しい中でも仕事に全力を尽くすことで力がついていきます。できるかどうかわからないことでもまずやってみる。失敗して会社の評価が下がっても、経験値を得ることが市場での評価が高まります。多くの場合、会社側もチャレンジを認めてくれるでしょうから、デメリットはそれほど多くありません。手を挙げる!そして、そのような新しい仕事を振ってもらえるようにするためには、自分がやりたいこと、実現したい姿を周りに発信することが重要。すれば上司も希望を叶えようとしてくれるでしょうし、自分も公言したことに対して必死になるはずです。中で一番印象的だったワードが「自分株式会社」というものです。自分自身を会社に見立て、自分という会社を経営する。そのような考えに立つと、会社の利益を上げるためにはどうすべきかが見えてきます。本業の収入UP、副業、、、どのような価値を提供すれば収入UPにつながるか。このような意識の有り無しで、仕事の質も変わってくるように思います。副業のノウハウ副業は物販や投資などいろいろなやり方がありますが、motoさんが勧めるのはブログや動画などのコンテンツ配信です。本業で得た知見や人の役に立つ情報をブログで発信することで収入にします。所属する会社の機密情報を漏らすことがないように。ブログへの誘導はtwitterが有効です。やみくもにブログの記事のリンクを貼ってつぶやくのではなく、twitter上で自分はどういうことができる人なのか、というブランドを築いていくことが必要だそうです。motoさんの場合は「転職に詳しい人」。自分のブランドは、自分はどういう方向にスキルを磨くのかということに大きく関わるので、自己分析をしっかりやって、やりたいことを明確にしておくことが重要です。ブランディングのためには「自分が誰よりも詳しい情報を他の人が役立つ形で発信すること」が大切。自分の意見に共感してくれるフォロワーが必要。motoさんは同じ意見の他人のツイートに対し、引用リツイートすることでフォロワーを増やされたそうです。このような戦略的なSNS活用方法は非常に参考になります。まとめmotoさんの「転職と副業のかけ算」という本で学んだことをまとめてきました。自分が目指す姿を実現されているmotoさんのノウハウを知ることができ、非常に有益な内容でした。本業で実績を出すための心構えはmotoさんほどではないにしろ、意識していたことであったため、今までやってきたことが正しかったと再認識できました。このブログもマネタイズできるところまで行ければいいですが、まずは勉強したことのアウトプットの場として、記事数を増やすことを優先にしていきます。独りよがりの内容ではなく、人の役に立つ情報をお伝えできるようにこれからコンテンツを検討していこうと思っています。私は現在転職を考えてはいないので、本業の取り組み方、副業のやり方について学ぶことが多かったですが、本書には転職ノウハウもふんだんに書かれています。転職を考えておられる方にもおすすめの本です。いう仕事をやっていてもアイデアを求められることは常日頃あります。そのような周りからの期待に応えたい気持ちは山々なのですが、中々いいアイデアを出せず、悔しさを感じていました。そんな中、書店で「考具」という本を見つけたので、アイデア出しのヒントになればと思い読んでみました。見る文体が著者が語りかけてくれているような感じで非常に読みやすく、且つ、今までの自分の考えと違う気づきが多く得られました。今回は本書を読んで学んだ、アイデアの出し方、企画の作り方をまとめていきます。アイデア出しにあたっての考え方、心構えアイデアを出せる人とそうでない人の違いは「意識」をしているか普段の生活でアイデアのヒントを探しているか。生きているだけではアイデアは生まれない。周りの意見や状況から考え始めてもありきたりなものしか生まれない。アイデアは既存の要素の組み合わせでしかない自分が考えているその領域にとって新しければよい。どこか別の業界のやり方を持ってきてもOK。大したことないと思うことでも頭の中に留めずに紙に書く。アイデアを生み出すための4ステップ1.アイデアのネタ素を貯める2.目の前の課題についての情報を仕入れる3.貯め込んだネタ素の中から使えそうなアイデアを引っ張り出す4.ネタ素と課題について集めた情報を組み合わせて新しいアイデアを生み出すこの方法を使い、できるだけたくさんのアイデアを出す。少なくとも30案は必要。絞るのは後で出来るので、この段階ではアイデアを広げる。アイデアを企画に落とし込む方法アイデアの組み合わせ、パーツの交換などを行い、使えそうなものに絞る企画の全てが新しいアイデアでなくてもOK。肝の部分が新しければ、その他の部分は従来の手法を使うこともある。絞ったアイデアを実行可能なところまで具体化していく実現可能なアイデアが企画。関係先との調整など、詳細を詰めるところまでやって初めて提案できるものになる。)を意識して生活すると、意識したことが引っかかって普段はスルーしていた情報が自分の中に入ってくる。頭の中でその気づきを意識するだけで十分。いつかのアイデア出しの時に組み合わせの素になる。電車、ファミレス、喫茶店、居酒屋などで周りの人の会話に聞き耳を立てる。話の話題やその人の様子から顧客の生活を想像する。(どんなことに興味があるのか、どんなことに困っているのかなど)3お客様の立場に立って演じる頭の中でお客様のことを想像するだけでなく、実際にお客様の立場に立って同じことをやってみる。商品を使う、サービスを受ける、子供向けのものを考えるのであれば、目線を下げるなど。実際にやってみないとわからない気づきがある。4現場に行くお題となる現場に行き、できるだけ詳しく取材する。話を聞きだすコツは相手を褒めながら聞くこと。5気になったら何でもメモ気になったことを書き留める。手を動かすという行為でいざというときに思い出す。できるだけビジュアルでメモを書くとよい。アイデア展開のための考具1ポストイット1枚1ネタを書き、大きな紙に貼っていく。思いついたものをそのまま書く。ネタ同士の組み合わせから別のアイデアが出てくる。2マンダラートテーマを9マスの真ん中に書き、アイデアを周りに入れていく。8個マスがあるため、強制力が働く。すべてのマスが埋まったらそれぞれのアイデアをマスの中心にし、さらにアイデアを広げていく。マスはすべて埋める必要はなく、膨らみそうなアイデアがあればそれを広げていけばOK。3マインドマップテーマを真ん中に書き、思いついたアイデアや要素を放射状に書く。マンダラート同様、各アイデアからさらにアイデアを広げていく。結びつく言葉を線でつなぎ、組み合わせでアイデアを作っていく。アイデアのヒントとなる言葉が一枚の紙の上にひしめき合って並ぶ形になる。4連想ゲームお題から「~といえば」という問いかけでどんどん言葉を広げていく。頭の中の記憶を呼び起こし、それが今の課題と合わさって新しいアイデアが出る。アイデアを生み出すための要素の組み合わせ方の基本パターン9つ。一つの事象をいろんな角度から見ることでアイデアが生まれる可能性を何倍にも広げることができる。全てにおいて共通していることは、テーマをいろんな切り口で深堀し、組み合わせの要素を抽出すること、そして要素同士の組み合わせで新しいアイデアを作っていくこと。型にこだわりすぎず、アイデアが膨らむところがあれば、そこを突き詰める。企画へ落とし込むための考具15W1Hいけそうなアイデアをお題の条件(5W1H)に当てはめる。先に条件から考えないこと。アイデアができてそのあとで5W1Hを考える。最初から条件を満たすことはないので折り合いをつけていく。2タイトル企画に必ずタイトルをつけること。聞く人に概要をわかってもらうためのもの。言葉を具体的にすることで伝わる情報が増える。3絵で表現プレゼンをするときはできるだけ自分のイメージを絵にして伝える。絵で表現できる=企画の詳細なイメージを自分の中で詰められているということ。詳細まで丁寧に絵で表現する。感想タイトルの通り、アイデアの素となる情報のインプット、アイデア出し、企画の作り方までたくさんの「考具」が紹介されています。ポストイットなどはよく使っていましたが、今まで知らなかったものもあり、特にマンダラートはこれから試してみたいと思っています。本書を読んで感じたのは、企画を生み出すためには日ごろから課題意識をもって世の中を見ることが必要だということです。すれば、生活の中で得られる情報も変わってくるし、自ずと新しい要素同士の組み合わせも生まれるのではと思います。そのような意識を持った状態で考具を使って考える時間を作れば、さらにいいアイデアを生み出すことができるでしょう。斬新なアイデアを出せる人を目指して、考具を活用していきたいです。pi前回、ラズパイでハードウェアを制御する方法の勉強をスタートしました。masaeng.hatenablog.com少し間が開いてしまいましたが、第二回目はUART通信です。UARTはマイコンのデバッグ用通信やデバイス間通信などによく使われていますね。ラズパイでUARTを使う方法を調べましたので、必要な時にすぐ使えるように整理しておきたいと思います。Transmitterの略で、非同期方式による通信です。UARTの信号線は送信用のTXDと受信用のRXDの2本です。規格の詳細は割愛しますが、こちらのサイトに詳しく書かれています。tri-s.world.coocan.jpラズパイとデバイスの接続ラズパイでUARTを使用するにはデバイスと以下のように1対1で接続します。GPIO15をRXDに割り当てることができます。同じUARTに複数のデバイスを接続することはできませんので注意。UARTを使うための設定Rasbianのデフォルト設定ではラズパイでUARTを使うことはできません。以下の2つの設定が必要となります。1シリアルコンソールの設定プログラムで使用するUARTは/dev/serial0ですが、デフォルトではOSのシリアルコンソールが/dev/serial0を使用するようになっています。(USBシリアル変換ケーブル経由でGPIO14,15とPCをつなぐことでPCのターミナルソフトからラズパイにアクセスできる)シリアルコンソールが/dev/serial0に接続しないように/boot/cmdline.txtに記載されている”console=serial0,115200”を削除する必要があります。UARTの2種類を搭載しています。UARTだけが有効でBluetoothモジュールに割り当てられているのでプログラムがUARTを使用することはできません。UARTがGPIO14,15にマッピングされます。UARTがGPIO14,15にマッピングされ、高機能なUART機能を使用可能になります。この時BluetoothモジュールはMiniUARTに接続されます。(図の(3))UARTで通信を行うプログラムラズパイのpythonでUART通信を行うにはpySerialライブラリを使用します。Raspbian標準搭載されています。以下にサンプルコードを示します。ポートのクローズまとめラズパイでデバイスとのUART通信を行う方法を記載しました。UARTのみをインターフェスにもつセンサーを使いたい場合は、この方法でセンサーデータを取得できると思います。今手元にデバイスがなく、実際に動作確認はできていませんが、機会があれば、動作結果を追記します。WORK」という本を読みましたので、要点をまとめます。単行本この商品を含むブログを見る著者のピョートルさんは元Googleの方で働き方や組織に関する本を多数出されています。ELITE」を読ませてもらって、働く上での考え方で大いに刺激をもらったので、今作も期待して読みました。見るそれでは、早速まとめていきたいと思います。落合陽一さんが著書の中で言われていましたが、「ワークアズライフ」(寝ている時間以外はすべて仕事でありその仕事が趣味である)に通ずる考え方だと思います。問いを通して自分に向き合い、自分を掘り下げる・自分とは何?何をしたい?どうなりたい?・自分が本当にやりたいことは?・子供の頃、何に一番興味があった?・学生の頃、どんなふうに活躍したいと思ってた?・この一週間楽しかったタスクは?それはなぜ?「メモの魔力」でも言われていましたが、これから自分が何をしたいか、自己分析の重要性は高まっていくと思います。自己分析1000問はぴったりのツールですね。(これはあなたの人生です)”自分にしかできないことで社会や周りの人に貢献していくそうすれば楽しんで、前向きに仕事ができるようになるまとめここまでの内容をスライド1枚にすると以下のようになります。WORKという働き方は自分の中では理想の働き方です。仲間とワイワイ議論して、面白いことを実現するために素早く行動していく。今は職場環境含めて理想とは差がありますが、そんな働き方に近づけながら自己実現を目指していきたいです。複数の学習済みモデルを同時に実行するTensorflowGITHUBで公開されているディープラーニングの学習済みモデルを流用し、USBカメラ映像を入力して推論するというプログラムをいくつか作ってきました。複数の学習済みモデルを組み合わせて機能を作れないか試してみました。動かし方を調べたのでまとめておきます。以下のような構成でプログラムを書いていました。USBカメラの映像をWhileループ内で取得するため、ループの外でセッションを作成し、学習済みモデルの復元までを行います。ループ内ではsess.run()のみを行います。video_capture.release()cv2.destroyAllwindows()ネットワークが二つの場合2つの異なるグラフを作成し、それぞれのグラフのセッションを構築してモデルを復元します。whileループ内でそれぞれのセッションを実行しています。sess:の中にwhileループを置いていましたが、withを使わずにSessionを作成するように少し変更しました。buffer)形式のファイルが必要となります。ckptからpbへの変換方法を調べたのでメモしておきたいと思います。Tensorflowで重み、ネットワーク構造を保存するデータのファイルが.ckptです。pointの略(?)です。ckptファイルは3種類あります。buffer形式で記述できます。以下の参考サイトでいろいろなやり方が紹介されていますが、私の環境でうまくいったサンプルコードです。as_text=False)まず前提として、学習は完了しており、そのネットワークや重みデータはckpt形式で保存されています。このckptファイルを用いてグラフを復元し、pb形式で保存しなおします。tf.train.import_meta_graphを使って.metaからモデルをロードします。これを使えば新たにモデルのインスタンスを作る必要がありません。saver.restoreでckptを読み込み、学習済みモデルを復元します。pb形式への変換にはtf.train.write_graphを使用します。使ってConstに変換する必要があると記載されています。私の環境ではこれをやるとうまくいかなかったです。上記のやり方でNGであればこちらをお試しください。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。