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

ytbilly3636’s 研究備忘録

機械学習,Python,ガンダムなど

ガンダムエクシアダークマター ゲート処理

ガンダム 日記

こんにちは.

今回の日記は先日購入したエクシアダークマターの作成記録その1です. 実を言うとこちらのガンプラは既に組み上がっているのですが,写真を撮るだけ撮って忘れていましたので久しぶりの更新です. さて,今回は作業工程の一つ「ゲート処理」について紹介いたします.

ゲート処理の必要性

ゲート処理を行った結果を示す前に,その必要性について紹介しておきます. まずはゲート処理というものを私が知らなかった時に組み立てたガンプラの写真を御覧ください. f:id:ytbilly3636:20170319202653j:plain こちらはグラハム・エーカー専用ユニオンフラッグの足先のパーツになります. 所々にポツポツと白い凸が見えるかと思います. これはパーツをランナーから切り離す際に切れ味の悪いニッパーで切断したため, パーツが白色化したことによって出来たものです.

基本的にニッパーでパーツを切断すると断面が白色化します. 切れ味の良いニッパーを使うと白色化は軽減されますが, ニッパーの切れ味は永遠に持続するわけではありません.

この部分をヤスリで削り落としてから,塗装をすればそれなりに目立たなくはなると思います. しかし,ヤスリがけは非常に手間のかかる作業ですし,私の場合塗装までは行わないので, ヤスリをかけてしまうとその周りのパーツの色までもが落ちてしまうため, 余計にその部分が目立ってしまいます.

デザインナイフによるゲート処理

では,エクシアダークマターの事例を用いてゲート処理を紹介いたします.

まずニッパーでパーツをランナーから切り離してみます. f:id:ytbilly3636:20170319203942j:plain 写真の左下部分と右下部分に切り離した後が見えるかと思います. こちらの場合も切断面がやや白くなっています. この部分をゲート処理によってきれいに仕上げていきます.

ゲート処理には切れ味の良いデザインナイフを使います. 私はタミヤのデザインナイフを使っています. 替刃がたくさんついているので,時々交換して切れ味の良い状態を保っています. f:id:ytbilly3636:20170319204200j:plain ナイフを使って先程のゲート部分を徐々に徐々に削っていきます. ポイントとしては,ニッパーで切り離す際に少し余裕を持って切り離しておくことと, ナイフで削る際には焦らずに少しずつ削っていくことです.

詳しいやり方については下記の動画がわかりやすいかと思われます. 私はこちらの動画を見てゲート処理を勉強させていただきました. www.youtube.com

以上の方法でゲート処理を施したのが下記の写真になります. f:id:ytbilly3636:20170319204602j:plain ほとんどゲート跡が目立たなくなっているのがお分かりいただけるでしょうか. この処理を全てのパーツについて行っていきます.

但し,組み上がった際にどう考えても表に出ないであろう部分には処理を施しません. なんだかんだ言ってゲート処理はめんどくさいですからね.

フライパンで広島のお好み焼きをつくった

日記

こんにちは.

年度末ということで最近研究室がバタバタとしています. バタバタとしてくると平日は帰りが遅くなり食生活も乱れてきます. 休みの日くらいはヤサイをきっちりと摂りたいところですね. ということで,今日はヤサイをたっぷり摂れるお好み焼きをつくりました.

材料は以下の通りです. キャベツは自分で刻んでもいいですし,豚肉をシーフードに変えても美味しいです. 既に切ってあるキャベツを使うと包丁を使わなくてよいので楽です.

  • キャベツの千切り 150g
  • もやし 適量
  • 豚バラ肉 適量
  • 小麦粉 50g
  • 卵 2個
  • そば 1玉
  • ソース 適量

f:id:ytbilly3636:20170312210034j:plain

まずは生地を作ります. 小麦粉約50gと水70ccとみりん少々をダマが出来ないようにしっかりと混ぜます.

f:id:ytbilly3636:20170312210519j:plain

油を引いたフライパンに生地を伸ばします. ここで生地を使い切らず少しだけ残しておいてください. ちなみに写真のフライパンは直径20cmの小さめのフライパンです.

f:id:ytbilly3636:20170312210709j:plain

生地の上にキャベツともやしと豚バラ肉を重ねていきます. ここで適当に塩コショウを振っておきます. その上から先ほど残しておいた生地をかけます. 本来であればもう1枚か2枚ほど豚バラをのせたいところですが, お昼ごはんに食べてしまって2枚しか残ってませんでした.

f:id:ytbilly3636:20170312211020j:plain

広島のお好み焼きはパリっと焼くと非常に美味しいです. 生地をパリッと焼きたいので生地にしっかりと焼き目がつくまで待ちます. 但し,焦げてしまうと台無しになるので弱火から中火くらいでじっと待ちます. 時々フライ返しで裏面の様子を見て,適当なところでひっくり返します.

