リア滅の刃(無限爆破編)

題名の時点で溢れ出るクソ記事感を感じたそこのあなた、てめぇの感性は捨ててついてこい!!!俺の承認欲求のために読んでもらう!!読め!!読め!!

自分の為すべきことを為せ!!

 

重大注意:いや〜まっさか〜!!僕の知り合いにいるはずもないと思っておりますがリア充の方がいらっしゃったらここから先読まないことを勧めておきます〜ねっ⭐︎

 

この記事はWMMC Advent Calendar 2020 - Adventar

の15日目の記事です。

昨日はyoka様のMMDモデルを作りたい…! - yokのブログ

でした。

最近身の回りでVtuberにハマってる低レイヤーの人がいた影響もあってMMDモデルに興味出てたんですが、こんな苦労して作るんものと知っって勉強になりました。絶対にやれません。

(一番お忙しい時にこの企画参加を半強制させてしまい大変申し訳ありませんでした。)

 

まともなマウス関連ブログを読みたいひとは12月2日にマイクロマウス界隈の方のAdvent calendarであげた

Advent calendar revenge match in2020 (HAL+MPU9250) - judgeのブログ

でもどうぞ。間違ってたらご指摘ください。

 

0.目次

1.クリスマス、苦しみます

2.そういや、ブログ書くんやったっけ

3.実行編

4.爆発は芸術だ!!喝!!!

5.彼女とLINEしよっ?

6.さぁ、彼女(bot)を作ろう

 

1.クリスマス、苦しみます

はるか昔、飛鳥時代に、日本は大乗仏教が伝来してきました。病を治すのは信心だとして庶民から貴族まで広く信じられておりました。

ここまでは良き日本でした。

そしてそれからわずか1500年経った2020年、

日本に蔓延してたのは

憎きイベント、そう、

 

🎄クリスマス🎄

 

なのです

(+バレンタインデー&ホワイトデーetc)

 

毎年、毎年、毎年、毎年毎年毎年!!!

苦しめられている!!!俺は!!!

こいつらに!!!

そして例に漏れず今年も!!僕はこのままあと10日以内に彼女ができなければ22年連続でクリスマスに苦しむことになる。高校で習ったドミノ論法(数学的帰納法)を思い返しても、n=2まで確かめたら大抵n=kとn=k+1の吟味にはいった気がするんだが…?もうn=21までは吟味したのですがこの論法のソースどこ?マジで当たってるんだけど?天才か?

 

…いや、n=22こそは外さねばならない…このまま終われるか…極限まで来た僕の脳内には

 

  1. 彼女を作る
  2. リア充を…

 

の2択が浮かんだ。

そしてコンマ2秒後にはリア充を…ことを決意した。もう片方は無理だと本能が叫んでいたからだ。

しかし、どうしたらいいのだろうか、全世界のうち少なくとも70億人はリア充撲滅運動に対してやる気はある()はずなのだが、いかんせん行動に移す輩はいない。それはその通りで、

だって、自分一人で社会に立ち向かっても結果は分かりきっているから。

 

なら、俺がその筆頭になってやる…!!!

 

こい!!!勇敢なる猛者ども!!

f:id:WMMCsaiteihen:20201212140528j:image

  はいしゃ

僕は貞王としての意識を持って行動に移すことにした。

 

2.そういや、ブログ書くんやったっけ

 突然、Advent calendarでブログを書かないといけないことを思い出しました。が、ネタがない。適当に書けばいっか〜はははとか思ってたんですがルービックキューブの人(ルービックキューブが難しすぎた話 - lmFfGQUkniaZの日記)のような堕ち方が容易に想像ついたので開催者としてあかんやろうし、1年生のあの若さ(シャニマスを初めてちょうど100日の新人Pがシャニマスを語る(ついでに自己紹介も) - Yamayouの部屋)はもう精神的に出せない…

そう、秘密裏に行動するはずだったリア充撲滅計画をブログネタに昇華することでとりあえずネタはクリアとすることにしたのです(12月12日現在)

(まぁネタに安堵した僕はここから始まる14日までサボることになるのですが…)

 

