feat: 添加更多热力图信息

This commit is contained in:
unanmed 2026-03-11 17:57:35 +08:00
parent c9bb50d503
commit 19fadf50bd
5 changed files with 31 additions and 15 deletions

View File

@ -333,7 +333,12 @@ const labelConfig: IAutoLabelConfig = {
normalizeHeatmap(info.wallHeatmap),
normalizeHeatmap(info.enemyHeatmap),
normalizeHeatmap(info.resourceHeatmap),
normalizeHeatmap(info.entryHeatmap)
normalizeHeatmap(info.potionHeatmap),
normalizeHeatmap(info.gemHeatmap),
normalizeHeatmap(info.keyHeatmap),
normalizeHeatmap(info.itemHeatmap),
normalizeHeatmap(info.entryHeatmap),
normalizeHeatmap(info.doorHeatmap)
],
val: [
info.globalDensity,

View File

@ -232,7 +232,12 @@ export function parseFloorInfo(tower: ITowerInfo, map: number[][]): IFloorInfo {
wallHeatmap: gaussainHeatmap(generateHeatmap(map, wallTiles)),
enemyHeatmap: gaussainHeatmap(generateHeatmap(map, enemyTiles)),
resourceHeatmap: gaussainHeatmap(generateHeatmap(map, resourceTiles)),
entryHeatmap: gaussainHeatmap(generateHeatmap(map, entryTiles))
potionHeatmap: gaussainHeatmap(generateHeatmap(map, potionTiles)),
gemHeatmap: gaussainHeatmap(generateHeatmap(map, gemTiles)),
keyHeatmap: gaussainHeatmap(generateHeatmap(map, keyTiles)),
itemHeatmap: gaussainHeatmap(generateHeatmap(map, itemTiles)),
entryHeatmap: gaussainHeatmap(generateHeatmap(map, entryTiles)),
doorHeatmap: gaussainHeatmap(generateHeatmap(map, doorTiles))
};
return floorInfo;

View File

@ -94,14 +94,24 @@ export interface IFloorInfo {
/** 墙壁密度标准差 */
readonly wallDensityStd: number;
/** 墙壁热力图 */
readonly wallHeatmap: number[][];
/** 怪物热力图 */
readonly enemyHeatmap: number[][];
/** 资源热力图 */
readonly resourceHeatmap: number[][];
/** 血瓶热力图 */
readonly potionHeatmap: number[][];
/** 宝石热力图 */
readonly gemHeatmap: number[][];
/** 钥匙热力图 */
readonly keyHeatmap: number[][];
/** 道具热力图 */
readonly itemHeatmap: number[][];
/** 入口热力图 */
readonly entryHeatmap: number[][];
/** 墙壁热力图 */
readonly wallHeatmap: number[][];
/** 热力图 */
readonly doorHeatmap: number[][];
}
export interface IMapBlockConfig {

View File

@ -8,6 +8,7 @@ class GinkaMaskGITCond(nn.Module):
super().__init__()
self.cond_fc = nn.Sequential(
nn.Linear(cond_dim, output_dim // 2),
nn.Dropout(0.3),
nn.LayerNorm(output_dim // 2),
nn.ReLU(),

View File

@ -16,16 +16,6 @@ from .dataset import GinkaMaskGITDataset
from shared.image import matrix_to_image_cv
from .maskGIT.mask import MapMask
# 手工标注标签定义(暂时不用):
# 0. 蓝海, 1. 红海, 2: 室内, 3. 野外, 4. 左右对称, 5. 上下对称, 6. 伪对称, 7. 咸鱼层,
# 8. 剧情层, 9. 水层, 10. 爽塔, 11. Boss层, 12. 纯Boss层, 13. 多房间, 14. 多走廊, 15. 道具风
# 16. 区域入口, 17. 区域连接, 18. 有机关门, 19. 道具层, 20. 斜向对称, 21. 左右通道, 22. 上下通道, 23. 多机关门
# 24. 中心对称, 25. 部分对称, 26. 鱼骨
# 自动标注标签定义(暂时不用):
# 0. 左右对称, 1. 上下对称, 2. 中心对称, 3. 斜向对称, 4. 伪对称, 5. 多房间, 6. 多走廊
# 32. 平面塔, 33. 转换塔, 34. 道具塔
# 标量值定义:
# 0. 整体密度,非空白图块/地图面积,空白图块还包括装饰图块
# 1. 墙体密度,墙壁/地图面积
@ -42,12 +32,17 @@ from .maskGIT.mask import MapMask
# 0. 空地, 1. 墙壁, 2. 门, 3. 钥匙, 4. 红宝石, 5. 蓝宝石, 6. 绿宝石, 7. 血瓶
# 8. 道具, 9. 怪物, 10. 入口, 15. 掩码 token
# 热力图定义
# 0. 墙壁热力图, 1. 怪物热力图, 2. 资源热力图, 3. 血瓶热力图, 4. 宝石热力图, 5. 钥匙热力图
# 6. 道具热力图, 7. 入口热力图, 8. 门热力图
BATCH_SIZE = 128
VAL_BATCH_DIVIDER = 128
NUM_CLASSES = 16
MASK_TOKEN = 15
GENERATE_STEP = 8
MAP_SIZE = 13 * 13
HEATMAP_CHANNEL = 9
MASK_PROBS = [0.5, 0.5] # 纯随机,分块随机
device = torch.device(
@ -78,7 +73,7 @@ def train():
args = parse_arguments()
model = GinkaMaskGIT(num_classes=NUM_CLASSES).to(device)
model = GinkaMaskGIT(num_classes=NUM_CLASSES, heatmap_channel=HEATMAP_CHANNEL).to(device)
masker = MapMask([0.5, 0.5])
dataset = GinkaMaskGITDataset(args.train, device)