f:id:ytbilly3636:20170312211316j:plain

上手くひっくり返すポイントは以下のとおりです.

  • くっつきにくいフライパンを使う
  • 鍋を振りながら勢いをつけてひっくり返す

ひっくり返したら形を整えながらフライ返しで押さえつけます. 関西のお好み焼きでは生地を押さえつけてはいけないというのは有名な話です. それは生地をふっくらと焼き上げたいからです. 広島の場合はパリッとした仕上がりにしたいので, しっかりと押さえつけてヤサイの水分を飛ばします.

f:id:ytbilly3636:20170312211819j:plain

しっかりと水分を飛ばすためにじっくりと時間をかけます. 焦がさなければ大丈夫です. 具材の水分を飛ばし,ある程度かさが減ってきたら一度お皿にあげておきます.

f:id:ytbilly3636:20170312212038j:plain

次はそばを焼きます. ほぐれやすくするために予め電子レンジである程度温めておくことをオススメします. 私の場合,そばに少量のケチャップを入れます. ここで入れすぎるとナポリタンのようになってしまうので気をつけてください. あとは適当にオタフクソースをかけてしっかりと混ぜます. そばも軽く焼き目をつけて,パリッとさせましょう.

f:id:ytbilly3636:20170312212401j:plain

最後に卵を焼きます. 卵は1個で十分だと思いますが,私は卵が好きなので2個使います.

f:id:ytbilly3636:20170312212624j:plain

黄身を割って均等にほぐします.

f:id:ytbilly3636:20170312212713j:plain

その上に焼きそば,最初に焼いた生地とヤサイの順で重ねます. ここまでくれば後はひっくり返すだけです.

f:id:ytbilly3636:20170312212837j:plain

最後にソースをかければ完成です. またお好みで青のりや青ネギ,ゴマ,紅ショウガなどを加えるといいかと思います. またここで少し火を通すと生地がパリッと仕上がる上に, ソースに少し焦げがついて香ばしい香りをつけることが出来ます.

f:id:ytbilly3636:20170312205736j:plain

ということで,お好み焼きの作り方を紹介しました. かなりボリュームがあって,宅配ピザのSサイズくらいはあるかと思われます. パリッと焼き上げることができれば,かなり本格的な味に近くなるので, 試してみてはいかがでしょうか……

このブログ,どこが研究の備忘録なんだろう…….

学会に参加したときに必ずやること

日記

こんにちは.

先週,学会で研究の発表をしてきました.
一人で見知らぬ地への参加は少し不安がありましたが,
日本語の発表かつそれなりに見知った方もいらっしゃったので,
緊張することなく無難に発表を終えることができました.

さてタイトルに書きましたように,
今回は私が「学会に参加したときに必ずやること」
についてお話したいと思います.

実を言うと,今回の内容の一部はとある先生の受け売りです.
その先生に教わって以来,学会参加の度に試してきましたが,
これがなかなかいい感じなのでご紹介したいと思います.

1.発表練習は数十回する

発表前には練習をして制限時間内に話せるようにしておくのは当たり前です.
しかし,数回しか練習をしないという方もいらっしゃるのではないでしょうか.
発表練習がどれくらい必要かというのは人それぞれだとは思いますが,
たった数回の練習で十分なパフォーマンスを発揮できる人は極稀かと思います.

私の場合,通し練習を20回以上は行います.
ある先生曰く40回は必要らしいです.

回数を重ねていくと徐々に余裕が生まれてきます.
初期段階では詰まらずに話せるようになり話すスピードが上がります.
次の段階では話す内容やスライドを覚えてくるのでカンペに頼らなくなります.
カンペに頼らなくなれば聴衆を意識しながら話せるようになります.
……

といったように発表がうまくなっていきます.
私は聴衆の反応を見ながら話し方を変える余裕が生まれるまで練習します.

また,手元にストップウォッチを置きながら練習すると,
自分の発表のペースを確認することができるので,
スライドの時間間隔を把握しながら発表できてオススメです.

2.座長に挨拶をしておく

発表の練習をすれば,残る不安要素は質疑応答だと思います.

こればかりは自分の研究や関連研究について
しっかりと把握する以外対策がないと思いますが,
座長に事前に挨拶をしておくと精神的に少し楽になります.

セッションの合間の休憩中が挨拶のチャンスで,
「プレゼンのテストをさせていただいてよろしいでしょうか」
と座長に一言かけ,
「質疑応答の際にはよろしくお願い申し上げます」
と言っておけば,優しく質問をしてくれると思います……,多分.

3.懇親会に積極的に出る

もし,時間的・金銭的に余裕があればの話です.