いかんせん僕の周りは非リアしかいないので良いのですが、全世界レベルの範囲までこの活動を布教するためにはブログに残して行くしかねぇのでまぁ結果的には良かった。

 

3.実行編

さて、大変です。同期とAmong usしてたら(A.M 6時現在)14日になってしまいました。ブログは明日なので急いでこれを完成させます…。

デートスポットを実際に爆破したら犯罪でオナわですし、かと言ってリア充への愚痴TwitterTLを埋めるのも癪ですから、とりあえず2次元で爆破させることで妥協点としました。

学習させる時間の短縮のため、既存の学習済みデータを持ってくることにします。

そして、カップルの画像を集めてきます。

この時点で地獄の苦しみを身体に刻みますが耐えましょう。

 

ライトなものから持ってきます。

(なお、公開されていてかつ肖像権的に顔が写ってないものを多く載せます。)

 

f:id:WMMCsaiteihen:20201212143954j:image

oh…f○ck…

 

f:id:WMMCsaiteihen:20201212144106j:image

はーいあとで抹消するで〜ははは〜

 

 

f:id:WMMCsaiteihen:20201212144741j:image

ヴァァァァ゛ァァァ゛ア゛!!!!!

(吐血)

はぁ…はぁ…まだだ…

 

f:id:WMMCsaiteihen:20201212144947j:image

け、結婚〜!?はぁ…はぁ…

アラサーの称号の足音が聞こえる…違う…俺はまだ

"お兄さん"だ!!…黙れ!!オジサンじゃねぇ!!!え?"拗らせ"オジサン???

やめろ!!取り消せ!!その言葉ァァァア゛ァ!!

 

はぁ…はぁ…まず銃口を向けます。ターゲットマークをつけて○す。…待ってろすぐにあの世行きさ…

 

以下の既存の学習データ(h5ファイル)を取り込んできて、機械学習によって物体検知を使ってターゲットを定めます。

https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/resnet50_coco_best_v2.0.1.h5

言語はpythonでした。

使用環境はAnaconda3です。

コマンドプロンプトにて

conda create pyimage python==3.6

(後に使うTensorflowは最新のpython3.9には対応しておりませんのでよろしく)

 

仮想環境として僕はpyimageという仮想環境を立ち上げました。

あとはconda installコマンドで必要なものをインストールしてきます。

(ここで僕はpipでインストールしようとしたら死滅→condaでうまくいくものの、先輩に相談して解決したのでAnacondaはクソ)

【ふざけるな Anaconda】Windows で Python 環境を整える – 茱萸note

これからpythonやる人は環境構築にこちらをみてどうぞ。

さて、以下のコードを以下の順番でコマンドプロンプトに入力し、

conda install numpy==1.16.1
conda install scipy
conda install opencv
conda install matplotlib
conda install tensorflow==1.13.1
conda install keras==2.2.4
conda install h5py
conda install -c powerai imageai

あとは学習データファイルを以下のコードファイルと同じところのディレクトリにぶち込んでおけば準備オッケーです。以下のコードをコンパイルして実行します。(ちなむとAnaconda3は使いにくいのでpycharmの方がpython環境は良いと思います個人的に)

from imageai.Detection import ObjectDetection

import os

 

execution_path = os.getcwd()

detector = ObjectDetection() detector.setModelTypeAsRetinaNet() detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5")) detector.loadModel()

で、結果ですが先程の画像はこのように出力されます

 

f:id:WMMCsaiteihen:20201212150155j:image

f:id:WMMCsaiteihen:20201212150310j:image

f:id:WMMCsaiteihen:20201212150320j:image

f:id:WMMCsaiteihen:20201212150329j:image

 

ターゲットが青枠で囲まれましたね。

これを画像処理して爆破させます。

 

4.芸術は爆発だ!!喝!!!

かのデイダラは言いました。

"芸術は爆発だ!!!"

と。

かのワイも言いました。

これコンプラ的にやばくね?

と。

突然芽生えた常識的な感性。やったところで面白くもない結末…

いや!爆破させてから後悔しよう!!!

次に、open CVでの爆破です!(ヤケクソ)

