「対黒バドレックス最終兵器 -ヤトヤトン- 」というタイトルになるはずだった

お疲れ様です。

100本ノックと題して、ヤトヤトン入りヤーティで100戦やったので結果をまとめました。
特に何かわかったことがあるわけではないので、お好きなところを適当にご覧下さい↓

使用したヤーティ

ポケモン 持ち物 テラス
ベトベトン たつじんのおび ステラ ダストシュート はたきおとす ドレインパンチ→バークアウト テラバースト
キュレム(ホワイト) こだわりメガネ フェアリー りゅうせいぐん ふぶき クロスフレイム フリーズドライ
ペリッパー しんぴのしずく みず→フェアリー ハイドロポンプ ぼうふう ふぶき とんぼがえり
ロトム(ヒート) もくたん→ゴツメ でんき→フェアリー オーバーヒート かみなり ボルトチェンジ シャドーボール
ドリュウズ いのちのたま くさ→みず じしん アイアンヘッド かわらわり テラバースト→いわなだれ
ヘイラッシャ こだわりハチマキ ドラゴン ウェーブタックル じしん しねんのずつき ボディプレス

※"→"は後半(50戦~)からの変更

成績

48勝52敗

※だいぶ下がった (21495→38383)

選出

自分
ポケモン 選出回数 勝数 先発回数 選出率 勝率 先発率
キュレム(ホワイト) 90 44 63 0.90 0.49 0.70
ヘイラッシャ 69 35 1 0.69 0.51 0.01
ドリュウズ 65 33 18 0.65 0.51 0.28
ベトベトン(アローラ) 33 16 2 0.33 0.48 0.06
ロトム(ヒート) 25 7 3 0.25 0.28 0.12
ペリッパー 18 9 13 0.18 0.50 0.72
  • やっぱり禁伝は頼りになる!(勝てているわけではない)
  • Hロトムは、選出回数少ないし、勝ててないしで入れ替えるべきだったと思われる。
相手
ポケモン 遭遇回数 被選出回数 勝数 被選出勝ち 先発回数 被選出率 勝率 被選出時勝率 先発率
ハバタクカミ 40 15 21 10 6 0.38 0.53 0.67 0.40
カイリュー 31 10 18 5 2 0.32 0.58 0.50 0.20
パオジアン 30 7 16 4 2 0.23 0.53 0.57 0.29
ミライドン 27 26 15 15 12 0.96 0.56 0.58 0.46
ウーラオス(連撃) 24 9 10 3 5 0.38 0.42 0.33 0.56
ディンルー 21 8 11 5 4 0.38 0.52 0.63 0.50
ガチグマ(アカツキ) 18 10 8 6 2 0.56 0.44 0.60 0.20
ランドロス(霊獣) 17 5 10 3 3 0.29 0.59 0.60 0.60
ヘイラッシャ 17 1 9 1 0 0.06 0.53 1.00 0.00
バドレックス(こくば) 16 10 8 6 3 0.63 0.50 0.60 0.30
キラフロル 13 5 8 1 3 0.38 0.62 0.20 0.60
テツノツツミ 12 9 5 4 5 0.75 0.42 0.44 0.56
オーガポン(かまどのめん) 12 4 5 2 0 0.33 0.42 0.50 0.00
ミミッキュ 11 4 6 2 1 0.36 0.55 0.50 0.25
ゴリランダー 10 2 4 2 0 0.20 0.40 1.00 0.00
オオニューラ 10 6 5 2 2 0.60 0.50 0.33 0.33
ザシアン(けんのおう) 10 6 6 4 0 0.60 0.60 0.67 0.00
  • ハバタクカミ:よく見たが選出されることは少なかったし、もし選出されても対応に苦戦しなかった。
  • ミライドン:よく見るしほぼ必ず選出されるため対策必須。ドリュウズでは安定して勝てなかった。
  • 水ウーラオス:対処に困った。選出されるとヘイラッシャが過労死してしまう。
  • 黒バドレックス:好きなようにはさせなかった。両刀ベトンで安定して対応できていた。
