-
Notifications
You must be signed in to change notification settings - Fork 0
/
design.txt
152 lines (115 loc) · 7.13 KB
/
design.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
song https://bestdori.com/assets/jp/sound/bgm001_rip/bgm001.mp3
chart https://bestdori.com/api/songs/chart/graphics/simulator/1.expert.json
render模块:
参照bestdori的谱面播放器,素材在bestdori都有
播放/暂停
难点:
绘制谱面播放的UI。没点中note继续往下走。分辨率可调节。
解析谱面文件,根据note的时间与速度计算note的出现情况
点击特效暂时不弄(bad以上点中就消失)。最好做出长按的特效。暂不考虑绿滑条。
判定:参考b站专栏。误差一个轨道且实际点的轨道没有能判的 评级降一级
不相干的miss只能等note出界才能算
注意判定相互干扰(同一轨道2notes的great时间间隔重叠部分可判出两个
点击时间离前面比较近就照常 否则前面一个miss 后一个照常
还可以加个歌曲的搜索引擎
游玩的IO: 写法参考openAI-gym
预设谱面 接收action 根据action给出判定结果(是否继续显示note)
miss -10,bad -5,good 0,great +5,perfect +10
因为二指,一次最多判两个
DRL训练部分:
播放的同时开始训练
训练的输入包括音频和视频画面 两帧决策一次
curriculum learning:easy - normal - hard
目的意义
强化学习……决策 重大意义
节奏游戏简要描述 人在玩这种游戏的特定曲目的谱面时 往往需要音乐 尤其是人在刚刚接触新曲时 音乐能很好地加速人的学习
虽然人眼接收了大部分信息,但是有时人进行决策也离不开声音的信号(听到打雷就去收衣服而不是等看到下雨才去、听到水烧开了的壶的声音去关火)
电子游戏 多媒体 很多时候人在玩游戏时是离不开游戏中的声音信号,因此这里整了一个节奏游戏 声音能辅助 以便更好地研究智能体在多模态输入下的训练与决策
与人进行面对面交流的机器人 能察言观色+听懂说话 效果会比纯粹的听要好
研究现状
归纳yuxi li部分
基于声音的有(speech、music生成、abnormal sound detection、确定模糊的声音指令)等
基于图像的(海了去了:videogames、自动驾驶)
研究内容
1. 构建深度强化学习训练环境
2. 训练智能体
研究方案
1. 构建环境:pygame
2. 数据 bestdori from Bang Dream! Grils Band Party
3. 智能体神经网络的构建:DQN A3C PPO……
4. 训练方式:课程学习(同一首歌从简单到难 | 所有曲子所有难度从易到难)
5. 对比多模态与否对训练效果的影响
5. 验证效果 预留一部分歌曲和谱面用于临场训练和验证
技术难点
1. 数据量较大 需要合理取舍
2. 多模态输入方面 前人的经验较少 需要时间去探索较为合适的实现方式
3. 强化学习机制 训练时间长
进度安排
2020年1月~2020年3月:阅读相关资料,调研研究状况,编写开题报告,完成开题答辩。
2020年3月~2020年4月:完成节奏游戏环境的构建,初步构建深度强化学习构建智能体。
2020年4月~2020年5月:借助多模态输入,尝试几种主流算法以及课程学习的训练方式优化智能体,并进行中期答辩。
2018年5月~2018年6月:撰写毕业论文,准备结题答辩。
预期结果
本研究的预期结果包括两方面:一是构建出一个能满足多模态输入的、可用于深度强化学习研究的节奏游戏环境;
二是在该环境下训练出一个具有一定泛化能力的智能体:它对已训练的曲目谱面的游戏有较高的完成度,而仅需少量训练,即可在新曲目的谱面游戏上有较好的完成度。
judge 根据action和notegroup判断得分,打中的就设置note标志位为invisible
每多50combo 每次点击多x分
长绿条滑动?
除非中途有弹起 否则认为在滑动
魔幻:做lane1滑到7再瞎滑,要学习到记得弹起会比较麻烦
考虑手动加点操作让agent在没有note的时候习惯弹起
普通:从按到弹
绿条结尾:要从按到弹
绿条首/中间:按不弹
粉:就粉吧
轨道0操作无意义 可以随便操作无惩罚
每次输出的动作:(轨道1,动作1), (轨道2,动作2)
按 弹 粉 无操作
惩罚:两个指头在同一轨道(按/弹/粉),
没有在x轨道按下却在x轨道弹起
截图进程
√图越小 越headless 每s截图太多了 设定16ms截一个吧
录音进程
服务器录音?
最终架构
DQN系 Dueling+Double+FixedQ+PER
AC系 SAC离散版 PPO
PG系 TD3
点之后放开与否不关心 绿首/中就当做没放开 单点/绿尾就当做放开了
t时刻 查找判定区间
1.更新上次判定区间起点
从上次判定区间开始,如果时间差超过一定值且没有分数,就标记为miss,累计到总分
分别维护 普通or粉 绿首尾 绿中
直到时间差不满足某类音符判定条件
2.更新判定区间终点/判定过程
对每个note 找同轨道的action 如果有perfect/great/good/bad 标记分数 累计到总分中
若还有action没判定 对每个没判的note 找相邻轨道的action 若有perfect/great/good/bad 标记分数 累计到总分中
对每个可能在可判定区的note(划线在12帧 大于单点的8帧)
先看是否可判 否则直接miss 计入总回报
确定可判的->看看点中的有没有 如果点中了就记录这个action已经判过了 并计分;没有就跳过这个note
两个action都判了 退出
注意只有差值大到一个量才能miss 提前点不会触发miss
替换bandoriapp里面的state存储为共享的 -> 使用queue
不整:读源码:绿条长度限制 note点击就消失机制->点条分离
undo: 可以考虑让点了的long-start/slide 关联的绿条做长度限制
agent细节
每局游戏print:曲目id+名字+难度,时间,
(finish后)时间+用时+是否打完+结束时歌曲时间+总reward+5种grade个数
训练流程:
指定训练的难易度 easy/normal/hard/expert
从指定的曲目范围(最简单的4个/8个……) 随机选择一曲以指定的难易度打一局 总分低于-1000自动下一局
输入:DQN把灰度图连续4张stack起来做成4通道 我就直接叠成9通道罢
音乐部分的输入fft之后直接DNN吧 上LSTM太慢了
如果需要环境的next 那就在action完事后的下一次采样 把图像和音频(16ms)塞进队列
SAC(off-policy) PPO(on-policy)
有声 无声
一共4组 先拿最简单4首歌xjb采样吧 服务器同时跑4种可行不?
低分辨率下 粉键和普通键难以分辨 都是差不多椭圆的一团 所以还是彩色图更好
但卷积时需要分别卷 然后DNN一波 不能直接叠成9通道
128*36*9 有点顶
音频处理用float32 图像全部float16
step*3 -> act & reward -> step(get-next-state)
对21个output玩softmax 但是action用的是总概率最大的两个轨道中 各自的概率最大的action 会对PPO的KL散度/交叉熵等产生偏差吗?!!
虽然输出21个output 处理时禁止了同轨道多操作 -> 概率修正 且认为左右手无序
action的真正概率 lane1的概率
# 调整输入 图像数据总量约等于音频预处理后的两倍 在不至于严重影响图像网络性能的前提下尽可能地多给音频点机会