mirror of
https://github.com/unanmed/ginka-generator.git
synced 2026-05-14 04:41:12 +08:00
chore: 调整数据集参数
This commit is contained in:
parent
266f50db73
commit
011d828f1d
@ -268,6 +268,8 @@ const labelConfig: IAutoLabelConfig = {
|
||||
maxFishCount: 2,
|
||||
minEntryCount: 1,
|
||||
maxEntryCount: 4,
|
||||
guassainRadius: 2,
|
||||
heatmapKernel: 3,
|
||||
ignoreIssues: true,
|
||||
customTowerFilter: info => {
|
||||
// if (info.name !== 'Apeiria') {
|
||||
|
||||
@ -95,7 +95,7 @@ export async function autoLabelTowers(
|
||||
}
|
||||
// 转换楼层
|
||||
const converted = convertTowerMap(result, floor, config);
|
||||
const floorInfo = parseFloorInfo(info, converted.map);
|
||||
const floorInfo = parseFloorInfo(info, converted.map, config);
|
||||
const floorData: IConvertedMapInfo = {
|
||||
data: converted,
|
||||
tower: info,
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { readFile } from 'fs/promises';
|
||||
import { IFloorInfo, ITowerInfo, TowerColor } from './types';
|
||||
import { IAutoLabelConfig, IFloorInfo, ITowerInfo, TowerColor } from './types';
|
||||
import { buildTopologicalGraph } from '../topology/graph';
|
||||
import {
|
||||
commonDoorTiles,
|
||||
@ -153,7 +153,11 @@ export function computeWallDensityStd(
|
||||
* @param tower 地图所属塔信息
|
||||
* @param map 地图矩阵
|
||||
*/
|
||||
export function parseFloorInfo(tower: ITowerInfo, map: number[][]): IFloorInfo {
|
||||
export function parseFloorInfo(
|
||||
tower: ITowerInfo,
|
||||
map: number[][],
|
||||
config: IAutoLabelConfig
|
||||
): IFloorInfo {
|
||||
const topo = buildTopologicalGraph(map);
|
||||
const flattened = map.flat();
|
||||
const area = flattened.length;
|
||||
@ -229,17 +233,42 @@ export function parseFloorInfo(tower: ITowerInfo, map: number[][]): IFloorInfo {
|
||||
fishCount,
|
||||
hasUselessBranch,
|
||||
wallDensityStd: computeWallDensityStd(map, wallTiles, 5),
|
||||
wallHeatmap: gaussainHeatmap(generateHeatmap(map, wallTiles, 1)),
|
||||
enemyHeatmap: gaussainHeatmap(generateHeatmap(map, enemyTiles, 1)),
|
||||
resourceHeatmap: gaussainHeatmap(
|
||||
generateHeatmap(map, resourceTiles, 1)
|
||||
wallHeatmap: gaussainHeatmap(
|
||||
generateHeatmap(map, wallTiles, config.heatmapKernel),
|
||||
config.guassainRadius
|
||||
),
|
||||
potionHeatmap: gaussainHeatmap(generateHeatmap(map, potionTiles, 1)),
|
||||
gemHeatmap: gaussainHeatmap(generateHeatmap(map, gemTiles, 1)),
|
||||
keyHeatmap: gaussainHeatmap(generateHeatmap(map, keyTiles, 1)),
|
||||
itemHeatmap: gaussainHeatmap(generateHeatmap(map, itemTiles, 1)),
|
||||
entryHeatmap: gaussainHeatmap(generateHeatmap(map, entryTiles, 1)),
|
||||
doorHeatmap: gaussainHeatmap(generateHeatmap(map, doorTiles, 1))
|
||||
enemyHeatmap: gaussainHeatmap(
|
||||
generateHeatmap(map, enemyTiles, config.heatmapKernel),
|
||||
config.guassainRadius
|
||||
),
|
||||
resourceHeatmap: gaussainHeatmap(
|
||||
generateHeatmap(map, resourceTiles, config.heatmapKernel),
|
||||
config.guassainRadius
|
||||
),
|
||||
potionHeatmap: gaussainHeatmap(
|
||||
generateHeatmap(map, potionTiles, config.heatmapKernel),
|
||||
config.guassainRadius
|
||||
),
|
||||
gemHeatmap: gaussainHeatmap(
|
||||
generateHeatmap(map, gemTiles, config.heatmapKernel),
|
||||
config.guassainRadius
|
||||
),
|
||||
keyHeatmap: gaussainHeatmap(
|
||||
generateHeatmap(map, keyTiles, config.heatmapKernel),
|
||||
config.guassainRadius
|
||||
),
|
||||
itemHeatmap: gaussainHeatmap(
|
||||
generateHeatmap(map, itemTiles, config.heatmapKernel),
|
||||
config.guassainRadius
|
||||
),
|
||||
entryHeatmap: gaussainHeatmap(
|
||||
generateHeatmap(map, entryTiles, config.heatmapKernel),
|
||||
config.guassainRadius
|
||||
),
|
||||
doorHeatmap: gaussainHeatmap(
|
||||
generateHeatmap(map, doorTiles, config.heatmapKernel),
|
||||
config.guassainRadius
|
||||
)
|
||||
};
|
||||
|
||||
return floorInfo;
|
||||
|
||||
@ -183,6 +183,10 @@ export interface IAutoLabelConfig {
|
||||
|
||||
/** 最大墙壁密度标准差,用于描述一个地图墙壁分布是否均匀的,较大的时候可能是特殊地图,不符合要求 */
|
||||
readonly maxWallDensityStd: number;
|
||||
/** 热力图统计算子 */
|
||||
readonly heatmapKernel: number;
|
||||
/** 热力图高斯模糊的标准差 */
|
||||
readonly guassainRadius: number;
|
||||
|
||||
/** 是否忽略问题 */
|
||||
readonly ignoreIssues: boolean;
|
||||
|
||||
@ -44,6 +44,7 @@ GENERATE_STEP = 8
|
||||
MAP_SIZE = 13 * 13
|
||||
HEATMAP_CHANNEL = 9
|
||||
LABEL_SMOOTHING = 0.1
|
||||
RAND_RATIO = 0.1
|
||||
MASK_PROBS = [0.5, 0.5] # 纯随机,分块随机
|
||||
|
||||
device = torch.device(
|
||||
@ -114,7 +115,7 @@ def train():
|
||||
B, H, W = target_map.shape
|
||||
|
||||
target_map = target_map.view(B, H * W)
|
||||
rand = torch.randn_like(heatmap).to(device) * 0.05
|
||||
rand = torch.randn_like(heatmap).to(device) * RAND_RATIO
|
||||
if random.random() > 0.5:
|
||||
heatmap = heatmap + rand
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user