必然力
ポケモン 技名 実測命中率(%)
ベトベトン ダストシュート 86.7
バークアウト 100
キュレム(ホワイト) ふぶき 63.5
りゅうせいぐん 91.4
ペリッパー ハイドロポンプ 100
ぼうふう 100
ふぶき 100
ロトム(ヒート) オーバーヒート 91.7
かみなり 85.7
ドリュウズ いわなだれ 60.0
ヘイラッシャ しねんのずつき 88.5

ふぶき打つとき、必然力がなくなるらしい…
Oh, my Yarty God!

サイクル戦指標

  • 平均与ダメ:場に出ているポケモンが攻撃したとき、相手に与えたダメージ量の平均。高い方がよい。
  • 平均被ダメ:場に出ているとき or 交代際で、相手からの攻撃で受けたダメージ量の平均。低い方がよい。
  • 討伐した数:場に出ているポケモンが攻撃し、相手のポケモンを瀕死にした数。多い方がよい。
  • 討伐された数:場に出ているとき or 交代際で、相手から受けた攻撃で瀕死になった数。少ない方がよい。
  • 一撃数:一撃以外ありえないwwwをした数。もちろん多い方がよい。
  • 討伐率:討伐した数を選出回数で割った値。選出したら、平均何体持っていけるか?がわかる。高い方がよい。
  • 被討伐率:討伐された数を選出回数で割った値。低い方がよい。
  • 一撃率:一撃数を討伐した数で割った値。高い方がよい。
ポケモン 選出回数 平均与ダメ(%) 平均被ダメ(%) 討伐した数 討伐された数 一撃数 討伐率 被討伐率 一撃率
キュレム(ホワイト) 90 50.19 28.26 97 43 51 1.08 0.48 0.53
ヘイラッシャ 69 35.20 24.17 31 33 6 0.45 0.48 0.19
ドリュウズ 65 49.96 31.94 34 45 10 0.52 0.69 0.29
ベトベトン(アローラ) 33 36.05 21.79 15 19 5 0.45 0.58 0.33
ロトム(ヒート) 25 26.38 31.37 7 16 1 0.28 0.64 0.14
ペリッパー 18 55.82 37.61 12 13 7 0.67 0.72 0.58

どの程度の数字が良いとされるのかわからない・・・

  • 平均与ダメは確2が取れるよう、50%以上が理想?
  • 平均被ダメは確3以下にしないといけないので50%未満であるべき!でも実測値は余裕で下回っているから、実際のラインはもっと下なのかな?
  • 討伐率はサイクル戦という性質上、1.0以上であるべき!今回はキュレムのみという結果になったので、わかりやすい境界になりうるかも。
  • 被討伐率は討伐率に比べて、1試合に最高でも1しか増えない、かつ降参したときにカウントされないので指標として使えなさそう。
  • 一撃率は役割論理という戦法も加味して重要な指標だと思われる。ペリッパーが高いのが興味深い。サンプルが少ないから上振れているだけか?

以下可視化

与ダメ・被ダメのグラフ


討伐率・被討伐率のグラフ


敗因分析

負けたパーティにいたポケモン

※多いので遭遇回数が5以上のみ

ポケモン 遭遇回数 被選出回数 先発回数 被選出率 先発率
ハバタクカミ 19 5 2 0.26 0.40
ウーラオス(連撃) 14 6 3 0.43 0.50
パオジアン 14 3 2 0.21 0.67
カイリュー 13 5 1 0.38 0.20
ミライドン 12 11 8 0.92 0.73
ガチグマ(アカツキ) 10 4 1 0.40 0.25
ディンルー 10 3 1 0.30 0.33
バドレックス(こくば) 8 4 2 0.50 0.50
ヘイラッシャ 8 0 0 0.00 0.0
テツノツツミ 7 5 3 0.71 0.60
ハッサム 7 2 0 0.29 0.00
オーガポン(かまどのめん) 7 2 0 0.29 0.00
ランドロス(霊獣) 7 2 1 0.29 0.50
カバルドン 6 4 2 0.67 0.50
ゴリランダー 6 0 0 0.00 0.0
ブリジュラス 5 2 0 0.40 0.00
ミミッキュ 5 2 1 0.40 0.50
キラフロル 5 4 2 0.80 0.50
オオニューラ 5 4 1 0.80 0.25

