2017/03/10 (金)

MacでNTFSのドライブを書き込み可で接続!

こんにちは。相馬です。

今回は、NTFSの書き込みに苦しむマカーへ向けたTipsです。

同僚(Windowsユーザ):「このUSBメモリにファイル入れてー」

自分(Macユーザ):「おけー」

USBメモリ、グサッと。

あれ、Command+V効かないな、、、
Finderで情報を見る=>フォーマット:NTFS!!

Macあるあるではないでしょうか。

そんな時にはこのアプリ。

Mounty for NTFS
Mounty_for_NTFS

アプリ起動中にNTFSのドライブがマウントされると、書き込み可能なオプションでマウントし直してくれます。
Finderでポップアップ表示してくれる親切さ。しかも無料です。

NTFSどんとこいですね!

続きを読む

2017/03/02 (木)

PyCom mini KUMAMOTO スポンサーになりました

PyCon_mini_Kumamoto_2017

こんにちは。そうまです。

突然ですが、PyCon mini Kumamotoのスポンサーになりました!

PyConとは、
PyCon JPは、Pythonユーザが集まり、PythonやPythonを使ったソフトウェアについて情報交換、交流をするためのカンファレンスです。 PyCon JPの開催を通じて、Pythonの使い手が一堂に集まり、Pythonにまつわる様々な分野の知識や情報を交換し、新たな友達やコミュニティとのつながり、仕事やビジネスチャンスを増やせる場所とすることが目標です。
そのPyConが熊本で開催(miniとして)されるということで、スポンサーに応募させていただきました。
PyCon mini Kumamotoを熊本大地震の一年後に開催します。テーマは”未来”です。参加者と共にイベントで”未来”を感じたり考えたりできたらよいなと考えています。
ステキなテーマですね!

弊社エンジニアの矢野も登壇する予定です。みなさんもぜひご参加下さい!

詳細はPyCon mini KumamotoのWebページをご確認下さい。

続きを読む

2016/12/17 (土)

ワイズ・リーディングでは人材を募集しています

WS000003

ワイズ・リーディングITソリューションチームでは人材を募集しています。

【雇用形態】  
 正社員

【募集人数】  
 複数名

【職務内容】  
 システム開発

【求められるスキル・経験】  
 Webアプリケーション、パッケージアプリケーションの開発・運用

【歓迎する能力・経験】  
 C#,C++によるWindowsデスクトップアプリケーションの開発経験
 CakePHPによるWebアプリケーションの開発経験
 Pythonによる機械学習を使ったアプリケーションの開発経験
 iOS, Android向けアプリケーションの開発経験(使用言語不問)
 MySQLによるデータベース設計と実装経験
 開発において要件定義、仕様設計、詳細設計の経験

【給与】  
 経験・能力に応じて、当社規程により決定いたします

【給与調整】  
 年1回(4月) ※実績・実力に応じて給与の調整を行います

【賞与】  
 年2回

【勤務場所】  
 飛田オフィス  
 熊本遠隔画像診断センター(くまもと大学連携インキュベータ内)
 ※事業拡張により東京都内の勤務になる可能性があります。

【勤務時間】  
 9:00~18:00
 
【休日】
 週休2日
 ※祝日のある週の土曜日は出勤する場合があります。

【応募要領】  
 まずはこちらから気軽にお問合せください。

【窓口】  
 〒861-5514  熊本県熊本市北区飛田3-6-35 中村ビル2F  
 株式会社 ワイズ・リーディング  
 TEL:096-342-7878  
 担当:相馬  e-mail: a-souma@ysreading.co.jp

続きを読む

2016/10/22 (土)

3行でインストール!機械学習フレームワーク「Darknet」を試す

こんにちは。そうまです。

このブログでもご紹介したとおり、TensorFlowやってみたり、Caffeやってみたりしてきました。
こちらのブログで、もっと簡単に導入できるフレームワークがあると知りましたので、今回はそれを試してみます。

その名も、「Darknet」!!

darknet__open_source_neural_networks_in_c
ウェブサイトもダークな感じです。魔法陣が黒魔術っぽい。

イメージはあれですが、導入は簡単です。
なんと、以下の3行を実行するだけでインストール完了です。

$ git clone https://github.com/pjreddie/darknet.git
$ cd darknet
$ make

