skimageはインポート出来るのに、skimage.ioはインポートできなかった話

多分先日CaffeをUbuntu16.04に入れようとした影響だと思うんですが,
以下のような現象が起こりました!

スクリーンショット 2016-11-25 14.32.30
スクリーンショット 2016-11-25 14.33.14
要するに,skimageはインポートできるのに,
skimage.ioがインポートできなくなっちゃったんです!
ついでにmatplotlib周りも似たような現象にw

結論から言うと,dateutilが古いからだそうです!
以下のコマンドを打って,1.5って出た場合にはdateutilが古いです!

1.5だった場合には,以下のコマンドを実行するとアップデートできます!


このdateutilってのは,
イメージとしてはdatetimeにメソッド足した的なやつらしいです.
世界時間を考えたりしなきゃいけない時とかに,
datetimeだと単一のタイムゾーンしか…
みたいなことが起こるので,そんな時にdateutil使ったりするみたいです.

ChainerにCaffeモデルを読み込ませてテストするまで(Ubuntu16.04)

タイトルにある通りです.

初めはCaffeでやろうとするも,
Ubuntu16.04のprotobuf周りのせいで雲行きが怪しくなったので,
今回はChainerにCaffeモデルを読み込ませてテストしてみようって感じです.

 
① Chainerをインストールする

今回はネットワークを云々したい訳ではないので,
CPUでの利用を考えています.
したがって,Chainerのインストールはコマンド一発です!
GPUで使いたい場合は,こちらこちらを参考にしてください.

 
② Caffeモデルの準備

次に,Chainerに読み込ませるCaffeモデルの準備をします.
今回はGoogleNetのbvlc_googlenetを利用しています.
1000個のカテゴリーに分類することができます.

こちらにある,caffemodel_urlのリンクからダウンロードしてください.
解凍したら,synset_words.txtを加工してラベルファイルを生成します.
ラベルファイル生成は,以下のコマンドを実行.
これで,labels.txtにラベルが保存されます.

“crane”という行が2つあってまぎらわしいので,
135行目を”crane(bird)”に,
518行目を”crane(machine)”に変更しておくと良いとのことです.

 
③ テスト画像をChainerへの入力形式に変更

以下のプログラムでテスト画像をChainerの入力形式に変換します.
Chainerの入力形式は[画像インデックス,BGR, Y座標, X座標]なので,
テスト画像をその形式に変換しています.
画像サイズは定義したサイズに変換しますが,
画像中のオブジェクトが歪まないように変形しています.
画像インデックスはテスト画像の枚数分指定しています.


  ④ Caffeモデルを読み込む

以下のプログラムで,Caffeモデルを読み込みます.
caffemodelのパスは各自の環境に合わせて定義してください.

 
⑤ 予測させる

最後に以下で予測させます.
試しに以下のキジムナーの画像をテストしてみた結果です. L3552320001722752
 

Python初心者育成講座 〜群馬からPythonistaを〜

PyHorse記念すべき第一回目のイベントが昨日ありました!

IMG_1644

僕自身のスキルは全然だけど、
群馬Pythonへの情熱からここまで押し上げましたw

応募人数が30人!!!!!!!!

初めての怪しいイベントでこの人数は正直びっくりしました。
「群馬産Pythonista」を量産することができて良かったです。
これだけ反響がいいと、
僕自身Pythonを頑張ろうって逆にやる気が出ますよねw

今後もPyHorseを通じて、

  • ヤンググンマーのIT遅れの改善
  • 群馬のIT初心者支援の場所作り
  • 群馬のIT帝国化


を進めて行きたいと思います。
 

Pythonコミュニティ 「PyHorse」を立ち上げました!

「群馬からPythonistaを」

このサイトのタイトルのように,
群馬での生活は非常に退屈で憂鬱なものです.
少しでも群馬をクリエイティブな帝国にしたい.
そんな思いから,群馬にPythonを広めるべく,
「PyHorse」を立ち上げました.

Python + 群馬(Horse) = PyHorse です!

私自身そこまでPythonが出来るわけでもありませんが,
Pythonを始めて知ったときに,初めからこれを学びたかった!
と後悔をしました.
プログラミング言語初心者にとって,
Pythonは非常に学びやすい言語だと思いますので,
同じ後悔を群馬の若者にして欲しくない一心です.

さて,今回その「PyHorse」初のイベント.