対ミライドンの安定性が重要。
ツツミもよくない数値が出ているが、キュレムで楽に対処できるので周りのポケモンが辛いことがわかる。

負けたときの選出組み合わせ

選出が3体すべて割れなかったときは、"-"で仮埋めしている

  • 3体組み合わせ

※重複する組み合わせはほぼなかった

組み合わせ 回数
- ウーラオス(連撃) ハッサム 2
ガチグマ(アカツキ) ザシアン(けんのおう) ハバタクカミ 2
  • 2体組み合わせ

※あんまりなかった

組み合わせ 回数
オオニューラ ミライドン 3
- ルナアーラ 3
ウーラオス(連撃) ミライドン 3
テツノツツミ ミライドン 2
カバルドン ミライドン 2
カイリュー ディンルー 2
キラフロル バドレックス(こくば) 2
- バドレックス(はくば) 2
- ウーラオス(連撃) 2
- ハッサム 2
ウーラオス(連撃) ハッサム 2
- - 2
- イーユイ 2
テツノツツミの周りのポケモン

ツツミと一緒に入れられているポケモンを抽出した。

ポケモン 遭遇回数 被選出回数 勝数 被選出勝ち 先発回数 被選出率 勝率 被選出時勝率 先発率
ミライドン 7 7 3 3 5 1.00 0.43 0.43 0.71
ランドロス(霊獣) 4 2 2 1 0 0.50 0.50 0.50 0.00
パオジアン 3 0 2 0 0 0.00 0.67 - 0.00
ディンルー 3 1 1 1 0 0.33 0.33 1.00 0.00
オオニューラ 3 2 1 0 1 0.67 0.33 0.00 0.50
アーマーガア 2 1 1 1 0 0.50 0.50 1.00 0.00
ウーラオス(連撃) 2 0 1 0 0 0.00 0.50 - 0.00
カイリュー 2 0 1 0 0 0.00 0.50 - 0.00
カバルドン 2 1 1 0 0 0.50 0.50 0.00 0.00
ラウドボーン 2 0 0 0 0 0.00 0.00 - 0.00
ハバタクカミ 2 0 1 0 0 0.00 0.50 - 0.00
ムゲンダイナ 2 2 1 1 1 1.00 0.50 0.50 0.50
ザシアン(けんのおう) 2 1 1 1 0 0.50 0.50 1.00 0.00

結局ミライドンに安定して勝てていないだけでは?

ヤトヤトン考察

対黒バドレックス性能

ベトベトンと黒バドの攻守のみ集計

ポケモン 被選出回数 勝数 平均与ダメ 平均被ダメ 討伐した数 討伐された数 一撃数 討伐率 被討伐率 一撃率
ベトベトン(アローラ) 10 6 41.95 16.04 4 2 2 0.40 0.20 0.50
  • 一応10回やって、6回勝っているので勝ち越しはしている。
  • サンプルが少ないのと、ほかの黒バド対策ヤケモンの指標を比較しないとこの数値が良いのかどうかは議論できない。
  • みがわり型の対策で入れた、バークアウトで2回勝ちを拾った。

終わりに

細かい数字まで記録したものの、結論出ずに終わりました。
今回使っていたヤーティに落第生が多すぎたのでそもそも参考にならない説がありますが、他のヤーティと比べることで今後何か知見を得られるかもしれません。
あと、ミライドン対策はしっかりしておきたいですが誰で対策すればいいのでしょうか?
カプ・ブルル助けて!


以上
他考察余地があればコメントください。

役割論理式100本ノック - 前半反省会 -

50戦こなしたので反省会です。

使っているヤーティ

ポケモン 持ち物 テラス
ベトベトン たつじんのおび ステラ ダストシュート はたきおとす ドレインパンチ テラバースト
キュレム(ホワイト) こだわりメガネ フェアリー りゅうせいぐん ふぶき クロスフレイム フリーズドライ
ペリッパー しんぴのしずく みず ハイドロポンプ ぼうふう ふぶき とんぼがえり
ロトム(ヒート) もくたん でんき オーバーヒート かみなり ボルトチェンジ シャドーボール
ドリュウズ いのちのたま くさ じしん アイアンヘッド かわらわり テラバースト
ヘイラッシャ こだわりハチマキ ドラゴン ウェーブタックル じしん しねんのずつき ボディプレス

