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