モノクロタイム

I'm from the future!

大学院(修士課程)を卒業しました.

こんにちは,れいじです.

入社エントリや退職エントリが溢れる今日この頃,こっそりと卒業エントリをば.

ちなみに学部の卒業エントリはこちら.

reiji1020.hatenablog.com

大学院に進んでよかったこと

1.割と計画立てて研究(仕事)をこなせるようになった

B4までひたすら天からやる気の神が舞い降りてこないと何も手につかない状態でした.ただこのやる気の神が舞い降りてきたときは(実験やデータ作成にかかる時間を除けば)1〜2ヶ月ぶんくらいの進捗が出ます.この辺のイメージは大体ここのページ↓に書いてある「出力が安定しない問題」がわかりやすいです.

http://menhera.jp/2064

研究テーマである機械学習は時間を掛けて学習器もしくはネットワークを作成する必要があり,これらのデータを作成している間は気合いを入れてやらなければいけないタスクが少なかったのでぼちぼちと作業を続けるようにしていました(取りかかるまでにかなり時間はかかりますが).

あとはスケジュール帳にひたすら「○日までに××を終わらせる」「△△を書き上げる」など書き込んだり,その日に少しでも研究タスクを進めたらシールを貼るなどしていました.かなり子どもじみた事をしていますが,1日でもシールが貼れてない日があると気持ち悪いと感じるたちなので,かなり無理矢理な形ではありますが計画的にタスクを消化できるようになりました.

2.完璧主義が緩和された.

というのも大学院入学初期に精神がやられたので,直すほか無かったというのが正しいです.精神がやられた後は(許される範囲で)タスクの完成度を落とすようになりました.それまでは週に70のアウトプットを要求されているのに,140のアウトプットで答え続けていて,最終的に3,4日で300のアウトプットを要求されるようになり潰れました.

上述にもあるとおり,この頃の私はやる気の神が降りてこないと膨大な進捗を生み出す事が出来なかった上,通常の授業で課される課題でも指導教員の納得のいくレベル以上の成果物を持って行かなければいけないなどのプレッシャーが強かったという事が理由です.

フルパワーでタスクをこなさなくなってからはかなり精神も落ち着いていて(それ以降闇落ちしなかったとは言っていない),ちょこっとずつこなした成果とやる気の神が降りてきたときに出した成果を小出しにしながら,別途要求されたデータについては予め作っておいた成果を出して報告する,といったスタイルで研究や授業課題を進めていました.

1度に完成度Maxのデータを出し続けるのはキツい.

3.ぎじゅつりょく が あがった !

学部の頃より技術力が上がりました(当社比).DeepLearning系のアレに関しては完全に自分でどうにかするしかなかったので,特にPythonとCaffeのスキルが伸びました.やっぱり…独学が…最高やな!

Pythonに関してはB3辺りから導入は既に考えていて,M1から本格的に書き出したような形になります.はじめは自分で作っていた実験用プログラムをC++からPythonに書き直して,徐々にPythonに移行していきました.当時は学内でPython書けるマンがいない&図書館に実用性のあるPythonの本が無かったので他ゼミの先生と一緒にPythonを勉強しました.それからは独学でポチポチと.コーディング作業はやる気の神が居なくても集中するので助かりました.

実際問題として,優秀な先輩が早々に卒業した&優秀な先輩が大学院にしかいない事で「どう成長するかは自分次第」的な環境ってどうなんでしょうね.個人的には1学年に1,2人くらいはぶっ飛んだスキルの学生が居てくれた方がいい気がします.うちの学科は3年に1人のペースでしかぶっ飛び学生が入学しないらしいので,仕方ないね.

大学院で何をやってたか

畳み込みニューラルネットワーク(CNN)を使用してエッジがはっきりしないグレースケール画像(所謂チャネル数の少ない画像)でも物体の輪郭線を正しく抽出できるシステムを作りました.共同研究先がいるので詳しく書けません,すみません.

論文はボスと読んだ論文よりも自分で集めて読んだものの方が多かったです.研究に生かせそうなものから,単純に興味のある論文まで幅広く読みました.お陰でリーディング能力だけはメチャメチャ向上した気がします.ライティングのことは触れないでくれ・・・

その他にはvvvvを使ってVJ Cardboard(ブイジェーカードボード)というVJ用DIYハードウェア・ソフトウェアを開発しました.趣味と興味が一致した作品なのでかなり思い入れがあり,そして恐らく修士研究よりも完成度が高いです.ある人に特許をとれと言われましたが,お金ないのと事務処理苦手なのでそのままにしてます.元々オープンソースで公開する事が一つの目標だったので,理念にも反していますしね.

reiji1020.hatenablog.com

