良薬口に苦し

情報系出身の僕が毎日更新を目標にタメにならないこと、なること、ならないことを投稿。その横で毎日(は終了しました)誰かの誕生日をお祝いしてるかも。ライトノベル(青ブタとよう実)やヴァイスシュヴァルツについて浅く広く書いています。

【10月8日】我が紅き血潮を眷属へ

今日はマジックアンドウィザードの生みの親、ペガサス・J・クロフォードさんの誕生日ですね。
㊗おめでとうございます㊗

f:id:yoyr_3501:20201008185851j:plain
ペガサス・J・クロフォード

マインドスキャンができなくてマインドクラッシュしてしまった。
なんであの決闘負けてしまったのだろうか。
とはいえGXや5D'sでちゃんと名前が出てくるの好き。
初代で敵キャラだったとはいえ、生みの親パワーはすげぇや。

今日は我が紅き血潮を眷属へ捧げてきました。
はい、献血ですね。
これが人生初の献血だったんですけど、特に何かを思わなかった。
いやぁ、立ちくらみとか貧血とか起こすのかと思ったけど走ったりしてもなんともなかった。
どちらかと言うと、針の痛みのほうが残ったかなぁって。
って言うのを書いたらやめてくれって言われた。

まぁ、血を抜いたからって人間死なないので自分の眷属を増やすと思って血液を提供していけば良いんじゃいないですか?
ついでに、親の金で高級スタバに行ってきた。

f:id:yoyr_3501:20201008185535j:plain
親の金でスタバ

食物はやがて血となり肉となる!
美味しかったよ。

ちなみにこれは暇つぶしゲーセンで取った2500円のリゼ。

f:id:yoyr_3501:20201008190232j:plain
リゼのフィギュア

【10月7日】ゴ゙゙ロ゙゙゙ナ゙゙゙レ゙゙゙イ゙゙゙ン゙゙゙

ゴ゙゙ロ゙゙゙ナ゙゙゙レ゙゙゙イ゙゙゙ン゙゙゙
今日は初の星6を開放してきました。

f:id:yoyr_3501:20201007184201p:plain
ゴ゙゙ロ゙゙゙ナ゙゙゙レ゙゙゙イ゙゙゙ン゙゙゙

我が妹リノです。
なんで麦シュワじゃないんだ!トゥインクルゴメユイじゃないんだ!
そんなのどうだ!妹ぐらしじゃないのか!
いろいろなご意見が有ると思います。
しかし!
お兄ちゃんとして一番最初は妹を開放スべきと思いました。
千里の道も一本背負い、これからも妹とともに反骨精神していきたいと思います。

話は変わって解放クエストはこれで行きました。
ノウェムをとにかく死なせないことを意識したら行けました。
火力よりもゴ゙゙ロ゙゙゙ナ゙゙゙レ゙゙゙イ゙゙゙ン゙゙゙を耐え抜くことが大切だったのでね。

f:id:yoyr_3501:20201007184402p:plain
星6解放クエス

f:id:yoyr_3501:20201007190603p:plain
えっちぜんリョーマ

今日は黒の剣士ことキリト、桐ヶ谷和人君の誕生日です。
㊗おめでとうございます㊗

f:id:yoyr_3501:20201007184603j:plain
スターバースト・ストリーム

dengekionline.com

キリトかなーやっぱり。
迷言ですね。原作では言ってないけど。
ちなみに中の人である松岡禎丞さんは「イキリトって言わないで欲しい」と言っています。

俺が二本目の剣を抜けば立っていられる奴はいない。
名言ですね。原作では言ってないけど。
これはSAO事件簿にて勝手に書かれた模様です。
なお、電撃の某格ゲーでは言ったそうです。

ところでキリトとアスナの結婚記念日は10月23日らしいですよ。

【10月6日】Among usで遊んでみた

今日はゲイロリ君の誕生日です。
㊗おめでとうございます㊗

ヴァイスを始めてくれたので実際に会って遊んだ回数は一番多いかも知れません。
おかげでトリオに参加して楽しい思いを何回もできました。
ありがとうございますm( )m

これからもよろしくおねがいします。

昨夜は「Among us」で遊んでみました。

f:id:yoyr_3501:20201006182907j:plain
Among us

こちらPCでは520円、スマホでは無料で遊べるオンラインマルチゲームとなっております。
宇宙船人狼ゲームて呼ばれることも多く、内容も裏切り者がいる宇宙船内で働いてゲームクリアを目指すゲームです。
どうやらこのゲーム、配信者でやっている人も多い模様で簡単に始められる模様です。