Python初心者育成講座

を企画しました.

日時:11月19日(土)8:30 〜 17:00
場所:群馬大学 桐生キャンパス
申し込み:http://pyhorse.connpass.com/event/44406/

です!

このサイトは自分の備忘録的な部分が多いので,
購読者は少ないかと思いますが,
たくさん人が来て,Pythonを一緒に勉強する仲間が欲しいです!

Tkinterモジュールでちょっと困った話

selective searchの実装をいじっていたときに、
描画ツールがねーよみたいな感じで怒られました。

sckitだかnumpyだかのなんかのグラフ描画のときには、
描画に使うパッケージを指示できるみたいで、
僕の場合はTkが使えねーよみたいな感じで怒られました。

以降、Tkに対しての備忘録。

tkinter パッケージ (“Tk インタフェース”) は、
Tk GUI ツールキットに対する標準の Python インタフェースです。
Tk と tkinter はほとんどの Unix プラットフォームの他、
Windows システム上でも利用できます
(Tk 自体は Python の一部ではありません。
Tk は ActiveState で保守されています)。
tkinter が正常にインストールされているかどうかは、
コマンドラインから python -m tkinter を実行することで確認できます。
これはシンプルな Tk インタフェースの
デモンストレーションウィンドウを開きます。

だそうです。

具体的な対処としては、ここ からダウンロードすればおkです。

もしくは、
でもいけます!

写真・画像APIを叩く

後輩君の研究を手伝ってて、
検索クエリに対して画像を引っ張ってくるAPIを叩く必要があったので、
調べたこととか、まとめときたいと思います。
ちなみに、Python3で活用していくことを考えています。

まず、そもそもどんなAPIが公開されているのかの一覧については
こちらのサイトを参考にしました!

Flickr、フォト蔵、Google、Bing等たくさんあるみたいです。
今回のニーズには沿ってませんでしたけど、Tiqavは面白そうだったので、
後でなんかに使ってみたいですねw

さて、今回まず試したのはフォト蔵APIです。
単純に日本語検索したいので、日本語に強そうなフォト蔵を選んでみました!

フォト蔵のAPIはここで公開されてます!
GETでとってくるみたいで、認証なしなので楽チンですね!
ソースコードはあとで上げてみます〜

して、フォト蔵から画像引っ張って来れるようになったんですけど…
フォト蔵について無知な自分が悪かったんですけど、
これ、あくまでフォトなんですねw
「りんご」とかで引っ張ってくると、「The りんご」がでてくることが少ない!

Googleのimage検索のイメージでいたので、思ってたのとちがーう!

ということで、次はGoogleかBingかってところで…

GoogleのimageAPIはサービスを終了しちゃってて、
似たようなことやるとなると、
custum search APIを上手く使う必要があるみたいです!
ここにやりたいことをやってくれていた方の記事があったんですけど、
今回はより簡単そうなBingの方のAPIを叩くことにしました。

Bingの方のやり方は、
こちらを参考(というかほぼそのままでいい感じ!)にさせて頂きました!

これでキジムナーの画像もたくさん引っ張ってこれますね( ^ ^ )/□

備忘録:
Bing Search API2016年12月15日を持って終了するとのアナウンス
Microsoft Azure Cognitive ServiceBing API v5というAPIが 既にリリースされており、いずれこちらのAPIに切り替える必要あり。

pickleでオブジェクトを漬物に!(追記:shelveの方が便利感)

Pythonでオブジェクトをそのまま保存する方法ないかなぁ〜って探してたら、
pickleなるものを発見しました!
保存するとき:

こんな感じにすると、sample.pickleの中にhogeがバイナリで保存されます.
読み込むとき:

こんな感じにすると、hogeの中に’hello’が格納されて復元できてるはずです。
pickle(ピクル)はピクルス的な、漬ける的なイメージで記憶しておこう。
 
追記:
複数のオブジェクトを保存しておきたいとき、
pickleだとリストを作って保存しなきゃいけなくて結構面倒だなぁ〜って思った。
そんなときには、shelveモジュールを使うといいらしい!
保存するとき:

こんな感じにすると、
{‘pi’ : a
‘kotori’ : b}
のような感じの辞書形式でhoge.dbに保存される。
読み込むとき:

こんな感じにすると、
変数aに3.1415、変数bに’wonderful rush’が復元される。