バルーンポケモンが好きな人のブログ

つまらない はなしで あいてをねむらせるのが とくいだぞ

にんじんジュース

にんじんジュース、好きなんです。
野菜ジュース系だとにんじん以外の野菜も含まれてるので、にんじん本来の味を感じたく、以下のを購入しました。


りんご成分の入ったにんじんジュースとセットになっている商品です。飲み比べができますね!
これを飲んでいるときだけはにんじんは野菜じゃなくて果物なんじゃないかと錯覚してしまいます。それくらいに甘いです。
かぼちゃも僕の中では果物枠です。あれは野菜じゃない。

トマトジュースとかもフルーツトマトなるものが存在しているのだから、甘くて美味しいジュースがあるのだろうと思ってはいますが...
市販のトマトジュースは飲めず、鶏肉と一緒に煮込むスープとして活用するのがオチになるので、通販で少しお高めのジュースを買ってみるかどうかは未だに検討中のまま。

もくもく会

初めてもくもく会を開催する立場になりました。内容はプログラミング関連です。言語や技術は特に問いませんでした。
人集めはconnpassで行いました。以下のグループで開催してるので興味がある人がいればぜひ参加していただけると嬉しいです。
月一のペースでやりたいと思っています。

tachikawa-otonamuke.connpass.com

とりあえず6月上旬に第2回を開催しようと模索しています。

このような交流会を通じて、私のUnity勉強がもっと捗るといいなあ。
あと、技術仲間が増えるといいなと思っています。

イラストを描く

メディバンペイントで絵を描き始めました。

数年前にiPadを購入し、特に意味もなくApple Pencilも購入したのですが、当時はまったく使わなかったのでペンシルのほうはメルカリで売りました。
それをさらに安値で買い戻し、絵を描き始めた次第です。

私が絵を描き始めた理由はScratchで作りたい作品において、自分のイメージに合う絵を用意したかったからです。
ScratchはGUIのプログラミングツールです。作成したプログラムは他の人にもアクセスしてもらえるよう共有することができるのですが、プログラム内の素材も含めて再配布可能な形式で共有する仕様になっているため、巷にあふれるフリー素材が使えない...なんてことが頻発します。
例えば、いらすとやの素材は使えないんです。

www.irasutoya.com

公式でダメと言われちゃあ、私は手も足も出ませんね。

というわけで、ついに私は再びApple Pencilを握る決意をしたわけです。メルカリで買い戻してね!

Ain't No Magic

自分で色々描いてみて、とりあえず作品として仕上げたのが、このAin't No Magicになります。

f:id:slowsingle:20210511020935p:plain

絵の技術は発展途上です。そこは温かい目で見ていただければと思います。これからも発展し続けるかは私のやる気次第です。
一応、タイトルの「Ain't No Magic(魔法じゃない)」の意味もちゃんと作品に込めていますが、びっくりするほどこの作品に注目が集まらなかったのできっとその意味を理解して何か感じてくれる人が現れることはおそらくないのでしょう。

人を惹きつける何かを作るって難しいですねぇ...

十数年ぶりのしそジュース

私、いま社会人なのですが、小学生だったころはおばあちゃん子だったので、週末はよくおばあちゃんの家に遊びに行っていました。

おばあちゃんがよく作ってくれた飲み物に「しそジュース」がありました。
美味しいんですよ、これが。
いまは地元を離れているのもあってなかなかおばあちゃんの家には行けないというのもあり、久しぶりにしそジュースが飲みたいなと思ってもなかなか叶わないので、ちょっと楽天で買ってみることにしました。


飲んでみると、ちょっと味が違うんですよ。
私の知ってるしそジュースじゃないな、と。
決して味が悪いわけではなく、ちゃんとしその風味も感じられるのですが、思い出とは違うんです。

原因はこのしそジュースが無糖だからなんですね。
私の記憶にあるしそジュースはたしか、砂糖がたくさん入っていて、それですごく甘みを感じられるのですが、無糖の場合は甘みがありません。
野菜本来の甘み、といってもしそなので、無糖だと全然甘くないです。渋みが強いです。

なので、甘いほうが良いという場合はこっちのほうがおすすめですね。


無糖のしそジュースはそのまま飲んだり、水やソーダで割る、というよりかは他の甘い飲み物と割って飲むとより楽しめるんじゃないかと思います。

ということで、色々割って飲んでみました!

コカ・コーラ

配合は、しそジュース:コカ・コーラ=1:3
一番美味しい。しその渋さとコーラの甘さがすごく合いますね。

カルピス

配合は、しそジュース:カルピス=1:3
これも美味しいですね。カルピスの甘みが抑えられることによって、酸味がより引き立つ味わいでした。

ジンジャーエール

配合は、しそジュース:ジンジャーエール=1:3
これはそんなにかな、という感じでした。ジンジャーエール単体のほうが美味しいですね。
甘い飲み物との相性は良いんですが、ジンジャーエールのように甘み以外に、苦みのような味わいがあるとそっちが引き立ってしまうのはあります。