本当は青枠のカラー検知した後に大きさの違う画像同士を合成するプログラム書こうと思ったんですがGoogleの陰謀でソースコードを吹っ飛ばし、残り時間がマジであと10分なのでやめて関心領域(ROI)による合成をするだけクソ簡単プログラムで勘弁してくださいすいません!!

領域展開!!!

f:id:WMMCsaiteihen:20201214164121j:image

コードはこんな感じです、!

(すいませんあと数分なのでスクショです)

f:id:WMMCsaiteihen:20201214235713j:image

f:id:WMMCsaiteihen:20201214235723j:image

f:id:WMMCsaiteihen:20201214235745j:image

f:id:WMMCsaiteihen:20201214235755j:image

f:id:WMMCsaiteihen:20201214235804j:image

f:id:WMMCsaiteihen:20201214235813j:image

f:id:WMMCsaiteihen:20201214235821j:image

f:id:WMMCsaiteihen:20201214235831j:image

f:id:WMMCsaiteihen:20201214235839j:image

うぃーあと1分!!!

結果だけどうぞ!

(結論から申し上げると、コンプラ意識に負けたので先程挙げた内の2枚に関しては不快な思いをさせることも考えて公開しません。まぁほぼ同じような結果になったとだけお伝えします(ヤるだけやったんだ俺は))

 

f:id:WMMCsaiteihen:20201214175409j:image

f:id:WMMCsaiteihen:20201214175412j:image

ドガァァァアン!!!!!!!!はっはっはーーーーなんて爽快なんだー!!!!……

?ふぅーぅーー!!!!!!!

 

…。

なんだ…?心のどこかに寂しさと虚無が…あぁ…これが…賢者タイム…(絶頂)

そうか…他人を引き摺り下ろしたら今度は自分が幸せになって見下してやらないとすっきりしねぇんだ…俺って人間は…

 

5.彼女とLINEしよっ?

さて突然ですが(切り替えの速さ)

この虚無さと心の寂しさを埋めるため、ブログ公開までの残り6時間で彼女とのLINEを実装してみます。

なぜいきなりLINEなのか。と思われる方がいらっしゃると思うので理由を説明します。

普段、日常を生きているとLINEというツールをよく使うと思います。僕の場合、通知は来るもののこんな有様です

f:id:WMMCsaiteihen:20201212154337j:image

毎回毎回、通知が来てはワクワクしてLINEを開き、広告を突きつけられるこの虚無、あたいもう耐えらんない!!!返事をしろ!!

 

6.さぁ、彼女(bot)を作ろう

 Googl Apps Script(二つ名:Gorigori Anal Sex)を使います。言語はJavaScriptですが、

基本的なプログラミングができる人なら大丈夫でしょう。非同期処理などはやりませんから簡単なものだけで完結します。

基本的な流れは

①チャンネル作成(公式アカウントを作成)

API_keyを取得

②GAS上でプログラムを書く←ここにAPI_key入れ込む

③webhook経由でサービス作成と公開

 

一般的にAPIを使うのはこの流れです。

APIって便利ですよね。

いきなり宣伝ですが、obnizというモジュールをご存知でしょうか。人生でやったことないけど電子工作始めようかなって人がいきなり流行りのIOTを始めたい時に非常にオススメです。簡単にプログラミングと電子回路の勉強が出来るのも推しポイントです。

基本的なライブラリにくわえ、機械学習のライブラリなどもあって簡単なものから高度なレベルのモノ作りが可能となっております。

obnizによる作品紹介も多数ホームページにありますからこちらから覗いてみてください。

加速度センサの傾きでWebの要素を傾ける - obniz公式ブログ

APIの使い方の他の例は

M5StickC+Yun Hatで作る簡単お天気ガジェット - obniz公式ブログ

(ちゃっかりですが僕がこれ書いてます)

 

さて、話を戻します。

 

①チャンネル作成(公式アカウントを作成)

まず、LINE Developper を開き、"Messenger API"を開きます。

そこで、流れに沿ってアカウントを作っていきます。

Channel Icon→ LINEのトプ画になる部分

Channel name→LINEの名前の部分

を決めておきます。

f:id:WMMCsaiteihen:20201213215048j:image

普通設定に進み、