このへんからvvvvコミュニティの方とも色々交流させて頂くようになりました.

その他にはディープオソマツとか.

reiji1020.hatenablog.com

就職イベントで話題に出すとかなり食いついてくれて嬉しかったです.

イヤリングも作りました.

reiji1020.hatenablog.com

これは卒業式に付けていきました.後輩から大人気でした.よかった!

こうやって振り返ると,どちらかというと学外で目立つことの方が多かったですね.

これからのこと

東京のウェッブ系の企業でDeepLearningっぽいことをする(はず)予定です.

つよいエンジニアやおもしろエンジニアとメチャメチャ交流したいので,東京にいらっしゃる方や就職先の方々は仲良くして頂けると嬉しいです.

【vvvv】Emgu.CV.CvInvoke周りのエラーを解決する【dx11&CV.Image】

こんにちは,れいじです.

前々からずっとdx11で何かやりたい…やりたい…と思っていたのですが,タイトル名にあるEmguなんちゃらのエラーで引っ掛かって何もできない日々が続いておりました.

具体的なエラーはこれ.

'Emgu.CV.CvInvoke' のタイプ初期化子が例外をスローしました。

FileImage(CV.Image)のヘルプパッチとかで確認できます.

f:id:yomoyamareiji:20170307164248j:plain

これが出ていて何もできない!

…という問題を解決できたので,記事にしておこうと思います.

vvvvのバージョンはvvvv50beta35_86,dx11のバージョンは1.0.1です.

参考にしたのはここです.

github.com

/packs/dx11/core内にnvcuda.dllがなかったことが原因のようです.どこかでビルド失敗してるのかな…

というわけで,以下のURLからnvcuda.dllをダウンロードします.

http://www.symbioticcube.com/Downloads/nvcuda.dll

落としてきたnvcuda.dllを/packs/dx11/core内に配置します.vvvvを起動している場合は一度終了して,もう一度vvvvを起動してください.

f:id:yomoyamareiji:20170307164907j:plain

エラーが消えました.これでdx11ライブラリが思う存分使えますね!

スレッドや質問の時期がかなり古いですが,他の人は問題なく使えているんだろうか…💦

いやぁこれでまたvvvvライフが捗ります!

ではでは~

ぺちぱな。13に参加しました

こんにちは,れいじです.

3月4日に開催されましたhttps://atnd.org/events/85952に参加してきました.

ぺちぱな。

今回は世界のキタジマさんことキタジマタカシ🐒Snow Monkey 開発者 (@inc2734) | TwitterさんからWordPressのローカル開発環境の構築について学ぶ会でした.

そんなキタジマさんのサイトはこちら.

2inc.org

なんかグッズとかもあるらしいですよ.

SUZURIでオリジナルグッズの販売をはじめました – モンキーレンチ

WordPressのローカル開発環境

WPのローカル開発環境を作るためのツールとしてはvccwなどが有名です.

vccw.cc

vccwはVagrantを使用して動作環境を作成するのですが,PC内にもう一つOSを入れて仮想環境として使用するので,抱えている案件が多くなった場合開発環境をいくつもPC内に作ることになります.

ここで使用するのが,Vagrantに似た仮想環境作成用ツールのDocker.

paiza.hatenablog.com

WPの開発に必要な要素(PHPmysqlなど)をひとまとめにしたコンテナをやりとりすることで,複数のPCで同じ実行環境を作成することが出来ます.

今回の勉強会では,あらかじめ用意されたDockerイメージを参加者に配布してハンズオンを行いました.

Composerでプロジェクトを管理する

getcomposer.org

PHPに限らず様々なアプリケーションでもそうですけど,依存ライブラリがバージョンアップするとこれまでのプロジェクトがうまく動作してくれないとかよくありますよね.

Composerはプロジェクトが依存しているPHPパッケージを管理してくれるツールです.Pythonのpipでいうrequirement.txtみたいなもんだと思います.

Docker-composeでコンテナの管理を楽に

さっきのやつとなんだか似ていますが別物です.Docker-composeはコンテナにまとめた環境の実行手順を自動化してくれる機能で,コマンド一つで実行環境を起動してくれます.

docker-compose を使って WordPress テーマ開発環境を構築しよう – PSYENCE:MEDIA

実行環境を立ち上げるときの順番とかが重要らしいです.しくじると動かないとかもあるみたい.

ショートコードを使用して記事中でPHPを呼び出す

ハンズオン途中でしくじったので途中ついていけていない部分があったのですが,こちらを見ながらやってみました.

www.webopixel.net

PHPのadd_shortcode()関数を使用することで,記事中で決められた語句を表示させるプラグインを作成することが出来ます.

