in pose-detection/src/posenet/detector_utils.ts [24:83]
export function validateModelConfig(modelConfig: PosenetModelConfig):
PosenetModelConfig {
const config = modelConfig || MOBILENET_V1_CONFIG;
if (config.architecture == null) {
config.architecture = 'MobileNetV1';
}
if (VALID_ARCHITECTURE.indexOf(config.architecture) < 0) {
throw new Error(
`Invalid architecture ${config.architecture}. ` +
`Should be one of ${VALID_ARCHITECTURE}`);
}
if (config.inputResolution == null) {
config.inputResolution = {height: 257, width: 257};
}
if (config.outputStride == null) {
config.outputStride = 16;
}
if (VALID_STRIDE[config.architecture].indexOf(config.outputStride) < 0) {
throw new Error(
`Invalid outputStride ${config.outputStride}. ` +
`Should be one of ${VALID_STRIDE[config.architecture]} ` +
`for architecture ${config.architecture}.`);
}
if (config.multiplier == null) {
config.multiplier = 1.0;
}
if (VALID_MULTIPLIER[config.architecture].indexOf(config.multiplier) < 0) {
throw new Error(
`Invalid multiplier ${config.multiplier}. ` +
`Should be one of ${VALID_MULTIPLIER[config.architecture]} ` +
`for architecture ${config.architecture}.`);
}
if (config.quantBytes == null) {
config.quantBytes = 4;
}
if (VALID_QUANT_BYTES.indexOf(config.quantBytes) < 0) {
throw new Error(
`Invalid quantBytes ${config.quantBytes}. ` +
`Should be one of ${VALID_QUANT_BYTES} ` +
`for architecture ${config.architecture}.`);
}
if (config.architecture === 'MobileNetV1' && config.outputStride === 32 &&
config.multiplier !== 1) {
throw new Error(
`When using an output stride of 32, ` +
`you must select 1 as the multiplier.`);
}
return config;
}