tvm
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
vision.h
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
24 #ifndef TVM_RELAY_ATTRS_VISION_H_
25 #define TVM_RELAY_ATTRS_VISION_H_
26 
27 #include <tvm/ir/attrs.h>
28 #include <tvm/relay/base.h>
29 
30 #include <string>
31 
32 namespace tvm {
33 namespace relay {
34 
36 struct MultiBoxPriorAttrs : public tvm::AttrsNode<MultiBoxPriorAttrs> {
41  bool clip;
42 
43  TVM_DECLARE_ATTRS(MultiBoxPriorAttrs, "relay.attrs.MultiBoxPriorAttrs") {
45  .set_default(Array<IndexExpr>({static_cast<float>(1.0)}))
46  .describe("List of sizes of generated MultiBoxPriores.");
48  .set_default(Array<IndexExpr>({static_cast<float>(1.0)}))
49  .describe("List of aspect ratios of generated MultiBoxPriores.");
51  .set_default(Array<IndexExpr>({static_cast<float>(-1.0), static_cast<float>(-1.0)}))
52  .describe("Priorbox step across y and x, -1 for auto calculation.");
54  .set_default(Array<IndexExpr>({static_cast<float>(0.5), static_cast<float>(0.5)}))
55  .describe("Priorbox center offsets, y and x respectively.");
56  TVM_ATTR_FIELD(clip).set_default(false).describe("Whether to clip out-of-boundary boxes.");
57  }
58 };
59 
60 struct MultiBoxTransformLocAttrs : public tvm::AttrsNode<MultiBoxTransformLocAttrs> {
61  bool clip;
62  double threshold;
64 
65  TVM_DECLARE_ATTRS(MultiBoxTransformLocAttrs, "relay.attrs.MultiBoxTransformLocAttrs") {
66  TVM_ATTR_FIELD(clip).set_default(true).describe("Clip out-of-boundary boxes.");
67  TVM_ATTR_FIELD(threshold).set_default(0.01).describe("Threshold to be a positive prediction.");
69  .set_default(Array<IndexExpr>({0.1f, 0.1f, 0.2f, 0.2f}))
70  .describe("Variances to be decoded from box regression output.");
71  }
72 };
73 
75 struct GetValidCountsAttrs : public tvm::AttrsNode<GetValidCountsAttrs> {
77  int id_index;
79 
80  TVM_DECLARE_ATTRS(GetValidCountsAttrs, "relay.attrs.GetValidCountsAttrs") {
81  TVM_ATTR_FIELD(score_threshold).describe("Lower limit of score for valid bounding boxes.");
82  TVM_ATTR_FIELD(id_index).set_default(0).describe("Axis index of id.");
83  TVM_ATTR_FIELD(score_index).set_default(1).describe("Index of the scores/confidence of boxes.");
84  }
85 };
86 
88 struct NonMaximumSuppressionAttrs : public tvm::AttrsNode<NonMaximumSuppressionAttrs> {
90  int top_k;
93  int id_index;
96 
97  TVM_DECLARE_ATTRS(NonMaximumSuppressionAttrs, "relay.attrs.NonMaximumSuppressionAttrs") {
99  .set_default(false)
100  .describe("Suppress all detections regardless of class_id.");
101  TVM_ATTR_FIELD(top_k).set_default(-1).describe(
102  "Keep maximum top k detections before nms, -1 for no limit.");
104  .set_default(2)
105  .describe("Start index of the consecutive 4 coordinates.");
106  TVM_ATTR_FIELD(score_index).set_default(1).describe("Index of the scores/confidence of boxes.");
107  TVM_ATTR_FIELD(id_index).set_default(0).describe("Axis index of id.");
109  .set_default(true)
110  .describe("Whether to return box indices in input data.");
112  .set_default(false)
113  .describe("Whether to move all invalid bounding boxes to the bottom.");
114  }
115 };
116 
119  : public tvm::AttrsNode<AllClassNonMaximumSuppressionAttrs> {
120  std::string output_format;
121 
123  "relay.attrs.AllClassNonMaximumSuppressionAttrs") {
125  .set_default("onnx")
126  .describe(
127  "Output format, onnx or tensorflow. Returns outputs in a way that can be easily "
128  "consumed by each frontend.");
129  }
130 };
131 
133 struct ROIAlignAttrs : public tvm::AttrsNode<ROIAlignAttrs> {
137  std::string layout;
138  std::string mode;
139  TVM_DECLARE_ATTRS(ROIAlignAttrs, "relay.attrs.ROIAlignAttrs") {
140  TVM_ATTR_FIELD(pooled_size).describe("Output size of roi align.");
142  .describe(
143  "Ratio of input feature map height (or w) to raw image height (or w). "
144  "Equals the reciprocal of total stride in convolutional layers, which should be "
145  "in range (0.0, 1.0]");
147  .set_default(-1)
148  .describe("Optional sampling ratio of ROI align, using adaptive size by default.");
149  TVM_ATTR_FIELD(layout).set_default("NCHW").describe(
150  "Dimension ordering of data and weight. Can be 'NCHW', 'NHWC', etc."
151  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
152  "dimensions respectively. Convolution is applied on the 'H' and"
153  "'W' dimensions.");
154  TVM_ATTR_FIELD(mode).set_default("avg").describe(
155  "Mode for ROI Align. Can be 'avg' or 'max'. The default mode is 'avg'.");
156  }
157 };
158 
160 struct ROIPoolAttrs : public tvm::AttrsNode<ROIPoolAttrs> {
163  std::string layout;
164  TVM_DECLARE_ATTRS(ROIPoolAttrs, "relay.attrs.ROIPoolAttrs") {
165  TVM_ATTR_FIELD(pooled_size).describe("Output size of roi pool.");
167  .describe(
168  "Ratio of input feature map height (or w) to raw image height (or w). "
169  "Equals the reciprocal of total stride in convolutional layers, which should be "
170  "in range (0.0, 1.0]");
171  TVM_ATTR_FIELD(layout).set_default("NCHW").describe(
172  "Dimension ordering of data and weight. Can be 'NCHW', 'NHWC', etc."
173  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
174  "dimensions respectively. Convolution is applied on the 'H' and"
175  "'W' dimensions.");
176  }
177 };
178 
180 struct YoloReorgAttrs : public tvm::AttrsNode<YoloReorgAttrs> {
182 
183  TVM_DECLARE_ATTRS(YoloReorgAttrs, "relay.attrs.YoloReorgAttrs") {
184  TVM_ATTR_FIELD(stride).set_default(1).describe("Stride value for yolo reorg");
185  }
186 };
187 
189 struct ProposalAttrs : public tvm::AttrsNode<ProposalAttrs> {
193  double threshold;
197  bool iou_loss;
198 
199  TVM_DECLARE_ATTRS(ProposalAttrs, "relay.attrs.ProposalAttrs") {
201  .set_default(Array<IndexExpr>({4.0f, 8.0f, 16.0f, 32.0f}))
202  .describe("Used to generate anchor windows by enumerating scales");
204  .set_default(Array<IndexExpr>({0.5f, 1.0f, 2.0f}))
205  .describe("Used to generate anchor windows by enumerating ratios");
207  .set_default(16)
208  .describe(
209  "The size of the receptive field each unit in the convolution layer of the rpn,"
210  "for example the product of all stride's prior to this layer.");
211  TVM_ATTR_FIELD(threshold).set_default(0.7).describe(
212  "IoU threshold of non-maximum suppresion (suppress boxes with IoU >= this threshold)");
214  .set_default(6000)
215  .describe("Number of top scoring boxes to apply NMS. -1 to use all boxes");
217  .set_default(300)
218  .describe("Number of top scoring boxes to keep after applying NMS to RPN proposals");
219  TVM_ATTR_FIELD(rpn_min_size).set_default(16).describe("Minimum height or width in proposal");
220  TVM_ATTR_FIELD(iou_loss).set_default(false).describe("Usage of IoU Loss");
221  }
222 };
223 
224 } // namespace relay
225 } // namespace tvm
226 #endif // TVM_RELAY_ATTRS_VISION_H_
The base class of the all the Use "curiously recurring template pattern".
Definition: attrs.h:833
Container of constant int that adds more constructors.
Definition: expr.h:622
Array, container representing a contiguous sequence of ObjectRefs.
Definition: array.h:289
Optional container that to represent to a Nullable variant of T.
Definition: optional.h:51
Helpers for attribute objects.
#define TVM_ATTR_FIELD(FieldName)
Declare an attribute field.
Definition: attrs.h:76
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36
Base classes for the Relay IR.
Attributes used in all_class_non_maximum_suppression operator.
Definition: vision.h:119
TVM_DECLARE_ATTRS(AllClassNonMaximumSuppressionAttrs, "relay.attrs.AllClassNonMaximumSuppressionAttrs")
Definition: vision.h:122
std::string output_format
Definition: vision.h:120
Attributes used in get_valid_counts operator.
Definition: vision.h:75
TVM_DECLARE_ATTRS(GetValidCountsAttrs, "relay.attrs.GetValidCountsAttrs")
Definition: vision.h:80
int score_index
Definition: vision.h:78
int id_index
Definition: vision.h:77
Optional< FloatImm > score_threshold
Definition: vision.h:76
Attributes used in multibox_prior operators.
Definition: vision.h:36
Array< IndexExpr > steps
Definition: vision.h:39
Array< IndexExpr > offsets
Definition: vision.h:40
TVM_DECLARE_ATTRS(MultiBoxPriorAttrs, "relay.attrs.MultiBoxPriorAttrs")
Definition: vision.h:43
bool clip
Definition: vision.h:41
Array< IndexExpr > sizes
Definition: vision.h:37
Array< IndexExpr > ratios
Definition: vision.h:38
Array< IndexExpr > variances
Definition: vision.h:63
bool clip
Definition: vision.h:61
double threshold
Definition: vision.h:62
TVM_DECLARE_ATTRS(MultiBoxTransformLocAttrs, "relay.attrs.MultiBoxTransformLocAttrs")
Definition: vision.h:65
Attributes used in non_maximum_suppression operator.
Definition: vision.h:88
int coord_start
Definition: vision.h:91
int id_index
Definition: vision.h:93
bool invalid_to_bottom
Definition: vision.h:95
bool return_indices
Definition: vision.h:94
TVM_DECLARE_ATTRS(NonMaximumSuppressionAttrs, "relay.attrs.NonMaximumSuppressionAttrs")
Definition: vision.h:97
int top_k
Definition: vision.h:90
int score_index
Definition: vision.h:92
bool force_suppress
Definition: vision.h:89
Attributes used in proposal operators.
Definition: vision.h:189
bool iou_loss
Definition: vision.h:197
Array< IndexExpr > scales
Definition: vision.h:190
int feature_stride
Definition: vision.h:192
int rpn_pre_nms_top_n
Definition: vision.h:194
TVM_DECLARE_ATTRS(ProposalAttrs, "relay.attrs.ProposalAttrs")
Definition: vision.h:199
int rpn_min_size
Definition: vision.h:196
Array< IndexExpr > ratios
Definition: vision.h:191
double threshold
Definition: vision.h:193
int rpn_post_nms_top_n
Definition: vision.h:195
Attributes used in roi_align operators.
Definition: vision.h:133
double spatial_scale
Definition: vision.h:135
std::string layout
Definition: vision.h:137
TVM_DECLARE_ATTRS(ROIAlignAttrs, "relay.attrs.ROIAlignAttrs")
Definition: vision.h:139
int sample_ratio
Definition: vision.h:136
std::string mode
Definition: vision.h:138
Array< IndexExpr > pooled_size
Definition: vision.h:134
Attributes used in roi_pool operators.
Definition: vision.h:160
Array< IndexExpr > pooled_size
Definition: vision.h:161
TVM_DECLARE_ATTRS(ROIPoolAttrs, "relay.attrs.ROIPoolAttrs")
Definition: vision.h:164
std::string layout
Definition: vision.h:163
double spatial_scale
Definition: vision.h:162
Attributes used in yolo reorg operators.
Definition: vision.h:180
Integer stride
Definition: vision.h:181
TVM_DECLARE_ATTRS(YoloReorgAttrs, "relay.attrs.YoloReorgAttrs")
Definition: vision.h:183