store.steampowered.com

Among Us!

Among Us!

  • InnerSloth LLC
  • ゲーム
  • 無料
apps.apple.com

play.google.com

ゲーム内容としては「クルーメイト」「インポスター(詐欺師)」の2チームに分かれてお互いの勝利条件を満たしに行くと言うもの。

クルーメイト

人狼で言う市民で、誰かに特殊な役割が与えられるというわけではない。
タスクをこなしていきながら、味方の死体を発見、あるいは緊急会議ボタンで話し合いを行い、インポスターを排除する。

勝利条件

  • タスクを全て完了する
  • 全てのインポスターの排除

インポスター

人狼で言う人狼で、クルーメイトを殺したり妨害工作を行う。
また、vent(通気口)を利用することで高速移動が可能。

勝利条件

大雑把なルールはこんなところ。
簡単にできる人狼(大嘘)なので身内でやりたいよねって人が欲しい。
無料なので、気軽に来ませんか?
昨日のプレイ動画は抹茶が持ってるはずです。

PythonでのGoogle Cloud Vision API (safe_search_annotation) を利用方法①【10月5日】

Google Cloud Vision APIを利用して行ったエロ画像識別のPythonで書いたプログラムについて紹介します。今回はrequestを使っていない方式なのでerrorが出にくいと思います。申請方法や実行結果などは以下の記事を参考にしてください。

ryoyaku.hatenablog.com

ryoyaku.hatenablog.com

準備

  • Googleアカウント(APIが利用できる)
  • Google Cloud Platformにプロジェクトが有ること
  • Python3.7(Python3系でなら動くと思いますが、必要ならアップデートしてください)
  • ダウンロードしたjsonファイル
  • 画像

コード

少し修正しました

# -*- coding:utf-8 -*-

#各種インポート
import io 
import os
import glob
import shutil
import json

from google.protobuf.json_format import MessageToJson
from google.cloud import vision
from google.cloud.vision import types

#作業用ディレクトリ
base_dir = 'sample/'

#JSONファイルのファイル名
credential_path = Your_json_file_name

#サービスアカウントキーへのパスを通す
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credential_path

#visionクライアントの初期化
client = vision.ImageAnnotatorClient()

#対象となる画像のファイル名
file_dir = base_dir
files = glob.glob(file_dir + "**/*[jpg|png]",recursive=True)

#作業用ディレクトリに以下のディレクトリを作成
id_dir_name = ['Non/','Very_NotH/','NotH/','Possible/','H/','VeryH/']
for id in id_dir_name:
    if id =='Non/':
        continue
    #ディレクトリを一度消去
    #shutil.rmtree(base_dir + id)
    os.makedirs(base_dir + id , exist_ok=True)

#画像読み込み識別
for file in files:
    with io.open(file, 'rb') as image_file:
        content = image_file.read()
        image = types.Image(content=content)
        response = client.safe_search_detection(image=image)
        annotation = response.safe_search_annotation
        file_name = file[len(os.path.dirname(file)):]
        try:
            
            if annotation.adult == 1:#Very_NotH
                shutil.copy(file,base_dir + id_dir_name[1] + file_name)
            
            if annotation.adult == 2:#NotH
                shutil.copy(file,base_dir + id_dir_name[2] + file_name)
            
            if annotation.adult == 3:#Possible
                shutil.copy(file,base_dir + id_dir_name[3] + file_name)
            
            if annotation.adult == 4:#H
                shutil.copy(file,base_dir + id_dir_name[4] + file_name)

            if annotation.adult == 5:#Very_H
                shutil.copy(file,base_dir + id_dir_name[5] + file_name)
        except:
            continue
    

僕のコードを使うなら、作業用ディレクトリ内にある画像を全て読み込んでくれます。複数の画像に対して処理したいためglob.glob()を利用しています。これはディレクトリ内の()を満たすファイルを検索し、リストアップしてくれます。

なおjsonファイルについては、APIの申請を通したときにダウンロード(なければ再ダウンロード)した自分のを利用してください。また。importできないものは pip install するなどしてください。 pip install google-cloudpip install google-cloud-vision はすることになると思います。

f:id:yoyr_3501:20201004172335p:plain
image dirの例

