export function validateModelConfig()

in hand-pose-detection/src/tfjs/detector_utils.ts [21:69]


export function validateModelConfig(modelConfig: MediaPipeHandsTfjsModelConfig):
    MediaPipeHandsTfjsModelConfig {
  if (modelConfig == null) {
    return {...DEFAULT_MPHANDS_MODEL_CONFIG};
  }

  const config: MediaPipeHandsTfjsModelConfig = {...modelConfig};

  config.runtime = 'tfjs';

  if (config.maxHands == null) {
    config.maxHands = DEFAULT_MPHANDS_MODEL_CONFIG.maxHands;
  }

  if (config.modelType == null) {
    config.modelType = DEFAULT_MPHANDS_MODEL_CONFIG.modelType;
  }

  if (config.modelType !== 'lite' && config.modelType !== 'full') {
    throw new Error(
        `Model type must be one of lite or full, but got ${config.modelType}`);
  }

  if (config.detectorModelUrl == null) {
    switch (config.modelType) {
      case 'lite':
        config.detectorModelUrl = DEFAULT_MPHANDS_DETECTOR_MODEL_URL_LITE;
        break;
      case 'full':
      default:
        config.detectorModelUrl = DEFAULT_MPHANDS_DETECTOR_MODEL_URL_FULL;
        break;
    }
  }

  if (config.landmarkModelUrl == null) {
    switch (config.modelType) {
      case 'lite':
        config.landmarkModelUrl = DEFAULT_MPHANDS_LANDMARK_MODEL_URL_LITE;
        break;
      case 'full':
      default:
        config.landmarkModelUrl = DEFAULT_MPHANDS_LANDMARK_MODEL_URL_FULL;
        break;
    }
  }

  return config;
}