途中結果

成績

25勝25敗

※ほぼ変わってない (26878→26051)

自分のパーティ
ポケモン 被選出回数 勝数 先発回数 被選出率 被選出時勝率 先発率
キュレム(ホワイト) 43 22 31 0.86 0.51 0.72
ヘイラッシャ 34 18 0 0.68 0.53 0.00
ドリュウズ 33 18 9 0.66 0.55 0.27
ロトム(ヒート) 14 5 1 0.28 0.36 0.07
ペリッパー 13 6 9 0.26 0.46 0.69
ベトベトン(アローラ) 13 6 0 0.26 0.46 0.00
被選出
ポケモン 遭遇回数 被選出回数 勝数 被選出勝ち 先発回数 被選出率 勝率 被選出時勝率 先発率
ハバタクカミ 18 8 11 4 3 0.44 0.61 0.50 0.38
パオジアン 16 5 9 2 2 0.31 0.56 0.40 0.40
カイリュー 12 4 8 2 2 0.33 0.67 0.50 0.50
ガチグマ(アカツキ) 10 7 5 4 2 0.70 0.50 0.57 0.29
ヘイラッシャ 9 1 5 1 0 0.11 0.56 1.00 0.00
ザシアン(けんのおう) 9 5 5 3 0 0.56 0.56 0.60 0.00
バドレックス(こくば) 9 6 4 3 3 0.67 0.44 0.50 0.50
テツノツツミ 8 7 3 3 4 0.88 0.38 0.43 0.57
ディンルー 8 4 4 2 1 0.50 0.50 0.50 0.25
ミライドン 8 8 4 4 4 1.00 0.50 0.50 0.50
ゴリランダー 7 1 2 1 0 0.14 0.29 1.00 0.00
ランドロス(霊獣) 7 1 4 1 0 0.14 0.57 1.00 0.00
オーガポン(かまどのめん) 6 2 2 1 0 0.33 0.33 0.50 0.00
ミミッキュ 6 1 3 0 1 0.17 0.50 0.00 1.00
キラフロル 6 2 4 1 1 0.33 0.67 0.50 0.50
オオニューラ 5 3 3 2 1 0.60 0.60 0.67 0.33
カバルドン 5 1 2 0 0 0.20 0.40 0.00 0.00
ドオー 5 1 3 1 0 0.20 0.60 1.00 0.00
ウーラオス(連撃) 5 1 3 1 1 0.20 0.60 1.00 1.00
ゴチルゼル 5 2 1 0 0 0.40 0.20 0.00 0.00

※上位20のみ

禁止伝説のみ抽出
ポケモン 遭遇回数 被選出回数 勝数 被選出勝ち 先発回数 被選出率 勝率 被選出時勝率 先発率
ザシアン(けんのおう) 9 5 5 3 0 0.56 0.56 0.60 0.00
バドレックス(こくば) 9 6 4 3 3 0.67 0.44 0.50 0.50
ミライドン 8 8 4 4 4 1.00 0.50 0.50 0.50
ムゲンダイナ 3 3 2 2 1 1.00 0.67 0.67 0.33
コライドン 3 3 2 2 1 1.00 0.67 0.67 0.33
カイオーガ 2 1 1 1 1 0.50 0.50 1.00 1.00
テラパゴス(ノーマル) 2 2 0 0 0 1.00 0.00 0.00 0.00
ホウオウ 2 0 2 0 0 0.00 1.00 0.00 0.00
バドレックス(はくば) 2 2 1 1 0 1.00 0.50 0.50 0.00
ネクロズマ(日食) 2 2 2 2 0 1.00 1.00 1.00 0.00
キュレム(ホワイト) 1 1 0 0 1 1.00 0.00 0.00 1.00
グラードン 1 0 1 0 0 0.00 1.00 0.00 0.00
ギラティナ(オリジン) 1 1 0 0 0 1.00 0.00 0.00 0.00
ソルガレオ 1 1 0 0 0 1.00 0.00 0.00 0.00
ザシアン(通常) 1 1 0 0 0 1.00 0.00 0.00 0.00
ルギア 1 1 1 1 0 1.00 1.00 1.00 0.00
ルナアーラ 1 1 0 0 0 1.00 0.00 0.00 0.00