午後の紅茶レモン味

配合は、しそジュース:午後の紅茶=1:3
これもジンジャーエールの場合と同じですね。紅茶の持つ渋みが強調される(甘みが抑えられる?)ので少し飲みにくくなったかも。

オランジー

配合は、しそジュース:オランジーナ=1:3
オレンジは裏切らないですね。

牛乳

配合は、しそジュース:牛乳=1:4
牛乳も合うなんて記事があったから飲んでみたけど、僕はちょっと飲めないですね。。。
健康食品なんだと思えば行けます。リピートはしないけど。

総評?

コカ・コーラとオランジーナは合う。それ以外は気が向いたら。
牛乳はダメ。砂糖とか追加すれば行けるのかもしれませんけどね。
調味料を色々追加して飲むのは手間がかかって面倒なので、たぶん私はやらないですね(笑)

Scratchを初めて半年ちょいくらい

Scratchと呼ばれる、教育向けのプログラミングツールをご存知でしょうか?
主に子どもたちがプログラミングを学ぶために使っている、 ブロックをつなげながらアルゴリズムを作っていくGUIのツールのことです。

このScratchを初めた理由は単純で、 子どもたちとプログラミングを通じて一緒に学んでいくというかたちのボランティアに参加したからです。
私もScratchで作品を作って、子どもや一緒にボランティアに参加しているメンターの方々と共有していくことで、 プログラミングの楽しさや知識などを提供できたらと思っています。

せっかくなので、1つ紹介。

ピンボールランナー

ピンボールランナー

f:id:slowsingle:20210501214558p:plain

上から落ちてくるボールに対して、かごを左右に動かしながらキャッチしていくゲームです。
えっ、フジテレビ系列の番組で同じような企画があるですって? 気のせいじゃないですか?

メディカルAI専門コース オンライン講義資料でお勉強してみた

新年明けましたね。いい感じの挨拶の言葉が浮かばなかったので、とりあえず気にせず頑張っていきましょう。

 

医療データにDeep Learningを適用して、いろいろと認識させるための教材が無料で公開されていたので、ガキ使を横目に勉強していました。

本当は新年明ける前に終えたかったのですが、途中でガキ使が終わっておもしろ荘とかいうネタ番組が始まっていたので、結果的に間に合いませんでしたね。

 

japan-medical-ai.github.io

 

私はDeep Learningは仕事でも使っており、それでご飯を食べている人間なのですが、医療データの扱いについては無知ですし、Deep Learningについても新たな発見があるかなと思って取り組んでみました。

 

コードのすべてがGoogle Colabで動くのが良いですね。

GPUを使って作業するので、ランタイムの「ランタイムのタイプを変更」を選んで、ハードウェアアクセラレータをGPUにするのを忘れないようにしましょう。

ここで5分つまづきました。もうちょっとでやる気をなくすところでした。

 

MRI画像や血液の顕微鏡画像、心電図の波形など様々なデータに対して、そのデータと実際に解くタスクに見合ったDeep Learning手法を適用するというのが実践編の流れです。

 

備忘録も兼ねたメモをここに残したいと思います。

 

まずは5章のDeconvolutionの設計に関して

 