インストールしただけでは寂しいので、試してみます。
Darknetは学習済みモデルとアルゴリズムの配布もしています。
これをダウンロードしてくれば、簡単に動かすことができます。

今回は「YOLO」という、物体認識を試してみます。
こちらもコマンドはダウンロードして実行という2行だけです。

$ wget http://pjreddie.com/media/files/yolo.weights
$ ./darknet yolo test cfg/yolo.cfg yolo.weights data/dog.jpg

モデルと一緒に配布されるサンプルですが、ちゃんと物体認識されています。
dog-predictions

他の画像でも試してみます。
7cats

Intel Core i7(3.1Ghz×4)、メモリ8GB、OS:Ubuntu 14.04のマシンで約8秒かかりました。
今回はCPU Onlyで試したのですが、GPUもサポートしていて、Makefileを1行書き換えるだけで使えるそうです。
screenshot

結果はこうなりました。
7cats-predictions
下段真ん中のネコの模様もネコとして認識されちゃってますが、ある意味正解ですね。

Darknetは手軽にインストール、実行まで出来て驚きました。
今後も手軽に使えるフレームワークがどんどん出てきそうですね!

みなさんもお試しあれ!

続きを読む

2016/07/14 (木)

サーバ室の温度異常を検知して電話をかける

こんにちは。そうまです。

先日、弊社サーバ室のエアコンが故障してしまい、危機一髪で熱暴走を回避した。という事件がありました。
この時、始めの警報メールを朝4時に受信していたのですが、寝ていて全く気づきませんでした。
偶然5時半に起きて気づいたからよかったものの、もし1時くらいに発生して起きるまで数時間気づかなかったらと思うとゾッとします。
電話がかかってくればいいのになーと思って調べたところ、以下の記事を見つけました。


この3つの記事の内容を組み合わせると、図のような流れで実現出来そうです。

プレゼンテーション1 早速やってみました。

メール宛先ドメインのMXレコードをSendGridに向けなければいけなかったので、Route53でドメイン取得しました。AWSなんでも揃ってるなー。
詳しいコードはほぼ参照した記事のままなので、割愛します。

特定のアドレスにメールを送信すると、
メールの画面

電話がかかってきました。
P1210046

これで寝ている間にサーバ室の温度が上がっても安心ですね!
そんなことが起こらないことを祈ります(真剣)

※後日談
IFTTTにPhoneCallチャンネルありますね。。。
まだアメリカの電話番号だけみたいですが、日本の電話番号にも対応したらIFTTTだけでできちゃいそうです。

続きを読む

2016/04/12 (火)

bitnami Redmineをインストールする際に気をつけるただ1つのこと

こんにちは。相馬です。

みなさん、プロジェクト管理してますか?

弊社でもプロジェクト管理ツールを使ってみよう!ということでRedmineを使い始めました。
そのインストール時にひとハマりあったので、そのお話を。

弊社は複数拠点あることと、協力会社さんも使えるようにしたい。でも費用は抑えたいので、
サーバはさくらのVPSを使うことにしました。

さっそく、Redmineをインストールするわけですが、Redmineを使うためにはWebサーバ入れて、DB入れて、設定して、と結構めんどくさそう。。。
ちょっと調べてみると、bitnami Redmineというオールインワンパッケージがあり、これを使うことでインストールの手間が省けそうなので使ってみました。

基本的には、インストーラをダウンロードして起動するだけです。あとはウィザードに従うだけでインストールが完了します。
こちらの記事を参考にさせていただきました。

OSSでLinuxサーバ構築 – Bitnami Redmine 3.2.1をさくらのVPS(CentOS 6.7)にインストール

記事では、インストール後にファイアウォールにHTTPでの接続許可を追加されていますが、私の環境では最初から許可されていました。

インストール作業が終わり、Webブラウザから「http://[さくらのVPSの標準ホスト名]」にしてみると、
Bitnami_Redmine_Stack

出ました!
インストール成功!と思って、「Access Redmine」をクリックするも「Internal Error」の表示。
サービスの状態を調べたり、ポートの状態を調べたり、アクセス権を調べたりするものの問題なさそう。。。
調べていくうちにこちらの記事にあたりました。