私は人見知りをするタイプで,
よく知らない人とご飯へ行くのは苦痛に感じるのですが,
いざ参加すれば同世代の学生が多く,
アルコールが入った大人たちの中には学生のようになる方もいらっしゃるので,
最終的には楽しかったなと思えることが多いです.

また,似たような学会に参加すると,
参加者はオーバーラップするので,
懇親会で仲良くなっておけばまたどこか出会えたりします.

また,ここで座長の先生にビールをついでおけば完璧でしょう……,多分.


というところで今回の話は以上になります.
これから初めて学会に参加する方は実践してみてはいかがでしょうか.

それではさようなら.

紺ちゃんはいけないことをしてしまったのか

日記

こんにちは.

私は週に数本の深夜アニメを観る習慣があるのですが,
昨日観た『うらら迷路帖』というアニメの八占(第8話)に気になることがあったので, そのことについてお話します.

うらら迷路帖 公式ホームページ|TBSテレビ

ネタバレを含むのでご注意ください

まずは,簡単な設定から.

このアニメは「うらら」と呼ばれる占い師の女の子達のお話です.
うららは神様の力を借りて占いをすることができます.
うららにはいくつかルールがあるのですが,
その中に神様について占っては(知ろうとしては)いけないというルールがあり,
もし占ってしまえばうららの力を失ってしまいます.

ストーリーは4人の見習いうららを中心に展開されていきます.

第8話は,女の子たちが泉に遊びに行くところから始まります.
※いわゆる水着回でした.
そんな中,1人の女の子「紺」が「いけないこと」を試してみたいと申し出ます.
「いけないこと」とは「泉中術」という占いのことでした.
これは泉の中に2人のうららが潜り,力を合わせて占いを行うというもので,
強力な力を使うことができるが,なんらかの危険が伴う占いのようです.

「千夜」と「紺」は2人の力を合わせて泉中術をやってみることにしました.
泉中術は成功したかのように思われましたが,ここで問題発生.
2人は泉の中でお化けに出会ってしまい,あわてた「紺」は溺れてしまいます.
※その後普通に助かります.

なんやかんやあって一行は泉から帰るのですが,
紺は泉の中で出会ったのはおばけではなくて神様で,
泉中術を通じて神様のことについて占ってしまったのではと心配になります.

そんな紺を心配した他の3人は紺を元気づけ,
最終的に紺が占いをできるかどうかを試して,無事成功.
紺はうららの掟を破ってない,めでたしめでたしと言うお話でした.

さて,前置きが長くなってしまいましたが,
私が気になったのは紺が占いをできるかどうかを確認したという部分です.

占いができるかどうかを確認=出会ったのが神様かどうかを確認

ということは間接的に神様について占いで調べようとしたことになります.
これはうららのルールに反するのではないかと疑問に思った次第です.

ストーリーでは,紺が見たのは神様じゃなかったからセーフという判定でしたが,

Q.これが神様ですか?
A.違います

という問答を繰り返せば,
いつかは神様を探り当てることができてしまうかもしれないので,
神様の判定は少しゆるいのではないでしょうか.

つまり,紺がお化けが神様かどうかを疑った時点で,
なんらかの占いを行えばうららのルールを破ってしまうことになるので,
結果がどうであれ占いを行うことはできなくなります.
うららとして詰みです.

と,なんやかんや申し上げましたが,
このアニメはそういう部分を気にしながら観るアニメではなく,
可愛い女の子のうららとしての日常を楽しむものなので,
はっきり言って紺ちゃんが掟を破ったのどうのはどうでもいいことです.

ちなみに私はノノちゃんが好きです.
以上です.

Raspberry PiにChainerを入れた話

Python 機械学習

小ネタです.

先日Raspberry PiにDeep LearningのライブラリChainerをインストールしました. Raspberry PiのスペックではDeep Learningは全く実用的ではありません.
ただのお遊びです.

私が持っているRaspberry Piはおそらく初期のモデルBです.
確信がないのは貰い物だからです.

インストールはpipで簡単にできます(すぐに出来るとは言っていない).

$ sudo apt-get install python-pip
$ pip install chainer

Chainerがインストールできたら(数時間かかりました),早速MNISTのベンチマークを走らせます.

import chainer
from   chainer import datasets

train, test = datasets.get_mnist()

#中略

学習が始まらない…….

Chainerの場合,get_mnist()を初めて呼ぶとデータのダウンロードから始まります. (正確には「./chainer/」下にデータが有るかどうかを見る.) ダウンロードされたデータはnpz形式で「./chainer/」下に保存され, 次回からはそこから読み出されます. つまりデータセットの準備に時間がかかりすぎているのでした.

今回はその初回のダウンロードにどれだけ時間がかかるかを測ってみました.

結果:3767.43秒