考察

ロトム(ヒート)が仕事していない

選出回数が思ったよりも低く、選出しても勝てない試合が多い
→役割対象が整理できていないかも
 →当初の想定だと、ホウオウとザシアン(地面テラスのやつ)
  →ホウオウには2回しか当たっていない
  →ザシアンはヘイラッシャで対応するようにしている
 →ザシアン入りに積極的に出してもよいかもしれない
  →特にゴチルゼルが入っているパーティにはやりやすいかも?
  →対応範囲を広げるためにパオジアンを対象に含めてもよいかも?
   →タスキつぶしのゴツメ+フェアリーテラスへ変更

ヤトヤトンVSバドレックス(こくば)

バドレックス側は交代されることは少ない?

交代した? 技名 交代先 回数
しなかった みがわり 4
アストラルビット 1
テラバ(格闘) 1
テラバ(水) 1
ドレインキッス 1
した メタモン 1
キラフロル 1

→みがわり型の対策がほしい
 →両刀にしてバークアウトにする?
 →ドレパンの有用性
  →パオジアンとガチグマ(アカツキ)、ブリジュラスにしか打ってない
   →パオジアンは役割関係がない
   →ガチグマは対面でも打ち負けている
   →ブリジュラスは起点にされるだけ

テツノツツミ入りのパーティに勝てていない

テツノツツミ自体はしんどくない
キュレム(ホワイト)で安全に対処できている

ミライドンとの同時選出時の勝率が低い

ポケモン 遭遇回数 被選出回数 勝数 被選出勝ち 先発回数 被選出率 勝率 被選出時勝率 先発率
ミライドン 4 4 1 1 3 1.00 0.25 0.25 0.75
パオジアン 3 0 2 0 0 0.00 0.67 - -
ザシアン(けんのおう) 2 1 1 1 0 0.50 0.50 1.00 0.00
ムゲンダイナ 2 2 1 1 1 1.00 0.50 0.50 0.50
ランドロス(霊獣) 2 1 1 1 0 0.50 0.50 1.00 0.00

 →結局ミライドンの対処がうまくできていない
 →ドリュウズでカバーできていないか?

ドリュウズVSミライドン

対面では交代せず、テラスで対応しているっぽい?

交代した? 技名 交代先 回数
しなかった りゅうのはどう 1
テラバ(素) 2
テラバ(氷) 3
テラバ(地面) 2
テラバ(水) 1
した テツノコウベ 2
カバルドン 1

テラスタイプは、氷、地面、水
→いずれにも弱点つくのは難しい
 →全部に対応するなら「砂の力」+「ハチマキ」なら地震で安定取れる ※ただしテラスで弱点隠すこと
キュレム(ホワイト)へいったん引くのはありかも?
 →交代先の地面透かしや物理受けに有利対面とれる
 →テラバで突っ込んできても、半分削れない
  →さすがに消極的か?

後半戦に向けての変更内容

ロトム(ヒート)
 →持ち物をゴツメ、テラスをフェアリーへ変更
ベトベトン(アローラ)
 →ドレインパンチout、バークアウトin
ドリュウズ
 →テラスを水へ変更
ペリッパー
 →テラスをフェアリーへ変更

以上、後半戦もがんばります。

ランクマでAボタン連打して得たもの3つ

先月Aボタン連打してるだけでマスターボール級まで上りました。
そのときに得たものが3つありましたのでブログに残しておこうと思います。
データ配布もあるよ!

 

①ランクマ自動化の方針

画像認識を使ってひたすらAボタンを押して対戦を進めるプログラムを作成しました。
ただ、ネット繋げてランクマでやると規約違反になる可能性があるので実際には使用するときは注意が必要です。
※動作確認はローカル通信で行いました。
どうやれば自動でこなせるか?を軽くですが書いておきます。

「NintendoSwitch 自動化」などでググればAボタンを押すだけのプログラム自体は簡単に組めると思います。
しかし実際に対戦を進めると十字キーの入力が必要なケースが存在し、スムーズに進めるためには少し工夫が必要です。
そこで十字キーの入力が必要なケースを画像認識で判定し、適切なボタン入力を行って対戦を進めるようにしました。
たとえば、、、