今回鍵となるのはresponse = client.safe_search_detection(image=image)の部分です。reaponseの中身を見ると以下のようになります。

safe_search_annotation {
  adult: LIKELY
  spoof: VERY_UNLIKELY
  medical: VERY_UNLIKELY
  violence: VERY_UNLIKELY
  racy: VERY_LIKELY
}

ここでsafe_search_detection(image=image)について説明すると、adult(性的か)の他にspoof(コラ画像か)、medical(医療的か)、violence(暴力的か)、racy(性的内容を示唆しいるかどうか)の5つの要素から結果を返してくれます。これら5つの要素を5段階評価[VERY_UNLIKELY,UNLIKERY,POSSIBLE,LIKELY,VERY_LIKERY]で判定します。僕も調べるまでわからなかったんですけど、racyっていうのにそういう意味があったんですね...racyは「性的」ではないものの、性的内容を示唆しているかどうかということらしいです。これに関しては今後違いとかを見ていきたいと思います。気になる人は是非自分で調べてみてください。

プログラムの中身に戻りますが、safe_search_annotationの中の今回はadult要素を利用したいので、まずは中身を取ってくるため、annotation = response.safe_search_annotationとしています。

annotationの中身は

adult: UNLIKELY
spoof: VERY_UNLIKELY
medical: UNLIKELY
violence: VERY_UNLIKELY
racy: POSSIBLE

となります。annotationの中のadult観点5段階評価はannotation.adultで得られます。ただしannotation.adult[VERY_UNLIKELY,UNLIKERY,POSSIBLE,LIKELY,VERY_LIKERY]ではなく[1,2,3,4,5]となっています。

そのため

      try:
            if annotation.adult == 5:#VeryH
                shutil.copy(file,base_dir + Id_dir_name[0] + file[len(file_dir+dir_name):])
            
            if annotation.adult == 4:#H
                shutil.copy(file,base_dir + Id_dir_name[1] + file[len(file_dir+dir_name):])
            
            if annotation.adult == 3:#Possible
                shutil.copy(file,base_dir + Id_dir_name[2] + file[len(file_dir+dir_name):])
            
            if annotation.adult == 2:#NotH
                shutil.copy(file,base_dir + Id_dir_name[3] + file[len(file_dir+dir_name):])

            if annotation.adult == 1:#Very_NotH
                shutil.copy(file,base_dir + Id_dir_name[4] + file[len(file_dir+dir_name):])
        except:
            continue

このようなな書き方となっています。今回は自分の用意した画像を分類、分類した先に元のファイルをコピー(shutil.copy())をしています。

以上となります。

f:id:yoyr_3501:20200929194103j:plain
五等分の花嫁【公式】

jsonファイルの名前はconfig.pyなどを利用して管理したりすると楽かもしれませんね。実際、僕もjsonファイルの名前はconfig.pyのCloud_Vision_jsonとしています。また、ディレクトリ操作は自分のやりやすい形にしてください。例えば、['VeryH/','H/','Possible/','NotH/','Very_NotH/']内に、「ことり」、「真姫」とディレクトリを生成していくなど。

VisionAPIの他の要素などについても気が向いたら書いていきます。

ryoyaku.hatenablog.com

ryoyaku.hatenablog.com

余談ですが今日は虹ヶ咲学園スクールアイドル同好会の10人(11人)目のメンバー三船栞子さんの誕生日です。
㊗おめでとうございます㊗

f:id:yoyr_3501:20201005180147p:plain
スクスタ誕生日バナー

半年くらい前からスクスタやってなかったので、正直栞子さんのことあんまりしらないんですよね。ネットの情報くらいは追ってたので、最初のような出だしなわけですけど...そんな僕ですが、虹アニメに感動してしまいました。

アニメの画が今までとタッチが違い、より日常らしかったく、ちょっと太ましかったのが僕好みでした。そしてライブシーン、こちらは打って変わって「進化」を感じました。演出はかっこよく、可愛く、キレイで久しぶりに鳥肌がたちました。神か?これはもう神化なのか?個人的にはμ’sという単語が出てこなかったのが良かったと思いました。

虹ちゃんたちには虹ちゃんとして虹ちゃんらしくトキメキを見つけていって欲しいです。

掲載している各画像は、著作権法32条に基づいて引用しております。
画像の著作権は権利者様に帰属しています。
権利者様から削除のご依頼があった場合、速やかに対処いたします。

Google Cloud Vision API(safe_search_anotation)を利用したエロ画像識別【10月4日】