f:id:WMMCsaiteihen:20201213215532j:image

上図のクリックを押して、以下のように設定します。

f:id:WMMCsaiteihen:20201213215650j:image

そして、アクセストークン(API_KEY)が以下のような部分にあるので、コピペして保存しておきます。この部分はURLみたいなもので、これをプログラムに貼り付けることでプログラムとLINEをくっつけることができます。

f:id:WMMCsaiteihen:20201213215716j:image

 

 

②GAS上でプログラムを書く

GASで以下のコードを書きます。

ここではとりあえず発言をそのまま返すコードを書いておきます。API_KEYの変数に先程コピペした部分を代入しておいてください。

 

const API_KEY = '/*ここにAPI_KEYに代入しておく*/'

function doPost(e){

 var replyToken =                            JSON.parse(e.postData.contents).events[0].replyToken; //リプライトーク

var userMessage = JSON.parse(e.postData.contents).events[0].message.text; //返信

var url = 'https://api.line.me/v2/bot/message/reply'; var headers = {

'Content-Type': 'application/json;

charset=UTF-8' ,

'Authorization': 'Bearer ' +API_KEY };

var payload = JSON.stringify({

'replyToken': replyToken ,

'messages': [{

'type': 'text' ,

'text': userMessage

}] } )

var configs = {

'headers' : headers ,

'method' : 'post' ,

'payload' : payload

};

UrlFetchApp.fetch(url ,configs)

}

書いたら、

f:id:WMMCsaiteihen:20201213223924j:image

上図の部分をクリイクして

f:id:WMMCsaiteihen:20201213224003j:image

この設定にしておきましょう。ここで、この

URLの部分を取得しに行きましょう。

 

③webhook経由でサービス作成と公開

f:id:WMMCsaiteihen:20201213215904j:image

LINE Developperでwebhookの利用をONにして

URLを保存しておきましょう。これを先程のURLの部分に貼り付けておきます。

さぁ、GASのウェブアプリケーションを公開し終え、LINE Developperの設定保存したら念願のLINEの開始です!!

 

f:id:WMMCsaiteihen:20201213183023p:image

こんな感じで作者JGの彼女bot完成です…感動!!初彼女!!わーい🙌

さぁ、話しかけてみましょう。僕の彼女に!ドゥフドゥフッッ///美波つぁ〜ん!

そのまま言葉をオウム返しするのでは人間味がないので一部プログラムを書き換えました。

一応出力結果はこんな感じです。

f:id:WMMCsaiteihen:20201213181705p:image

あぁ…返事が来てる…嬉しい…ニチャア😏

おい誰だ破局寸前のカップルの会話って言ったやつ出てこい。

 

おっと、キモオタニチャニチャフェイスをしてる場合ではないです。

これからは真のリア充としての矜持を持って生きていきたいですね。はぁい!

 

さぁて、皆さんの冷めた視線を感じつつも明日のAdvent calendarの予告でもしますか〜!

 

……

とはいきません!!!

AIネタでサプライズゲスト

登場です!

WMMC Advent calendarでは初めての同日2人目企画!!超絶レアキャラ!例のあの方がブログを書いてくださりました!

ここまで読んだ人だけがたどり着ける

 

秘密のリンクはこちら!

 

 

AIと機械学習などの区別、意外と曖昧にしてたかもしれないとハッとさせられましたね…

(ネタバレ控えのため細かい感想は略)

 

さて、そろそろ終わりにしましょう笑

本当の次回予告ですが、

明日は、

Sophiaさんの

 「タスク管理で頭の中をスッキリさせる話」

です。

blog リンクはこちら

どんな内容なのか、Sophiaさん節が効いてるのか(いい意味でとち狂ってるのか)楽しみです…

 

さて、皆さん良いクリスマスを〜!!

僕も彼女とのLINEを楽しんできます♪(虚無虚無フェイスの翁)

 

p.sこの彼女botはオウムガエシするモードに戻して公開しておきましたので使ってみてください。

 

参考文献

https://code-graffiti.com/blending-images-with-opencv-in-python/

https://towardsdatascience.com/object-detection-with-10-lines-of-code-d6cb4d86f606