読者です 読者をやめる 読者になる 読者になる

豆腐とコンソメ

幸せについて考えていきます

ラズパイ(RaspberyyPi3)を買ってきた

はじめに

前回からの続き、ではないのです。

tohutokonsome.hatenablog.com

一旦、動くものは作ったので、コードを綺麗にしてあげよう!とかやってる内に
こっちに興味が湧いちゃいました。

codezine.jp

記事を見ていただけるとわかるのですが、タイヤとカメラがついた物体が、動くみたいです。
それだけならまだしも、Pythonでラジコンみたいに、動きをいろいろとコントロールできるみたいなのです。

私はラジコンに対して、熱い思いを持っております。 というのも、幼きころラジコンがほしくってほしくって、お婆ちゃんに駄々を捏ねて困らせたことがあります。見かねたお婆ちゃんが、おもちゃ屋で買ってきたラジコンは、コントローラーと車が有線で繋がっているという代物で、その結果私はわんわんと泣き腫らし、お婆ちゃんを困らせたという過去があります。

(お婆ちゃんが買ってきたラジコンイメージ)

f:id:konoemario:20170225235540j:plain:w300

その過去の代償を払うためには私自身がラジコンを作る必要があるのではないのでしょうか。
そして完成したラジコンは今は亡き、お婆ちゃんに捧げます。

GoPiGoちょっと高いし、手に入るのに時間がかかりそう

ごめん、お婆ちゃん。
紹介されていた走るロボット「GoPiGo」を買おうと思ったのだけれどもRaspberryPiとGoPiGoがセットになっているものが199ドルぐらいで、かつ通販サイトを見ても在庫なしの状態なんだ。

さて、GoPiGoは諦めて、ピンキーの興味を引くネタでも考えるか、といつもならなるのですが
幸運なことに以下の記事を見つけました。

qiita.com

GoPiGoなしでも、RaspberryPiだけでモーターを制御しているという素敵な内容です。
先人の方がいる、かつモーターが動くのであればいける!と謎の自信が湧いてきたので、とりあえずRassberryPiだけを購入することにしました。

秋葉原に行ってきた

購入にあたっては、以下の記事を参考にさせていただきました。

liginc.co.jp

参考というか、そっくりそのままお買い物編をなぞりました。 記事に書いてある通り、秋葉原に出向いて、上がっているお店を周ってみました。 ヨドバシカメラとかではない、ローカル感漂う電気屋に入るのってやけに緊張します。

また、いろいろな店舗にいる方たちは何を目的に商品を探しているのか気になりました。 (microSDカードに群がる、50代、60代のおじ様方は、一体何に使うのだろう)

自分のまだ知らない世界がいっぱいあるのでしょう。

購入したもの

以下を購入しました。

f:id:konoemario:20170226002304j:plain:w300

  1. RaspberryPi3本体
  2. microSDカード(32GBでクラス10のもの)
  3. 電源ケーブル
  4. WiFiトグル
  5. ラズパイマガジン(たまたま見つけたので購入)

(6.はピンキーのサイン入りWWDベストアルバムだよ!)

お値段は、こいつ、この値段でこれ買ってやんの、という視線を受けるのがつらくって書くのが面倒だったのでレシート貼ってます。

f:id:konoemario:20170226002747j:plain:w300

RaspberryPi3本体だけであれば、5000円ジャストでした。

ながくなったので次回にセットアップ編を書きます。

アイドルとのチェキ画像から親密度を図る(2)

前回からの続き

tohutokonsome.hatenablog.com

下記図のところの①の部分をやっていきます。

f:id:konoemario:20170220234807p:plain:w300

書いたコード

といっても、ググればいくらでもでてくる内容なので説明はとくにないというおさぼり記事です。 何かあれば突っ込んでいただけると大変うれしいです。

実装していないことメモ
  • 一度、取得したツイート内容は取得しないようにしたい。
  • 1ツイート内に、複数メディア情報(写真が2枚等)ある場合を考慮していない。
    (おそらく、常に1枚目の写真のみをとってくる)
よくわかっていない部分

Pychamから、PEP8のコーディング規約に則っていない、という点で以下のWarningがでている。

PEP8 block comment should start with '#'

‘#'でコメントつけている箇所全てにでているのだけれども、どうやったら解消されるのかがわからない。

ツイッターの情報を取得する

Pythonの初心者向け勉強会に行ってきた

謝辞

星印(よくわかってないです)ありがとうございます!
前回の記事で、星印を4ついただけました。

tohutokonsome.hatenablog.com

それでなんですが、このブログのアクセス数って一日1〜3件ぐらいなんですよ。   