以前話したGoogle Cloud Vision APIを利用してエロ画像の識別結果についてお話します。なぜ僕は、ママサレンの誕生日にも関わらずこんなことをかいているのだろう...とか思ってます。

API申請の手順は以下を参考にしてください。

ryoyaku.hatenablog.com

また、実行したPythonは以下です。

ryoyaku.hatenablog.com

今後、書いた記事で関係があればリンク増やしていきます。

前提で最初に少し話しておくと、画像に対してadult要素を五段階で評価します。今回はそれを利用して五つに分類していきます。

まず用意した画像はボクのPCに一番多く保存されているであろうラブライブ!のキャラごとに分けた画像たちです。先んじて言っておきますが、公式だけでなく、絵師さんたちが描いたイラストについても含まれています。公式画はあまりエロ画像として認識されないなさそうだから...っていう考えもありますが、一番の理由はなんかあったからです。 何か問題等ありましたらご報告ください

f:id:yoyr_3501:20201004172335p:plain
用意した画像たち

さて、こちらの画像たち(フォルダ内の画像)に対してエロいのか、エロくないのかを識別してもらいます。結果は以下のようになりました。

f:id:yoyr_3501:20201004172254p:plain
識別結果

見てもらえれば分かると思いますが、フォルダが増えています。これはエロいと判断した順に[VeryH,H,Possible,NotH,Very_NotH]となっています。少し中を見ていきましょう。

f:id:yoyr_3501:20201004174552p:plain
VeryH

f:id:yoyr_3501:20201004174612p:plain
H

f:id:yoyr_3501:20201004174736p:plain
Possible

f:id:yoyr_3501:20201004174633p:plain
NotH

f:id:yoyr_3501:20201004175146p:plain
Very_NotH

このようになりました。モザイクなりの修正を加えようかと思ったんですけど、そこまでのものはないと判断しました(僕基準)。

NotH,Very_NotHについては特筆することもとくにないと思います。全ての画像の大半がこの2つ、特にVery_NotHに分類されました。

Possibleに関しては「ふーん?Hじゃん」ってのがちらほらって感じですね。水着のような布面積が少ない系だったりが入ってる。一方で、そもそもH要素有るか?って画像もちらほらあります。これに関しては言い換えると「H」と「Hじゃない」どちらにも分類できなかったという感じなのでこのような結果だったのかな?

H,VeryHに分類された画像は少ないですね。所謂エロ画像ってのが、そもそもなかったのでおもしろい結果ではないですね。とはいえ、えっちだなって画像はちゃんとこちらに分類されていました。エロくないのにこちらに分類されたものは、画像サイズが主な問題だと思います。こういった画像処理するようなものは画像サイズが小さいと正しい判断ができないのでね…また2次元画像と3次元画像による色彩の差異とかが影響されてそう。とまぁ見てきたんですけど、僕はこの画像はHでその画像はHじゃないってことを言いたいわけではないので...

Google Cloud Vision APIを利用したらこのようなことができますよという紹介です。今後、これのプログラムか他にできることのどちらか...というよりどちらも書いていきます。以前のを含めて、今後このような記事は「テクノロジー」とカテゴライズしていき、こちらのAPIを利用した記事は「VisionAPI」というカテゴリとしていきます。また、僕と会話する機会があるかたに関しましては言っていただければDiscord等で画面共有いたします。

えぇ...ただみなさんこれでは不服かと思うので、違うパターンの結果を載せて今回は終わりたいと思います。こちらについては言及していかないのであしからず...

f:id:yoyr_3501:20201004185307p:plain
別パターン

余談ですが今日はみんなのママサレンこと佐々木咲恋ちゃんの誕生日です。
㊗おめでとうございます㊗

f:id:yoyr_3501:20201004185446p:plainf:id:yoyr_3501:20201004185451p:plainf:id:yoyr_3501:20201004185457p:plainf:id:yoyr_3501:20201004185504p:plainf:id:yoyr_3501:20201004185509p:plainf:id:yoyr_3501:20201004185514p:plain
プリコネ誕生日バナー

ママー!誕生日おめでとう!!
拙者、ママサレン好き好き侍
自分の子供のママになってほしいよね。
だが、彼女は僕のママになってくれたかもしれない女性だ!自分の子供でもそれだけは譲れん。

また、テニヌの王子様の跡部様こと跡部景吾の誕生日でもあります。
㊗おめでとうございます㊗