カーネルサイズをstrideで割り切れる数にする(checker board artifactを防ぐため.こちらを参考のこと:Deconvolution and Checkerboard Artifacts
出力サイズは,stride×(input_size−1)+ksize−2×padとなるので,目的の拡大後サイズになるようパラメータを調整する

 

GANとかの画像生成でDeconvolutionを使うなんてことがありますが、artifactが目立ってしまい、いびつな画像ができてしまう問題があるようです。

このテクニックはそれを軽減できるのかもしれません。憶えておきます。

 

次は6章の物体認識用のネットワークであるSSDを学習させる部分の話です。

 

次にOptimizerを作成します.今回はMomentum SGDという手法を用いてモデルのパラメータの最適化を行います.その際に,モデルの中にある線形変換が持つバイアスのパラメータに対しては勾配が2倍の大きさになるようにupdate_ruleに対してフックを設定します.また,バイアスパラメータの場合にはweight decayは行わず,バイアスパラメータ以外のパラメータに対してはweight decayを行うように設定しています.これらは学習の安定化などのためにしばしば用いられるテクニックです. 

 

バイアス項はweight decay(重み減衰)させないほうがいいと言う話は聞いたことがあります。こうして再びその話を聞くということは、このテクニックにはそれなりの市民権があるのですね。

あとは、バイアスのパラメータの勾配を2倍にするというのは初耳でした。

 

8章の精度向上に向けては全体的にためになりました。今回のデータセットにおいては、1D Dilated Convolution+Dropout が一番精度向上に寄与していました。もちろん、確率的な操作が入るので精度向上の実感の度合いは人それぞれだと思います。

 

それ以外の手法は相対的に見ればそこまで大きな改善にはならなかった印象があります。

ただ、実装自体はそこまで難しくなく、気軽にチャレンジできる類のテクニックなのでぜひ活用したいと思います!

 

Unreal Engine4のお勉強 Part2

引き続き、この本を読みながらUnreal Engineの勉強をしていきます。

今回は6章(AIの実装)からラストまでをしました!

 

作れる!学べる!Unreal Engine 4 ゲーム開発入門

作れる!学べる!Unreal Engine 4 ゲーム開発入門

 

 さすがに本の内容を垂れ流すわけにはいかないので、ここでは本を読んでいく中でつまづいた点を紹介していきます。

 

1. AIキャラクターを配置してゲームを実行すると、ゲーム終了時にエラーが出る

本に書いてある通りにAIキャラクターを作成して、ゲーム上に配置して実行します。

プレイしてみると、ちゃんとプログラム通りに動いてくれて一見問題ないように見えるのですが、Escキーを押してゲームを終了させると...

 

f:id:slowsingle:20181123113148p:plain

 

こんな風にエラーが出てしまいます。ゲーム中はエラーが出ないのでスルーしてもよいのですが、何だか気持ち悪いですよね。

どうやらAIキャラクターに紐づけられたアニメーションに問題があるようです。本では、プレイヤーもAIキャラクターも同じアニメーションのブループリントを使っていました。これを別々のブループリントを使うようにしてAI向けにカスタマイズしましょう。

 

つまり、アニメーションBPも複製して、以下のように編集します。

 

・イベントグラフ

f:id:slowsingle:20181123113916p:plain

 

・アニムグラフ

f:id:slowsingle:20181123113956p:plain

 

難しいことは何もしていなくて、単純にジャンプに関するブロックを削除しているだけです。

AIキャラクターはプレイヤーを追いかけてくるだけでジャンプはしないので、ジャンプ処理は不要です。

 

あとは、AIキャラクターのアニメーションを、今回新たに作成したアニメーションBPに紐づける作業が残っています。

すでにプレイヤーとプレイヤーのアニメーションBPとを紐づける作業は行っています。本書の145ページあたりを見れば方法がわかります。

 

2. ゲームのリスタート

8章のゲームのクオリティを上げるという項目において、「ゲームのリスタート」を実装しています。

これはゲームクリア、またはゲームオーバーになったときに、もう一度ゲームをプレイするための機能を実装するものです。

 

本書では、下の図の状態から「Get Game Mode」から「Restart Game」にピンをつなげればOKなのですが、互換性がないとのエラーが出てつなげられません。

 

f:id:slowsingle:20181123115036p:plain

 

これはUnreal Engine4のバージョンの違いに問題があるようです。

 

unrealengine.hatenablog.com

 

「Restart Game」はGame Modeクラスにあるので、BP_MyGameModeの親クラスを「Game Mode Base」から「Game Mode」に変更します。

BP_MyGameModeのブループリントを開き、クラス設定をクリックします。そこから詳細タブに行って、クラスオプションの親クラスを変更します。

 

f:id:slowsingle:20181123115644p:plain

 

この変更によるコンパイルエラーは起きなかったので問題ないとは思いますが、念のためにここでコンパイルして確認しておくことをお勧めします。

リスタートの実装は以下のようになります。真ん中に「Cast To GameMode」ノードを追加する必要があります。

 

f:id:slowsingle:20181123115906p:plain

 

3. Win64へのパッケージ化

本書の最後でWindows(64ビット)のプロジェクトをパッケージ化し、他の環境でも実行できるようにします。

 

Visual Studioの環境(正確にはその中にあるC++のビルドツール)がないとパッケージ化できないので、前もってインストールしておく必要があります。

まあ、気にせずパッケージ化を進めると、足りないツールがあるのでインストールしてくださいとダイアログが出て、さらにリンクも現れるので、それに従えばよいと思います。

以下のページが参考になるかと思います。インストール時に何をインストールするかをこちらでカスタムして入れる必要がありますが、それをせずにインストールしてしまった場合でも後から入れなおすことができます。

 

パッケージ化できるようにする(Visual Studioをインストール) – unrealpocket

qiita.com

 

また、プロジェクトがあるフォルダのパスに日本語があると、それが原因でうまくファイルにアクセスできずパッケージ化に失敗することがあります。

特に指定していなければドキュメントフォルダにプロジェクトが格納されていると思いますので、これをC直下か日本語のないフォルダに移動させてください。

その後、移動させたプロジェクトを開いて、パッケージ化すれば以下のように新たにいくつかファイルが出来上がります。

 

f:id:slowsingle:20181123121001p:plain

 

MyProject.exeをダブルクリックすればゲームが始まります!

というわけで、無事に本を読み進めながらゲームを作ることに成功しました!