• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright 2020-2021 Huawei Technologies Co., Ltd
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include "ops/prior_box.h"
18 #include "mindapi/base/shared_ptr.h"
19 #include "mindapi/ir/value.h"
20 #include "mindapi/src/helper.h"
21 #include "ops/op_name.h"
22 #include "ops/primitive_c.h"
23 #include "utils/log_adapter.h"
24 
25 namespace mindspore {
26 namespace ops {
27 MIND_API_OPERATOR_IMPL(PriorBox, BaseOperator);
set_min_sizes(const std::vector<int64_t> & min_sizes)28 void PriorBox::set_min_sizes(const std::vector<int64_t> &min_sizes) {
29   (void)this->AddAttr(kMinSizes, api::MakeValue(min_sizes));
30 }
31 
get_min_sizes() const32 std::vector<int64_t> PriorBox::get_min_sizes() const { return GetValue<std::vector<int64_t>>(GetAttr(kMinSizes)); }
33 
set_max_sizes(const std::vector<int64_t> & max_sizes)34 void PriorBox::set_max_sizes(const std::vector<int64_t> &max_sizes) {
35   (void)this->AddAttr(kMaxSizes, api::MakeValue(max_sizes));
36 }
37 
get_max_sizes() const38 std::vector<int64_t> PriorBox::get_max_sizes() const {
39   auto value_ptr = GetAttr(kMaxSizes);
40   return GetValue<std::vector<int64_t>>(value_ptr);
41 }
42 
set_aspect_ratios(const std::vector<float> & aspect_ratios)43 void PriorBox::set_aspect_ratios(const std::vector<float> &aspect_ratios) {
44   (void)this->AddAttr(kAspectRatios, api::MakeValue(aspect_ratios));
45 }
46 
get_aspect_ratios() const47 std::vector<float> PriorBox::get_aspect_ratios() const { return GetValue<std::vector<float>>(GetAttr(kAspectRatios)); }
48 
set_variances(const std::vector<float> & variances)49 void PriorBox::set_variances(const std::vector<float> &variances) {
50   (void)this->AddAttr(kVariances, api::MakeValue(variances));
51 }
52 
get_variances() const53 std::vector<float> PriorBox::get_variances() const {
54   auto value_ptr = GetAttr(kVariances);
55   return GetValue<std::vector<float>>(value_ptr);
56 }
57 
set_image_size_w(const int64_t image_size_w)58 void PriorBox::set_image_size_w(const int64_t image_size_w) {
59   (void)this->AddAttr(kImageSizeW, api::MakeValue(image_size_w));
60 }
61 
get_image_size_w() const62 int64_t PriorBox::get_image_size_w() const {
63   auto value_ptr = GetAttr(kImageSizeW);
64   return GetValue<int64_t>(value_ptr);
65 }
66 
set_image_size_h(const int64_t image_size_h)67 void PriorBox::set_image_size_h(const int64_t image_size_h) {
68   (void)this->AddAttr(kImageSizeH, api::MakeValue(image_size_h));
69 }
70 
get_image_size_h() const71 int64_t PriorBox::get_image_size_h() const {
72   auto value_ptr = GetAttr(kImageSizeH);
73   return GetValue<int64_t>(value_ptr);
74 }
75 
set_step_w(const float step_w)76 void PriorBox::set_step_w(const float step_w) { (void)this->AddAttr(kStepW, api::MakeValue(step_w)); }
77 
get_step_w() const78 float PriorBox::get_step_w() const {
79   auto value_ptr = GetAttr(kStepW);
80   return GetValue<float>(value_ptr);
81 }
82 
set_step_h(const float step_h)83 void PriorBox::set_step_h(const float step_h) { (void)this->AddAttr(kStepH, api::MakeValue(step_h)); }
84 
get_step_h() const85 float PriorBox::get_step_h() const {
86   auto value_ptr = GetAttr(kStepH);
87   return GetValue<float>(value_ptr);
88 }
89 
set_clip(const bool clip)90 void PriorBox::set_clip(const bool clip) { (void)this->AddAttr(kClip, api::MakeValue(clip)); }
91 
get_clip() const92 bool PriorBox::get_clip() const {
93   auto value_ptr = GetAttr(kClip);
94   return GetValue<bool>(value_ptr);
95 }
96 
set_flip(const bool flip)97 void PriorBox::set_flip(const bool flip) { (void)this->AddAttr(kFlip, api::MakeValue(flip)); }
98 
get_flip() const99 bool PriorBox::get_flip() const { return GetValue<bool>(GetAttr(kFlip)); }
100 
set_offset(const float offset)101 void PriorBox::set_offset(const float offset) { (void)this->AddAttr(kOffset, api::MakeValue(offset)); }
102 
get_offset() const103 float PriorBox::get_offset() const {
104   auto value_ptr = GetAttr(kOffset);
105   return GetValue<float>(value_ptr);
106 }
107 
Init(const std::vector<int64_t> & min_sizes,const std::vector<int64_t> & max_sizes,const std::vector<float> & aspect_ratios,const std::vector<float> & variances,const int64_t image_size_w,const int64_t image_size_h,const float step_w,const float step_h,const bool clip,const bool flip,const float offset)108 void PriorBox::Init(const std::vector<int64_t> &min_sizes, const std::vector<int64_t> &max_sizes,
109                     const std::vector<float> &aspect_ratios, const std::vector<float> &variances,
110                     const int64_t image_size_w, const int64_t image_size_h, const float step_w, const float step_h,
111                     const bool clip, const bool flip, const float offset) {
112   this->set_min_sizes(min_sizes);
113   this->set_max_sizes(max_sizes);
114   this->set_aspect_ratios(aspect_ratios);
115   this->set_variances(variances);
116   this->set_image_size_w(image_size_w);
117   this->set_image_size_h(image_size_h);
118   this->set_step_w(step_w);
119   this->set_step_h(step_h);
120   this->set_clip(clip);
121   this->set_flip(flip);
122   this->set_offset(offset);
123 }
124 
125 REGISTER_PRIMITIVE_C(kNamePriorBox, PriorBox);
126 }  // namespace ops
127 }  // namespace mindspore
128