26歳からの文系プログラマーの備忘録 – redmineインストール
小一時間悩んだ挙句、インストール時のフォルダを
デフォルトの「C:\BitNami\redmine-2.4.2-0」から「C:\BitNami\redmine」に
変更したら無事アクセスできた。

記事にならって、bitnamiインストールウィザードでインストール先のフォルダを「/opt/redmine-3.2.1-0」から「/opt/redmine」に変更したところ、アクセスできるようになりました!!
ドットかハイフンを含んでたのが良くなかったようです。

bitnami Redmineを使う際には、インストール先のフォルダ名に注意です!

※この記事は投稿日時点の情報に基づいて書かれています。

続きを読む

2016/04/04 (月)

VirtualBoxの仮想ディスク容量を圧縮する方法

こんにちは。相馬です。

突然ですが、VirtualBox便利ですね。
弊社でも開発用サーバや社内システムでVirtualBoxを利用しています。

先日、VirtualBoxの仮想マシンを別マシンにクローンしようと思い、操作したところ表示されたのは、「残り時間 4時間」。。。
そんなに容量あるかな?と思いゲストOSでdfコマンド使ってみると、113GB程度しか使っていません。
が、ホストOSで仮想ディスクファイルの容量を確認すると439GB。。。

仮想ディスクを「可変サイズのストレージ」にすると、一度使用した領域は確保されたままとなり、ゲストOSでファイルを削除しても仮想ディスクの容量は減らないようです。。。
このままだとクローンやバックアップ時に効率が悪いので、仮想ディスク容量の圧縮にチャレンジしました。

VirtualBoxで仮想ディスク容量を圧縮するためには、
1.ゲストOSで仮想ディスクの未使用領域にゼロを書き込み
2.ホストOSで仮想ディスクを圧縮
という手順が必要です。

※以下はあくまで、私の環境で行った手順です。ddコマンドは、間違うとデータが上書きされてしまう危険性がありますので、お気をつけ下さい。

環境は以下の通りです。
  • ホストOS:Windows7
  • ゲストOS:Ubuntu14.04

まず、ゲストOSで仮想ディスクの未使用領域にゼロを書き込みます。
ゲストOS(Ubuntu)で、ddコマンドを使います。

$ sudo dd if=/dev/zero of=zero bs=4k; \rm zero

コマンドの細かい解説は省きますが、これで未使用領域にゼロが書き込まれます。
ディスクの容量によって時間がかかります。。。
実行終了後、ゲストOSは一旦シャットダウンしておきます。

続いて、ホストOSで仮想ディスクを圧縮します。
まず、対象の仮想ディスクのuuidを調べます。
ホストOS(Windows7)で、VirtualBoxインストール先に移動して以下のコマンドを実行します。

VBoxManage.exe list hdds

表示される中から、対象の仮想ディスクのuuidを控えておきます。
調べたuuidでディスクを指定して、圧縮します。

VBoxManage.exe modifyhd [仮想ディスクのuuid] --compact

こちらも、ディスクの容量によって時間がかかります。。。

実行終了後、ホストOSで仮想ディスクの容量を確認すると、、、「119GB」!!
無事圧縮出来ました!

続きを読む

2015/12/16 (水)

家族目線がやってきた!

こんにちは。そうまです。

先日、オムロンさんの「家族目線(HVC-C2W)SDKモニター」に応募したところ、、、

当選しました!!

当選の連絡をいただいた翌日には、貸与してもらえる製品が到着!早い!

P1180724

貸与していただけるのは、「家族目線(HVC-C2W)」という製品です。
13機能(顔検出・顔認証・性別推定・年齢推定・表情推定・顔向き推定・視線推定・目つむり推定・手検出・人体検出・ペット検出・動体検出・音声検出)を搭載している、高機能なヤツ。
顔認証機能も搭載しているので、オープンソースでの顔認証と比べてみたいですね!

P1180728

箱のなかには、HVC-C2W本体とスタンド、電源ケーブル、マニュアルなどが入っていました。
撮影した画像や動画は、microSDカードに保存されるとのことですが、同梱はされていませんので別途用意が必要です。

IMG_4648

組み立てるとこんな感じです。
箱のイラストにもありますが、顔みたいな感じで親しみやすいデザインですね。

