現実世界における好感度メータの実現に向けて(前編)

Table of Contents

1 コンセプト

近年,日本では少子化が大きな社会問題となっていますがその背景の一つとして若者の恋愛離れ,草食化が上げられます. しかし若者が現実世界での恋愛から離れる一方,仮想世界での恋愛を楽しむ恋愛シミュレーションゲームが売上をのばしています.

このようなゲームでは攻略対象となる女性キャラクターがプレイヤーキャラクターに対して抱いている感情が全て数値化され確認できるようになっている作品が多くなっています. 例えば恋愛シミュレーションゲームの金字塔であるときめきメモリアルシリーズではいわゆる情報キャラに電話を掛けることで各攻略対象のキャラクターがプレイヤーキャラクターに対して抱いている好感度を数値として知ることができるシステムになっています. これによってプレイヤーは特定のキャラクターに対して戦略的にアプローチを行うことができるのです.

したがってゲームと同様に現実世界の恋愛においても相手が抱いている好感度を数値化しリアルタイムに把握することができればディジタルネイティブ世代の若者の恋愛を後押しし,少子高齢化に歯止めを掛けることができるのでは無いかと考えました.

2 提案手法 その1

今回のアイデアは10代後半から20代前半くらいの若者をターゲットとしています. この世代には小学生のような純粋な心は無く,かといってまだ結婚や家庭について真剣に考えていないため恋愛を決定する主な要素は性欲であると言えます1. したがって交流を行っているときの相手の性欲(どれくらいムラムラしているのか)がわかればそこから好感度と相関性を持つパラメータが得られるのでは無いかと考えました.

今回は各種生体データのなかでも心理的状態による影響が大きく,かつ簡易かつ非侵襲的に測定が行える脈拍データを用いた性欲の推定を検討しました.

3 脈拍データの収集

今回は被験者2脈拍センサを装着してもらい

  • 平常時 : センサ装着後普段通りに生活してもらいデータを取得
  • 性的興奮時 : 被験者にお気に入りのエロ動画を鑑賞してもらいデータを取得
  • 性的行為中 : そのまま自慰行為を行ってもらいデータを取得
  • 性的行為後 : 自慰行為終了後にデータを取得

の4条件の脈拍データを取得しました. 得られたデータを以下に示します3

sp.png

最初に実験に協力してくれたA君には申し訳ないですが性的行為中の測定は倫理的に問題があるのではないかという指摘があったためこれ以降は平常時と性的興奮時の2パターンのみに絞ってデータを集めることにしました.

4 分類器の実装

周囲のご学友との交渉を進めた結果,最終的にA君を含め全9名から平常時(label: 0)および性的興奮状態(label: 1)における脈拍のデータを収集することができました.

sample.png

得られたデータを見るかぎり多少汚い部分もありますがSVN等の単純な分類器を用いることで平常時と性的興奮状態をある程度判別できるのでは無いかと考えました. が,昨今のAIブームや分類器をショボいマイコン(M5StickCを使いました)に組込むことを見越して4ニューラルネットワークを利用することとしました(とはいえ詳しいことはよくわからんのでMATLABのDeep Learning ToolBoxに丸投げです).

作成した分類モデルはそのままMATLAB Coderに投げてC言語のコードを吐かせます. codegen/lib以下に作成した関数名のフォルダが生成されますがこれをzipで固めれば(tmwtypes.hがいないのでもってくる必要がありますが)Arduino IDEにぶちこんでマイコンで走らせることができます. ということで作成したArduinoライブラリがこちら(再頒布等はご遠慮ください).

で,作成したM5StickC向けのプログラムがこちらです.

extern "C" {
  #include <sNN.h>
}

#include <M5StickC.h>

#define DELIMITCODE  0x0a       // Delimit Code 
int r1 = 0, r2 = 0;
void setup() {
  M5.begin();
  M5.Lcd.setRotation(1);
  Serial2.begin(19200, SERIAL_8N1, 0, 26);         // RX=16   TX=17
  Serial2.print("@MD10");
  Serial2.write(0x0a);
  pinMode(10, OUTPUT);
}

void loop() {
  String   strInput;
  double h;
  if(Serial2.available() > 0){
      strInput = Serial2.readStringUntil(DELIMITCODE);
      if(strInput[0] == '#' && strInput[1] != '-'){
	strInput.remove(0, 1);
	r1 = r2;
	r2 = strInput.toInt();
	M5.Lcd.fillScreen(BLACK);
	M5.Lcd.setCursor(0, 0);
	h = sNN(r1, r2);
	M5.Lcd.printf("%d, %d\n\n%f", r1, r2, h);
	digitalWrite(10, h<0.5);
      }
  }
}

このプログラムを用いて再度実験を行ったところTwitterでえっちな画像が流れてきたタイミングで興奮状態が検出されたのである程度は妥当性がありそうだと言えます. しかし別にえっちな気分でなくても時々反応するし元々の実験環境からして微妙だということで残念ながらこの研究はお蔵入りとなってしまったのでした…

後編につづく

Footnotes:

1

あくまでも筆者のド偏見です.

2

自ら進んで実験台になってくれたA君に感謝です.

3

ローレンツプロットという脈拍を評価する際によく用いられる表現方法です.

4

実装方法によってもかなり違うと思うし詳しいことはわからないのですが雑魚い環境に組込む場合SVNよりNN分類器のほうが(計算コストとかなんか的に)有利だと思います.

トップページへ