こう書くと、なんだか悲しくなるのですが、
アクセス数1〜3の中で、星を4つもいただけたということは
ブログを読んでくれた方、全員が星をつけれくれた、と考えることもできるわけです。

本当にありがとうございます!
また、読んでくれた方の中に、ピンキーがいたらすぐに連絡ください。

勉強会に行ってきました。

connpass.com

18:30〜21:30の3時間で、Pythonの入門の勉強会でした。

参加者

50名ぐらいいた気がします。男性が9割ぐらいでした。
年齢層は20代の大学生のような方から、初老(失礼ですかね?)の方までいました。
大半は20代後半から30代のように見えました。

やったこと

以下のようなことを行いました。

  • プログラムとは
  • 環境の構築
  • 基本的な構文を用いて演習
  • 標準モジュールの紹介(re、jsonとか)
  • その他モジュールの紹介(numpy,matplotlibとか)

以下は、演習課題のコードです。
みてのとおり、Python入門以上に、プログラム入門の側面が強かったです。

勉強会で行った課題

感想

気合をいれて、「みんなのPython」を読んでいったので、演習の内容で新しく学ぶことは特にありませんでした。 Python入門というところで、何も知らないで行っても大丈夫なような内容になっていました。

なので、Pythonという部分より、講習の中で触れた「Scrach」と呼ばれる
レゴブロックを使うような感覚でプログラムができるサービスに興味を持ちました。
こどもが出来たらぜひ触らせたい。

scratch.mit.edu

ただ、一番すごい!と思ったのが冒頭で紹介された講師の方がハッカソンで作ったアプリでした。 棒人間をお絵描きすると、そのポーズを3Dキャラクターが行うみたいなやつ。   24時間で作れるのだろうか。。。

また、以下は勉強会の中で気になったワードです。
どこかで使ってみたい。

勉強会というところで、周りの方と話せたりするのかな、とか思っていたのですが  自分から話しかけることもできず、周りの方もサクッと帰っていたので、嬉しい交流はありませんでした。 が、これをきっかけに勉強会に参加していきたいと思います。

アイドルとのチェキ画像から親密度を図る(1)

やりたいこと

Python始めたばかりで、なにかおもしろいことができないかな!

というところで、取っつきやすいネタを探していました。 いろいろ調べてみると、

  • TwitterAPIを使って、ツイートを取ってくる。
  • CloudVisionを使って、顔認識、ラベル認識を行う。
  • OpenCVを使ってイメージに矩形を書く。

このへんが取っつきやすそうでした。

これを使ってなにかやりたいことないかなぁと思った時に タイトルの「アイドルとのチェキ画像から親密度を図る」なら楽しくできるかも、というところでやってみました。

処理イメージ

以下の順に処理をしていきます。

f:id:konoemario:20170220234807p:plain:w300

  1. Twitterから特定のハッシュタグをもとに検索を行い
    ツイート内に含まれる画像を取得する。
  2. 取得した画像を、CloudVisionへ渡して顔認識 +αを行う。

  3. CloudVisionから返却された顔認識の座標の情報をもとに、画像に矩形を書く。

  4. 投稿者に顔認識結果の画像と、親密度の結果をリプする。

親密度をどう図るか

一番重要な部分です。
が、残念なことに、私にはそこをどうにかする技術がないのです。 ないのですないのです

ここはGoogleさんのCloudVisionに全面的に依存します。 処理イメージの2. の顔認識+αのα部分です。 幸いなことに、CloudVisionには、顔認識の他に、以下の感情を5段階で返却してくれます。

感情 にほんご
Joy 喜び
Sorrow 悲しみ
Anger 怒り
Surprised 驚き

ですので、この結果を使って親密度を計測しようと思います。

普段は、「ぐへへ、腰の位置が近いざんす!」とかで喜んでいるので、この辺をもう少し使えたら、独自性がでるかと思います。

といっても、顔認識の感情も腰の位置も、システムが判断するまでもなく、人が見ればいいのですが。

短いですが、具体的な内容は次回に回したいと思います。

こんな感じのものができます。 f:id:konoemario:20170220235915p:plain

明日、初の勉強会

ドキドキです。
行ってきます。

connpass.com

OpenCVを入れる

AnacondaにOpenCVをインストールする

PychamでOpenCVをインストールしようとしたら、以下エラーが発生した。 どうやら、python3.6とOpenCVのバージョン間の問題とのこと。

f:id:konoemario:20170216214338p:plain:w300

f:id:konoemario:20170216214343p:plain:w300

condaを使うことで解決できた。

qiita.com

python3.5であれば、OpenCVが使えそうなので、以下を実行

$ conda create -n py35 python=3.5 anaconda

PycharmのPreferences->Project:プロジェクトネーム->Project Interpreterから歯車のアイコンを選択し 「Add Local」でcondaで作成した環境を選択。 ※Annacondaのインストールディレクトリ配下のenvにあった。