場に出ていた自分のポケモンが倒された後、次に繰り出すポケモンを選択する場面です。
ここでAボタンをずっと押していても先に進めません。
※時間切れで強制選択はされます。

十字キー下を一度押してカーソルを2番目のポケモンに移動し、そのあとAボタンを押して選択を確定させる必要があります。
この画面を画像認識で判定して十字キーを入力するようにします。
判定方法はいくつかありますが、私の場合は上端真ん中「たたかえない」を目印としました。

上の画像が含まれるシーンが出てきた場合は、「十字キー下」⇒「Aボタン」⇒「Aボタン」の順に入力するようにプログラムを組みました。

というような感じで、Aボタン以外の入力が必要な場面を画像認識で判定し、適切なコマンドを決め打ちで入力するプログラムを作ることで自動化することができました。
規約違反になりそうなのでソフトの配布はしません・・・

②対戦データ

200戦分の対戦データをポチポチ入力してcsv形式でまとめました。
こちらは配布しておきますので、煮るなり焼くなり好きにしてください。

https://drive.google.com/drive/folders/1o17Q1O1heUHoeuMITTxtTqFB39rBCCP3?usp=sharing


データを集めただけだと味気ないのでちょっと解析してみようと思います。

  • 被選出率(遭遇回数10回以上に限定)

カイオーガにやられてた印象はあるので、なんとなくの感覚と合ってるのかな・・・?

今回選出だけでなく技の与ダメ、被ダメも記録している(アピールポイント!)のでそちらもなんか解析してみようと思います。

  • 与ダメ率


※倒した時の与ダメ率は抜いてます。

ダイマックスほう」はムゲンダイナ、「じゃれつく」はザシアンが使った技です。
ダイマックスほう」は、一撃で倒した数は多いのですが、フェアリータイプには無効化されるので、平均化すると伸びないですね。

「じゃれつく」は無効化タイプがないですが、技外しとダイマックス化した相手に対してはダメージ量が伸びないので同じような値に落ち着いたようですね。

今回は1体につき1つしか技を持っていなかったので、対面しているポケモンによって技を切り替えることはできませんでしたが、まじめにやったときに平均値がどれだけ上昇するのか調べてみるのは面白そうです。

 

こんな感じでとりあえずまとめましたが、解析に必要な情報がそろっているかどうかはわかりません。
最終的に野球のセイバーメトリクスみたいなものを作れるといいなーと漠然と思っています。
誰か考えてください。

 

③画像認識のための素材

①のランクマ自動化用の画像に加えて、②のデータ入力の自動化ができるかもしれない画像も集めました。
とりあえずで遊んでみた結果が先日のブログの内容です。

yaliyalice.hatenablog.com

まとめ

ランクマでAボタンを連打することによって、3つ得たものがありました。

①ランクマ自動化
 →だいたい自動化できたはず

②200戦分の対戦データ
 →セイバーメトリクスみたいなのを作りたい

③画像認識のための素材

 →対面画像で遊んでみました

ポケモンの画像認識で遊んでみた

先月ランクマのスクリーンショットがいっぱい手に入ったので画像認識で遊んでみました。

遊び道具

ポケモン剣盾

 →ランクマのスクリーンショットをたくさん撮りました。

Teachable Machine

Googleが提供している機械学習を行えるサービス。
 なんとノーコードで機械学習ができちゃいます。

機械学習してみる

ランクマで取ったスクリーンショットから相手が今何のポケモンを場に出しているのか?を推定したいと思います。

使用するデータ

↓こんな感じの相手と対面している画像を何枚か用意しました。


学習する

なんとなく対面画像が多そうなポケモンとして「ザシアン」「バドレックス」「カイオーガ」「ネクロズマ(日食)」、この4体を選びました。
それぞれの対面画像を「画像サンプル」として「Teachable Machine」読み込ませました。
適当にフォルダを漁って収集したので、サンプル数は適当です。

読み込ませるとこんな感じ↓


学習の結果