add_shortcode( 'pizza', function( $attributes, $content = '' ) {
    return 'だれかピザおごって';
} );

f:id:yomoyamareiji:20170305174026p:plain

f:id:yomoyamareiji:20170305174037p:plain

ピザ奢ってください(切実)

勿論このプラグインもcomposerで管理することができる…はずです!

さいごに

WordPressはちょこっと触ったことがある程度であまり詳しくはなかったのですが,今回でわりと仲良くなった気がします.

Dockerは最初導入部分で躓いたので険悪でしたが,勉強会終盤では少し仲良くすることができました.よかったです.

何よりも東京に行く前に長崎の勉強会に参加できてよかったと思います.

別れのあいさつにハンカチおじさんこと@tactactadさんからイケイケハンカチをもらいました.

そしてトリコ普及マンこと@rohinomiyaさんから人喰いの大鷲トリコをいただきました.

また帰ってきます!のでその時はよろしくお願いします.

というかvvvvの勉強会やりたいんで!ほんとに!よろしくお願いします!

ではでは!

NeoPixelとGemmaを使って卒業式用のイヤリングを作った(2017/03/03追記)

こんにちは,れいじです.

就職前に住む家を見つけるため,東京に滞在しています.

さて,以前スイッチサイエンスでこんなものを買っていました.(詳しくは前の記事をどうぞ)

GEMMA

GEMMA

  • スイッチサイエンス
Amazon

reiji1020.hatenablog.com

こちらを使って卒業式に付けるアクセサリーを作りたかったので,こちらの記事を参考にしながら,プログラムをGemmaに書き込むことにしました.

dotstud.io

ギャル電さん.超イケてますよね!

読み替え

私が購入したNeoPixelは16連ではなく12連なので,配線部分の読み替えが必要でした.

f:id:yomoyamareiji:20170222154709p:plain

(配線図作るのむずかしい・・・)

Gemma NeoPixel
D0 IN
GND GND
VOUT PWR

ArduinoIDEの導入やライブラリなどは上の記事の通りに進めるとよいです.あ,「Adafruit Neopixel by Adafruit」の部分は画像中では違う場所に赤枠がついているようなので注意.

動作確認

サンプルプログラムでは青と黄色にしか色が変わらなかったので,もうちょっとカラフルにしてみました.

f:id:yomoyamareiji:20170222153808j:plain

青・黄色・水色・緑・紫・赤・ピンク・黄緑に光ります.各色が順番に光ります.

コード

// Low power NeoPixel earrings example.  Makes a nice blinky display
// with just a few LEDs on at any time...uses MUCH less juice than
// rainbow display!
 
#include <Adafruit_NeoPixel.h>
 
#define PIN 0
 
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(24, PIN);
 
uint8_t  mode   = 0, // Current animation effect
         offset = 0; // Position of spinny eyes
uint32_t color  = 0xffae00; // Start red
uint32_t prevTime;
uint32_t colors[] = {0xff0000,0xff8000,0xffff00,0x00ff00,0x00ffff,0x0000ff,0x7f00ff,0xff00ff};
uint8_t colorid = 0;
 
void setup() {
  pixels.begin();
  pixels.setBrightness(60); // 1/3 brightness
  prevTime = millis();
}
 
void loop() {
  uint8_t  i;
  uint32_t t;
 
  switch(mode) {
 
   case 0: // Random sparks - just one LED on at a time!
    i = random(24);
    pixels.setPixelColor(i, color);
    pixels.show();
    delay(10);
    pixels.setPixelColor(i, 0);
    break;
 
   case 1: // Spinny wheels (8 LEDs on at a time)
    for(i=0; i<12; i++) {
      uint32_t c = 0;
      if(((offset + i) & 5) < 2) c = color; // 4 pixels on...
      pixels.setPixelColor(   i, c); // First eye
      pixels.setPixelColor(23-i, c); // Second eye (flipped)
    }
    pixels.show();
    offset++;
    delay(50);
    break;
  }
 
  t = millis();
  if((t - prevTime) > 8000) {      
    mode++;                        
    if(mode > 1) {                 
      mode = 0;                    
      colorid = random(8);
      //if you want to loop through colors, uncomment line 58;
      colorid = offset % 8; 
      color = colors[colorid];
    }
    for(i=0; i<24; i++) pixels.setPixelColor(i, 0);
    prevTime = t;
  }
}

実はまだイヤリングの金具自体は付けられていないんですが・・・汗

あとは実家で金具を付けるだけです!完成が楽しみですね.

ではでは〜

【2017/03/03追記】

イヤリングの金具つけました!かわいい!

f:id:yomoyamareiji:20170303223027j:plain

[asin:B01MG5OWC7:detail]