▼のMoreを選択すると、作成した環境がでてきた。

f:id:konoemario:20170216220438p:plain:w300

以下のモジュールがインポートできた。 import numpy import cv2

Python初心者:CloudVisonを使ってみた(1)

目次

前回からの続き

前回からの続きになります。

tohutokonsome.hatenablog.com

必要な情報を揃える

以下の記事を参考にさせていただきます。

syncer.jp

vaaaaaanquish.hatenablog.com

内容を多少理解することができたら、Google公式を見ることにします。

Cloud Vision API のリクエストとレスポンス  |  Google Cloud Vision API ドキュメント  |  Google Cloud Platform

まずはリクエスト

Cloud Vision APIの使い方まとめ (サンプルコード付き)のリクエスト方法を参考に作業していきます。

CloudVison_01.py

CloudVisionを利用するためには、APIにリクエストを投げる必要があります。 PythonでHTTPリクエストを投げるにはどうすればいいんだろう?と思ったところで

PythonでGoogle Cloud Visionを使った顔検出 - Stimulatorのコードを参考にします。

Session()、Request()関数あたりが、該当処理になりそうです。

とりあえずリクエスト処理を行う。

「みんなのPython」では、Webリクエスト処理として、標準ライブラリのurllibが紹介されていましたが  今風ではない?ということでしょうか。 こちらの記事を参考に、Requestsライブラリを利用していきます。

クイックスタート — requests-docs-ja 1.0.4 documentation

とりあえずリクエスト

APIにリクエストを投げることができました(と思います。)

とはいえ、結果は返ってきていないです。

というのも、肝心のイメージデータを渡していません。

イメージデータを渡す

イメージデータですが、CloudVisonのAPIはHTTPのPOSTメソッドで、かつJSON形式のデータを リクエストボディに渡す仕様になっています。

Cloud Vision API のリクエストとレスポンス  |  Google Cloud Vision API ドキュメント  |  Google Cloud Platform

そもそも、HTTPのPOSTメソッドってなんじゃ、みたいな状態ですが それっぽいことを書いています。

このへんの事は、以下を読むとなんとなくほーん、という感じになります。

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

中身が薄いわりに、ながくなったので次回に回します。

※HTTPリクエストの中身をみたいのですが、なにかよい方法はないでしょうか。 Wiresharkで見れるかも!と思い立って覗いたのですが、膨大な量のパケットが飛び交っていて どれが目的のリクエストなのかがわからず。。。

PyCharmでそういった素敵なデバック機能はないのでしょうか。

Python初心者:CloudVisonを使ってみた(0)

目次

みんなのPythonの読み方

早速、Pythonに触れていきたいと思います。 とりあえず、「みんなのPython」を買ったので、読み始めました。

みんなのPython 第4版

みんなのPython 第4版

「みんなのPython」の目次は、以下の通りになっています。

  1. プログラミング言語 Python
  2. Pythonでプログラミングをはじめよう
  3. Pythonの基礎をマスターする
  4. 組み込み型を使いこなす
  5. Python関数型プログラミング
  6. クラスとオブジェクト思考開発
  7. クラスの継承と高度なオブジェクト思考機能
  8. モジュール
  9. スコープとオブジェクト
  10. 例外処理
  11. 標準ライブラリを使う
  12. Pythonとデータサイエンス
  13. Python2

内容をざっくりとみたのですが、第1章〜第3章までは「Pycharm」を使って手を動かし 以降の章については、電車の中で、眺めるだけにしました。

というのも、使ってみないとなんともいえないなぁという要素が多いです。

ですので実際に、目的に沿った動くものを作ることにしました。

Cloud Vison APIで遊んでみる

実際に作るものがないと、なかなかモチベーションがあがってこないです。 ここでは、Pythonに向いているかどうかは一切無視で、楽しそうなネタがないかなぁというところで いろいろ探してみました。

結果、CloudVisionという非常におもしろそうな、サービスがあったので、こちらをPythonで使ってみたいと思います。

syncer.jp

Googleさんが用意しているAPIで画像を渡すことで、いろいろな解析結果が返ってくるみたいです。

中でも、画像の顔認識結果から、対象人物の表情を読み取り、感情の結果を返してくれるという機能に、非常に期待しております。 機械学習はハードルが高そうなので、とりあえずありもののサービスを使うこととします。

PythonでCloudVisionを使っている記事は検索すればたくさんでてきます。 (ありがたや、ありがたや)

ここでは、いろいろな記事や、「みんなのPython」から得た知識等を利用して、少しずつ進めて行きたいと思います!

長くなりそうなので、次回に続きます。