学習したモデルを使って画像を判定してみます。
学習時と同じように画像を読み込ませると・・・

イケてるやん!!

 

他のポケモンも試してみます。

いい感じに認識できていますね。
サンプル数少ないですし、右半分だけになるようにトリミングして認識させないと不要な情報が多いかなと懸念していましたが、大丈夫そうですね。
もう少し試してみましょう。

ん?

バドレックス?いかつい黒馬ですね。黒くもないし。

 

あっ!たまたまうまくいっただけみたいでした。
結構誤検出しますね。

学習結果で遊んでみる

とりあえず学習できたので(誤検出は置いといて)色々遊んでみましょう。

対面からずれた角度

対面からずれた角度から撮影したものを認識させてみました。
うまく認識してくれるでしょうか?

なかなか難しいようです。

 

ダイマックス

ちなみにダイマックスしたときの画像はどうでしょうか?

まだいけそうな気がしますがどうでしょう?

 

天候が雨ならカイオーガ

 

ここらへんはちゃんと検証が必要そうですね。

ソルガレオネクロズマ(日食)と認識してくれるか?

そんなことありませんでした。

通常ザシアンはザシアンと認識してくれるか?

これはいけるんやね。

 

まとめ

ポケモンの対面画像を使用して「Teachable Machine」の画像認識で遊んでみました。
ランクマやってる最中にいちいち相手のポケモン入力するの面倒だなと思っていたので、画像認識で解決できないか?のとりあえずの検証でした。
工夫次第では精度があげられると思うので、使えるかもしれないですね。

学習モデルはとりあえず共有しておきます!よかったら遊んでみてね!

https://teachablemachine.withgoogle.com/models/77t_nZnTX/

Arduino導入時のメモ

エラー対応

Switch Control Libraryに関するエラー

解決策:v1を使用する。v2とv1は互換性が無いため

error: 'nothrow_t' in namespace 'std' does not name a type~

解決策:"Arduino AVR Boards"のバージョンを1.8.2へダウングレードする
参考URL:https://teratail.com/questions/271735

  • コントローラとして反応しない

boards.txtが編集できていない。
編集する対象は、「C:\Users\[ユーザー名]\AppData\Local\Arduino15」とか
「C:\Users\[ユーザー名]\Documents\ArduinoData\」とかにある。
また、ちゃんと編集できたか確認する場合は
マイコンがつながっている状態で「Arduino IDE」の「ツール」>>「ボード情報を取得」を選択。
うまく書き込めていれば0x0f0d、0x0092と表示されるはず。

  • PC側でFTDIモジュールを認識しない

解決策:デバイスマネージャからドライバーを更新する。
参考URL:http://0918.jp/wp/post-1079/


以上。

C#でOBSを操作する

いろいろ自動化したかったので、OBSをC#から操作する方法を調べました。
その備忘録です。
だいたいみんなPythonなんですかね?
※OBS、obs-websocketはインストールしているものとする。

必要なもの・準備するもの

https://www.nuget.org/packages/obs-websocket-dotnet/

⇒2019のCommunity(Version 16.10.0)でやりました

obs-websocket-dotnetのインストール

パッケージマネージャコンソールで下記を入力して、実行

Install-Package obs-websocket-dotnet -Version 4.9.0

OBS側の設定

[ツール]タブから「Websocketサーバー設定」
サーバーポートとパスワードを設定

C#で実装

要所要所だけ。。。

  • OBSへ接続