これから幾つかの条件を満たすと、貸与していただいた「HVC-C2W」をいただけるとのこと!
とりあえずSDKを利用してアプリを作成してみたいと思います。ブログでも紹介しますのでお楽しみに!

続きを読む

2015/11/26 (木)

【AI】OpenBRで顔認識やってみた

こんにちは。そうまです。

人工知能の勉強中に画像認識について調べてたところ、「OpenBR」というライブラリを見つけました。
OpenBR___Home
公式サイトのドキュメントには
OpenBRは、新しい様式を調査する既存のアルゴリズムを改善し、商用システムとのインターフェース、認識性能を測定し、自動化された生体認証システムを導入するためのフレームワークです。
とあります(Google翻訳)。Apache2 licenseなので、出典を明記すれば商用利用もOKなのがいいですね!
気になるので、さっそく試してみました。

DocumentのInstallにしたがって、インストールしていきます。
今回は、VirtualBoxでUbuntu 14.04の仮想マシンを使いました。
OpenBRは、OpenCVを使っています。せっかくなので、OpenCVもPythonで使えるように、python-devとpython-numpyを先に入れときます。
$ sudo apt-get install python-dev python-numpy
その後はインストールガイドにしたがって、粛々と進めます。ソースからのビルドになるので、少し時間がかかります。
インストールが終わったら、チュートリアルをやってみます。
Quick Startに載っている以下のコマンドを実行すると、ウェブカメラに映る顔の周りにフレームが表示されます!
$ br -gui -algorithm “Cvt(Gray)+Cascade(FrontalFace)+Draw(lineThickness=3)+Show(false)” -enroll 0.webcam
さて、正常にインストールできていることが確認できたので、1対Nの顔認識のチュートリアルをやってみます。
データセットが必要なので、LFWのデータセットをダウンロードして使いました。

ダウンロードして、解凍したら、以下のコマンドでデータセットを元にしたギャラリーファイルを作成します。
$ br -algorithm FaceRecognition -enrollAll -enroll ./lfw/ ‘lfw.gal’
ギャラリーファイルができたら、ギャラリーファイル、認識対象となる画像ファイルと結果を出力するファイルを指定して、認識を行います。
$ br -algorithm FaceRecognition -compare lfw.gal Andre_Agassi_0007.jpg match_scores.csv
認識対象としたのは、このファイルです。
agassi
テニス界のレジェンド、アンドレ・アガシですね!

結果ファイルを開くと、、、
Ubuntu14_04-OpenBR__Running_
A列に画像ファイル名、B列にそのファイルと認識対象の画像との類似度が出力されています。
一番上のAndre_Agassi_0007.jpgは同一ファイルなので、意味は無いですが他のアガシの画像が上位に来ているので、ちゃんと認識されていますね!

ちなみに、アガシ本人を差し置いて15番目に似ていると判定された、Amy Brennemanの画像はこれです。
amy
似てるっちゃ、似てますね。アガシがロン毛になったらこんな感じになるのかもしれません。

以上です!また次回をお楽しみに!

続きを読む

2015/11/20 (金)

【AI】TensorFlowやってみた

こんにちは!そうまです。

2015/11/10 Googleが自社で使っているディープラーニングなどの機械学ライブラリを”TensorFlow”という名前で公開しました!
さすがGoogle太っ腹ですね。さっそくダウンロードして使ってみました。
TensorFlow公式ページのガイドにしたがって、Macにインストールと思ったら、pipが古かったり、pythonが古かったり、Xcodeが古かったりで時間がかかっちゃいました。
※Xcodeのアップデートはサイズが大きいので、後回しにしちゃいがちですよね。。。

無事インストールが終わり、”Try your first TensorFlow program”ってことでやってみます。
ガイドの”Run TensorFlow”をそのまま走らせると、エラー。。。
どうやらTensorFlowがMacのCPUのコア数を自動で取得できないので、コードで指定する必要があるみたいです。
import multiprocessing as mp

core_num = mp.cpu_count()
config = tf.ConfigProto(
inter_op_parallelism_threads=core_num,
intra_op_parallelism_threads=core_num )
sess = tf.Session(config=config)

こんな感じで、Session()に引数で指定します。
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42
>>>

ガイド通りに、結果が表示されました!

今日はここまで。次回もお楽しみに!

続きを読む