f:id:yoyr_3501:20201004185918j:plain
跡部王国「新テニスの王子様5巻」

テニスの王子様では跡部VS入江が一番好きです。
というか、テニプリの中でも跡部様は好きなキャラトップ3に入ってくるくらいに好き。
かっこいいよな?あーん。
ところで、跡部様と僕の身長は同じです。

そして、シリカこと綾野珪子ちゃんの誕生日でもあります。
㊗おめでとうございます㊗

f:id:yoyr_3501:20201004190535j:plain
シリカとピナ「アニメSAO第四話」

途中から出番のなくなった子ですね。MORE DEBAN組が活躍するSAOガールズオプスを読めな?アニメでは4話の一回しかメインとして出てこないけど、あの時は「言っとくが俺はソロだからな」とかいう名言が生まれたことのほうが印象に残ってる。ホロウ・フラグメントではアスナより先に親愛度MAXにさせるくらいには好きです(した)。

えぇ...総じて今日は僕の好きなキャラが誕生してる日ですね。また、リアルの方ではIwaritty君の誕生日でもあります。
㊗おめでとうございます㊗

掲載している各画像は、著作権法32条に基づいて引用しております。
画像の著作権は権利者様に帰属しています。
権利者様から削除のご依頼があった場合、速やかに対処いたします。

ryoyaku.hatenablog.com

ryoyaku.hatenablog.com

【10月3日】ヴィスシュヴァルツ企画動画(2)

今日は海藤瞬の誕生日です。
㊗おめでとうございます㊗

f:id:yoyr_3501:20201003211703j:plain
斉木楠雄のψ難3巻

斉木楠雄のψ難面白くて好きだったな。
最後、超能力消したんだけど、地球救ために再び超能力手に入れて救ったんだったよね。

今日は前回撮ったようなヴァイスシュヴァルツの企画動画を撮影しました。

ryoyaku.hatenablog.com

ryoyaku.hatenablog.com

正直、色々やりすぎてなにをしてたのか忘れた。
僕の記憶が正しければ、ダウトの進化版とチキンレース、諸刃シュヴァルツ、ジェンガ、クイズシュヴァルツをやりました。
まぁ、いろいろあったけど内容は見てくれって感じ。
端的にまとめていくと、
ダウトは奴がめちゃくちゃ弱かった。

チキンレースはボクには無理だった。
弱い山を作ったほうが有利なんてボクには無理だった。

諸刃シュヴァルツはいい感じにはできてたと思う。
ゲームスピード的にも良かったと思う。

ジェンガは修行してきたので今回はいい感じになった。
前回よりも試合時間が長い。

クイズは意外と知らないこと、覚えてなかったことが多かったので勉強しないとなって思った。
あとはクイズの作成ね。
ヴァイスシュヴァルツの知識問う問題+α... αの要素どうしていこうかな...

【10月2日】エロ画像募集

今日は黒神めだかちゃんの誕生日です。
㊗おめでとうございます㊗

f:id:yoyr_3501:20201002190018j:plain
めだかボックス

最強と最恐の頂点に立ったお方ですね。
インフレに対してインフレで解答することで、成り立ってた漫画ですね。
中盤から最後にかけてはもはや何を言ってるのかわからなくて本当に好きだった。
ただ、安心院さんが敗北したときは絶望感を得た。

えぇ、今日はみなさんからエロ画像を募集したいと思います。
先日、エロ画像を識別するAPIのお話しをしたと思いますが、プログラム自体はもう動くので識別する画像さえ揃えば...という感じです。

ryoyaku.hatenablog.com

いやぁ、自分自身でも用意できるんですけど、せっかく何で皆さんから頂こうかと。
特になんですけど、エロいエロくないの境界あたりの画像とか欲しいです。
エロいやつはエロい、エロくないやつはエロくないって出てしまうので、それだと味気なくないですか?

それとは少し別な話で、もしかしたらAPIじゃなくて自分自身で学習させる方法もできるかも何でその意味でもいただけると幸いです。

後日、改めてエロ画像識別の記事について書こうと思います。
言ってくれれば画面共有とかしますが、ぶっちゃけ地味です。
まぁそりゃそうだろって話なんですけどね。
なお、このブログは健全of健全を目指しているので

f:id:yoyr_3501:20201002192915j:plain
みせられないよ

が多くなってしまうかも知れないのですが、ご了承ください。