結論は「やめておいたほうが良い」です. Raspberry Piのスペックやインターネット回線の環境にも依りますが,とにかく遅いです. どうしてもRaspberry PiでMNISTを読み込みたいのなら, 普通のパソコンでget_mnist()を実行してダウンロードしてから, Raspberry Piの「./chainer」フォルダに直接入れてしまいましょう.

Numpyを使うと幸せになれるかも1: データの読み込み

Python

はじめに

こんにちは.

私は普段Pythonでプログラミングをすることが多いです.
Python以外はほとんど使いません.
私がPythonを使うのは

  • 楽にコードが書ける
  • CaffeやChainerなどの深層学習用のライブラリをPythonから使える
  • そもそも他の言語がよくわからない
  • なんだか名前が可愛い

といったところが理由です.

一方で,私が所属している研究室のPython使いは少数派です.
そのような状況で私が困ったことは全く無いのですが,

Pythonをこう使えば,もっと幸せになれると思うんだけどなぁ.」

と,周りの人を見て思うことは多々有ります.

今回の記事では,Numpyを使うと幸せになれるかも」と題しまして,
Pythonの行列演算ライブラリNumpyを使って,
幸せになれるかもしれない方法を紹介できればと思っています.

※注意※
この記事は初心者向けですので,
普段からPythonを使ってらっしゃる方にとっては退屈なお話だと思われます.
Python使いからのツッコミもお待ちしております.

numpy.save()とnumpy.load()

今回の記事で紹介したかったのはこの2つのメソッドです.

想像がつくと思いますが,
その名の通りnumpyの配列を保存・読み込みができます.
それぞれ具体的な使い方は以下の通りです.

import numpy as np

# numpy.ndarray
array = np.array([1, 2, 3])
print array

# 配列の保存
# 引数はファイル名, 配列名
np.save('array.npy', array)

# 配列の読み込み
# 引数はファイル名、返り値が配列
new_array = np.load('array.npy')
print new_array

注目すべき点はその読み込みの速さです. 私の場合,画像処理や機械学習の対象として,大量の画像を取り扱うことがよくあります. この時,画像を読み込んで,画像処理やら機械学習の計算をさせるといったプログラムを作成するのですが,この画像を読み込むフェーズにどうしても時間がかかってしまいます.

そこで,numpy.save()とnumpy.load()の出番です. プログラムの初回起動時には画像を素直に読み込んでおき,numpy.save()で保存しておきます.次回起動時には初回起動時に保存したファイルを読み込むようにします.

その読み込みの速さを確認していただくために,素直な画像の読み込みとnumpy.load()による読み込みの実行時間を比較してみましょう.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import numpy as np
import cv2, os, time

# 複数の画像を読み込んでnumpy配列にする関数
def imgsread(path):
    # ディレクトリ中のファイル名のリストを取得
    filelists = os.listdir(path)
    print 'number of files: ', len(filelists)
    
    # 読み込んだ画像をリストに追加
    imgs = []
    for f in filelists:
        img = cv2.imread(f)
        imgs.append(img)
        
    # リストをnumpyに変換
    return np.asarray(imgs)


# 画像の読み込み時間の計測
s1 = time.time()
array1 = imgsread('hogehoge/foo/bar')
print 'imgsread()', time.time() - s1

# 画像をnpy形式で保存
np.save('array.npy', array1)

# npyファイルの読み込み時間の計測
s2 = time.time()
array2 = np.load('array.npy')
print 'np.load()', time.time() - s2
number of files:  60000
imgsread() 0.231508970261
np.load() 0.0085620880127

小さい画像で実験したので,あまりありがたみは感じられませんでしたが,npy形式で保存させておくメリットはご理解いただけたかと思います.

おわりに

いかがでしたでしょうか. 既にご存知の方もいらっしゃったかもしれませんが, numpyを有効活用して幸せになれる方法が少しでも布教できたら何よりです・

また,numpyにはnumpy.loadtxt()というcsvファイルを読み込んでくるメソッドがありますが, この場合もcsvからではなく,npyファイルにしてからnumpy.load()で読んでくる方が速いみたいです(要検証).

それでは次の記事でお会いしましょう. さようなら.

ガンダムエクシアダークマター1

ガンダム 日記

こんにちは.

私は月曜日から土曜日まで,各日7~8時間程大学で過ごすのですが,
常に集中して研究に取り組んでいるわけではありません.
(もちろん論文提出前などは除きますが…….)
研究に行き詰まったり疲れてくると,
ガンプラを組み立てて気分転換をするのです.

2週間ほど前に,これまで組み立てていたガンプラが組み上がりましたので,
新しくこちらのガンプラを購入いたしました.

f:id:ytbilly3636:20170219145102j:plain

ガンダムエクシアダークマター

こちらのガンプラは素組み+スミ入れで仕上げていこうと思っています.
パーツの色が濃いので,ゲート処理に気を遣いそうです.

作業の進捗があり次第,また更新いたします.
失礼致します.