File: hps_service.proto

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (96 lines) | stat: -rw-r--r-- 3,782 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// Copyright 2021 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto3";

package hps;
option go_package = "go.chromium.org/chromiumos/system_api/hps_proto";

option optimize_for = LITE_RUNTIME;

// Configuration of an HPS feature for the Enable method
// More FilterConfigs will be added here as more filters are added
message FeatureConfig {
  // The simplest filter with a default threshold
  message BasicFilterConfig {}
  // A filter that changes state when number of same consecutive inference
  // results is above a count limit.
  message ConsecutiveResultsFilterConfig {
    // *threshold are values that a single inference score is compared against.
    // (1) A single inference score is converted into an inference result as:
    // inference_result = score >= positive_score_threshold
    //                    ? POSITIVE
    //                    : score< negative_score_threshold
    //                        ? NEGATIVE
    //                        : UNKNOWN
    // Note: The inference score is a value from [-128, 128), so should the
    // thresholds be.
    // (2) the inference_result is then used to update the counter as:
    // consecutive_result_counter = inference_result is the same as last round
    //                             ? consecutive_result_counter + 1
    //                             : 1
    int32 positive_score_threshold = 4;
    int32 negative_score_threshold = 5;

    // *count_threshold are thresholds for the filter to change its state.
    // If current inference result is POSITIVE and consecutive_result_counter
    // is >= positive_count_threshold, then the filter state is set to
    // POSITIVE.
    // If current inference result is NEGATIVE and consecutive_result_counter
    // is >= negative_count_threshold, then the filter state is set to
    // NEGATIVE.
    // If current inference result is UNKNOWN and consecutive_result_counter
    // is >= uncertain_count_threshold, then the filter state is set to
    // UNKNOWN.
    int32 positive_count_threshold = 6;
    int32 negative_count_threshold = 7;
    int32 uncertain_count_threshold = 8;

    // Deprecated fields that were removed.
    reserved 1, 2, 3;
  }

  message AverageFilterConfig {
    // The inference score will be averged among last `average_window_size`
    // results.
    int32 average_window_size = 1;

    // *threshold are values that the inference result is compared against.
    // If the average inference score is >= the positive_score_threshold it is
    // considered a positive result; if the average inference score is < the
    // negative_score_threshold then it is considered a negative result;
    // otherwise it is considered as a uncertain result.
    int32 positive_score_threshold = 2;
    int32 negative_score_threshold = 3;

    // If the inference result is invalid, then this default score will be used.
    int32 default_uncertain_score = 4;
  }
  oneof filter_config {
    BasicFilterConfig basic_filter_config = 1;
    ConsecutiveResultsFilterConfig consecutive_results_filter_config = 2;
    AverageFilterConfig average_filter_config = 3;
  }
  // Enable raw inference result reporting. Disabled by default.
  bool report_raw_results = 4;
}

// Represent the result from Hps Daemon to other client.
// Used for HpsNotify and HpsSense.
enum HpsResult {
  UNKNOWN = 0;
  NEGATIVE = 1;
  POSITIVE = 2;
}

message HpsResultProto {
  // Processed feature detection result.
  HpsResult value = 1;

  // Raw (unfiltered) inference score in the range [-128, 128). Used for testing
  // model performance. Only included if `report_raw_results` is set in the
  // config.
  int32 inference_result = 2;
  bool inference_result_valid = 3;
}