OBSWebsocket obs;
obs = new OBSWebsocket();
obs.Connect(”ws://127.0.0.1:4444”, "パスワード");

Connect関数の第1引数の末尾"4444"はOBS側で設定した「サーバーポート」を書くこと。
第2引数"パスワード" もOBS側で設定したものを入力すること

Connectした後に下記関数を呼ぶとスクリーンショットが撮れる。

obs.TakeSourceScreenshot("ソース", "画像の拡張子", "ファイルパス");

第1引数のソースはOBS側のソース名 ※下記画像参照
第2引数の画像の拡張子は"jpg"、"png"などなど ※第3引数でファイルパスを書けばnullでもOK
第3引数のファイルパスは"C:\test\ss\hoge.png"こんな感じでファイル名まで書くこと。

あとは煮るなり焼くなり好きにしよう。


☆2024年06月02日追記☆
OBSをアップデートすると動かなくなったので、対処方法を残しておく。
OBSの28.0くらいからOBS-WebSocketのバージョンがあがったらしい(4⇒5)。

プラグインをインストールすることで、引き続きOBS-WebSocket4がサポートされる。
インストーラのダウンロードはこちらから

インストール後にツールタブを見ると、Websocket設定項目が増えている。

以上

実況動画制作を自動化したい② ~Softalk編~

面倒くさいことをやりたくないため、省エネに全力を尽くすのです。
お世話になります。
前回に引き続き自動化の記事です。

先日ひさびさ(?)にSoftalkを使用した実況動画(いわゆるゆっくり実況)を作りました。
生声よりも手間がかかるんじゃねって思っていましたが、仕組みさえ作っていればゆっくり実況のほうが楽でした。

作業内容の比較

~生声実況の場合~

①録音した音声を編集
 →音量調整
 →ノイズ低減(ホワイトノイズ、リップノイズ、マイクボフボフなど)
 →いらんところのカット
②動画と合わせてタイミングを調整
→1試合あたり約40分

~ゆっくり実況の場合~

Softalkで音声ファイルを作成 ★
②動画と合わせてタイミングを調整
→1試合あたり約25分

★のところが今回自動化したところです。
自動化すれば生声実況に比べ15分も短縮できます!

Softalk自動化

皆さんはSoftalkって使ったことはありますか?
そう!こんな感じのGUIです。
f:id:YaliYalice:20210129220016p:plain
テキストスペースに文章を入力し、下の方にある再生ボタンを押すとおなじみのあの声で、入力された文章をしゃべってくれます。
赤い方のボタンを押すと音声ファイルとして書き出すこともできます。
さくっと使えてすごく便利ですが、実況動画を作成するときは台本の文章を1行ずつ、いちいち手動でコピペ&録音を繰り返さないといけません。
これがとても面倒くさい。
ということで自動化してみました。

自動化の指針

GUIの自動化は難しいなあと思っていましたが、Softalkはなんとコマンドラインから実行できるようです。
こんな感じで実行できます↓ (「自動化できそう」としゃべってくれます)

C:\SofTalk.exe /W:自動化できそう

ということで、以下の手順でプログラムを組んでやれば自動化できるわけですね。

  • 台本から文章を1行抽出する
  • "/W:"引数に文章を指定
  • 台本の最終行まで上記を繰り返す

台本をエクセルに書くことが多いので、今回はエクセルマクロでさくっと実装しました。
テキストファイルに書いて、バッチファイルかなんかで読ませるとかでもいいと思います。

Softalkの引数について

今回使用したものだけ挙げます。詳しくはSoftalk付属のヘルプファイルをご覧ください。

引数 説明
/NM: 声の種類の指定(女性01とかロボットとか)
/O: 音程パラメータ
/S: 速度パラメータ
/V: 音量パラメータ
/X: 画面表示の有無(0:表示 1:非表示)
/R: 録音した音声ファイルの保存先の指定
(C:\result\hoge.wav みたいなファイルパス)
/W: 読み上げる文章

つまずいたところ

  • "/W:"引数の指定は最後にしよう

/W:"以降の文字をすべて読み上げ対象とする仕様なので、最後に書かないと引数指定がそのまま読まれちゃいます

NG:C:\SofTalk.exe /W:自動化できそう /O:120

→"/O:120"も読み上げられちゃう!

  • 録音が終了したらcloseオプションを実行しよう

closeオプションを実行しないと、SoftalkGUI操作ができなくなってしまいます。

C:\SofTalk.exe /close

おまじないみたいなもんですね。

課題

  • 間違いの訂正が面倒

→個別でGUIから訂正した
 →読み登録である程度回避できる
  →誤字脱字は知らん

  • 出力した音声ファイルを動画編集ソフトに読み込ませるのが結局手動

→音声ファイルを結合させるフリーソフトで対応?
 →Aviutlにはファイル一括読み込み用のプラグインあり

最後に

似たようなのがすでにありましたわ。。。
www.nicovideo.jp

以上です。
次は何を自動化しようか。