in posenet/src/posenet_model.ts [108:164]
function validateModelConfig(config: ModelConfig) {
config = config || 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 = 257;
}
validateInputResolution(config.inputResolution);
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;
}