BrainAI-1 commited on
Commit
095392e
ยท
verified ยท
1 Parent(s): c9e4dfd

Upload 14 files

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ data/emotions.mp4 filter=lfs diff=lfs merge=lfs -text
app.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import time
3
+ import cv2
4
+ from utils import emotion_detection_brainai as edb
5
+ emotion_model = edb.EmotionModel()
6
+
7
+ st.set_page_config(
8
+ page_title = "Emotion Detection",
9
+ page_icon = " :full_moon_with_face:",
10
+ layout = "wide")
11
+
12
+ st.title(":rainbow[๊ฐ์ • ์ธ์‹] :full_moon_with_face:")
13
+ st.sidebar.header("๋ฉ”๋‰ด")
14
+ source_radio = st.sidebar.radio("์„ ํƒํ•˜์„ธ์š”", ["IMAGE", "VIDEO", "WEBCAM"])
15
+
16
+ if source_radio == "IMAGE":
17
+ st.sidebar.header("์ด๋ฏธ์ง€ ํŒŒ์ผ ์—…๋กœ๋“œ")
18
+ img = st.sidebar.file_uploader("์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์„ ํƒํ•˜์„ธ์š”.", type=("jpg", "png"))
19
+ st.write(":green[์™ผ์ชฝ ๋ฉ”๋‰ด 'Browse files' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์„ ํƒํ•˜๋ฉด AI ์ถ”๋ก ์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.]" )
20
+ if img is not None:
21
+ result_img = emotion_model.process(img)
22
+ st.image(result_img)
23
+
24
+ else:
25
+ image_name = [ "anger", "happy", "neutral", "sad", "surprise",]
26
+ cols = st.columns(len(image_name))
27
+ for i, name in enumerate(image_name):
28
+ path = "data/" + name + ".jpg"
29
+ with cols[i]:
30
+ st.image(path, caption=name)
31
+
32
+ elif source_radio == "VIDEO":
33
+
34
+ st.sidebar.header("๋น„๋””์˜ค ํŒŒ์ผ ์—…๋กœ๋“œ")
35
+ input_video = st.sidebar.file_uploader("๋น„๋””์˜ค ํŒŒ์ผ์„ ์„ ํƒํ•˜์„ธ์š”..", type=("mp4"))
36
+ st.write(":green[์™ผ์ชฝ ๋ฉ”๋‰ด 'Browse files' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๋น„๋””์˜ค ํŒŒ์ผ์„ ์„ ํƒํ•˜๋ฉด AI ์ถ”๋ก ์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.]" )
37
+ if input_video is not None:
38
+ temp_file = edb.play_video(input_video)
39
+ st.video(temp_file)
40
+
41
+ else:
42
+ st.video("data/emotions.mp4")
43
+
44
+ elif source_radio == "WEBCAM":
45
+ video_capture = cv2.VideoCapture(0) # 0 usually refers to the default webcam
46
+ placeholder = st.empty()
47
+ stop_streaming = st.button("Stop Streaming") # No key needed here since it's only one button
48
+
49
+ while True:
50
+ ret, frame = video_capture.read() # Read a frame from the webcam
51
+
52
+ if not ret:
53
+ break # Break the loop if there's an issue with the webcam
54
+
55
+ result_img = emotion_model.process(frame)
56
+ result_img_rgb = cv2.cvtColor(result_img, cv2.COLOR_BGR2RGB)
57
+ placeholder.image(result_img_rgb)
58
+ time.sleep(0.03) # Approximately 30 frames per second. Too low values can overload the browser
59
+ if stop_streaming: # If the button is clicked, stop_streaming will be True
60
+ break
61
+
62
+ video_capture.release() # Release the webcam resources when done
63
+ st.write("Streaming stopped.")
64
+
65
+
66
+
data/anger.jpg ADDED
data/emotions.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a4e84fe138ea681bcb5410fe62e7a7054d956b251173e90a02e34df0cba36d1e
3
+ size 7624684
data/happy.jpg ADDED
data/neutral.jpg ADDED
data/sad.jpg ADDED
data/surprise.jpg ADDED
models/emotions-recognition-retail-0003.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bcb9b1a910fa3cd18a638bb1dbb0597c4ef7a080d1b83008c8e8c2c3c42b99dd
3
+ size 9930028
models/emotions-recognition-retail-0003.xml ADDED
@@ -0,0 +1,1496 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" ?>
2
+ <net name="0003_EmoNet_ResNet10" version="10">
3
+ <layers>
4
+ <layer id="0" name="data" type="Parameter" version="opset1">
5
+ <data element_type="f32" shape="1, 3, 64, 64"/>
6
+ <output>
7
+ <port id="0" names="data" precision="FP32">
8
+ <dim>1</dim>
9
+ <dim>3</dim>
10
+ <dim>64</dim>
11
+ <dim>64</dim>
12
+ </port>
13
+ </output>
14
+ </layer>
15
+ <layer id="1" name="data_mul_2237" type="Const" version="opset1">
16
+ <data element_type="f32" offset="0" shape="1, 3, 1, 1" size="12"/>
17
+ <output>
18
+ <port id="0" precision="FP32">
19
+ <dim>1</dim>
20
+ <dim>3</dim>
21
+ <dim>1</dim>
22
+ <dim>1</dim>
23
+ </port>
24
+ </output>
25
+ </layer>
26
+ <layer id="2" name="BatchNorm1/mean/Fused_Mul_" type="Multiply" version="opset1">
27
+ <data auto_broadcast="numpy"/>
28
+ <input>
29
+ <port id="0" precision="FP32">
30
+ <dim>1</dim>
31
+ <dim>3</dim>
32
+ <dim>64</dim>
33
+ <dim>64</dim>
34
+ </port>
35
+ <port id="1" precision="FP32">
36
+ <dim>1</dim>
37
+ <dim>3</dim>
38
+ <dim>1</dim>
39
+ <dim>1</dim>
40
+ </port>
41
+ </input>
42
+ <output>
43
+ <port id="2" precision="FP32">
44
+ <dim>1</dim>
45
+ <dim>3</dim>
46
+ <dim>64</dim>
47
+ <dim>64</dim>
48
+ </port>
49
+ </output>
50
+ </layer>
51
+ <layer id="3" name="data_add_2239" type="Const" version="opset1">
52
+ <data element_type="f32" offset="12" shape="1, 3, 1, 1" size="12"/>
53
+ <output>
54
+ <port id="0" precision="FP32">
55
+ <dim>1</dim>
56
+ <dim>3</dim>
57
+ <dim>1</dim>
58
+ <dim>1</dim>
59
+ </port>
60
+ </output>
61
+ </layer>
62
+ <layer id="4" name="BatchNorm1/variance/Fused_Add_" type="Add" version="opset1">
63
+ <data auto_broadcast="numpy"/>
64
+ <input>
65
+ <port id="0" precision="FP32">
66
+ <dim>1</dim>
67
+ <dim>3</dim>
68
+ <dim>64</dim>
69
+ <dim>64</dim>
70
+ </port>
71
+ <port id="1" precision="FP32">
72
+ <dim>1</dim>
73
+ <dim>3</dim>
74
+ <dim>1</dim>
75
+ <dim>1</dim>
76
+ </port>
77
+ </input>
78
+ <output>
79
+ <port id="2" names="data" precision="FP32">
80
+ <dim>1</dim>
81
+ <dim>3</dim>
82
+ <dim>64</dim>
83
+ <dim>64</dim>
84
+ </port>
85
+ </output>
86
+ </layer>
87
+ <layer id="5" name="BatchNorm2/mean/Fused_Mul__copy" type="Const" version="opset1">
88
+ <data element_type="f32" offset="24" shape="64, 3, 7, 7" size="37632"/>
89
+ <output>
90
+ <port id="0" precision="FP32">
91
+ <dim>64</dim>
92
+ <dim>3</dim>
93
+ <dim>7</dim>
94
+ <dim>7</dim>
95
+ </port>
96
+ </output>
97
+ </layer>
98
+ <layer id="6" name="Convolution1/WithoutBiases" type="Convolution" version="opset1">
99
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="3, 3" pads_end="3, 3" strides="2, 2"/>
100
+ <input>
101
+ <port id="0" precision="FP32">
102
+ <dim>1</dim>
103
+ <dim>3</dim>
104
+ <dim>64</dim>
105
+ <dim>64</dim>
106
+ </port>
107
+ <port id="1" precision="FP32">
108
+ <dim>64</dim>
109
+ <dim>3</dim>
110
+ <dim>7</dim>
111
+ <dim>7</dim>
112
+ </port>
113
+ </input>
114
+ <output>
115
+ <port id="2" precision="FP32">
116
+ <dim>1</dim>
117
+ <dim>64</dim>
118
+ <dim>32</dim>
119
+ <dim>32</dim>
120
+ </port>
121
+ </output>
122
+ </layer>
123
+ <layer id="7" name="data_add_22422247" type="Const" version="opset1">
124
+ <data element_type="f32" offset="37656" shape="1, 64, 1, 1" size="256"/>
125
+ <output>
126
+ <port id="0" precision="FP32">
127
+ <dim>1</dim>
128
+ <dim>64</dim>
129
+ <dim>1</dim>
130
+ <dim>1</dim>
131
+ </port>
132
+ </output>
133
+ </layer>
134
+ <layer id="8" name="Convolution1/Fused_Add_" type="Add" version="opset1">
135
+ <data auto_broadcast="numpy"/>
136
+ <input>
137
+ <port id="0" precision="FP32">
138
+ <dim>1</dim>
139
+ <dim>64</dim>
140
+ <dim>32</dim>
141
+ <dim>32</dim>
142
+ </port>
143
+ <port id="1" precision="FP32">
144
+ <dim>1</dim>
145
+ <dim>64</dim>
146
+ <dim>1</dim>
147
+ <dim>1</dim>
148
+ </port>
149
+ </input>
150
+ <output>
151
+ <port id="2" names="Convolution1" precision="FP32">
152
+ <dim>1</dim>
153
+ <dim>64</dim>
154
+ <dim>32</dim>
155
+ <dim>32</dim>
156
+ </port>
157
+ </output>
158
+ </layer>
159
+ <layer id="9" name="ReLU1" type="ReLU" version="opset1">
160
+ <input>
161
+ <port id="0" precision="FP32">
162
+ <dim>1</dim>
163
+ <dim>64</dim>
164
+ <dim>32</dim>
165
+ <dim>32</dim>
166
+ </port>
167
+ </input>
168
+ <output>
169
+ <port id="1" names="Convolution1,Dropout_ReLU1" precision="FP32">
170
+ <dim>1</dim>
171
+ <dim>64</dim>
172
+ <dim>32</dim>
173
+ <dim>32</dim>
174
+ </port>
175
+ </output>
176
+ </layer>
177
+ <layer id="10" name="Pooling1" type="MaxPool" version="opset1">
178
+ <data auto_pad="explicit" kernel="3, 3" pads_begin="0, 0" pads_end="0, 0" rounding_type="ceil" strides="2, 2"/>
179
+ <input>
180
+ <port id="0" precision="FP32">
181
+ <dim>1</dim>
182
+ <dim>64</dim>
183
+ <dim>32</dim>
184
+ <dim>32</dim>
185
+ </port>
186
+ </input>
187
+ <output>
188
+ <port id="1" names="Pooling1" precision="FP32">
189
+ <dim>1</dim>
190
+ <dim>64</dim>
191
+ <dim>16</dim>
192
+ <dim>16</dim>
193
+ </port>
194
+ </output>
195
+ </layer>
196
+ <layer id="11" name="BatchNorm3/mean/Fused_Mul__copy" type="Const" version="opset1">
197
+ <data element_type="f32" offset="37912" shape="64, 64, 3, 3" size="147456"/>
198
+ <output>
199
+ <port id="0" precision="FP32">
200
+ <dim>64</dim>
201
+ <dim>64</dim>
202
+ <dim>3</dim>
203
+ <dim>3</dim>
204
+ </port>
205
+ </output>
206
+ </layer>
207
+ <layer id="12" name="Convolution2" type="Convolution" version="opset1">
208
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="1, 1" pads_end="1, 1" strides="1, 1"/>
209
+ <input>
210
+ <port id="0" precision="FP32">
211
+ <dim>1</dim>
212
+ <dim>64</dim>
213
+ <dim>16</dim>
214
+ <dim>16</dim>
215
+ </port>
216
+ <port id="1" precision="FP32">
217
+ <dim>64</dim>
218
+ <dim>64</dim>
219
+ <dim>3</dim>
220
+ <dim>3</dim>
221
+ </port>
222
+ </input>
223
+ <output>
224
+ <port id="2" precision="FP32">
225
+ <dim>1</dim>
226
+ <dim>64</dim>
227
+ <dim>16</dim>
228
+ <dim>16</dim>
229
+ </port>
230
+ </output>
231
+ </layer>
232
+ <layer id="13" name="data_add_22502255" type="Const" version="opset1">
233
+ <data element_type="f32" offset="185368" shape="1, 64, 1, 1" size="256"/>
234
+ <output>
235
+ <port id="0" precision="FP32">
236
+ <dim>1</dim>
237
+ <dim>64</dim>
238
+ <dim>1</dim>
239
+ <dim>1</dim>
240
+ </port>
241
+ </output>
242
+ </layer>
243
+ <layer id="14" name="BatchNorm3/variance/Fused_Add_" type="Add" version="opset1">
244
+ <data auto_broadcast="numpy"/>
245
+ <input>
246
+ <port id="0" precision="FP32">
247
+ <dim>1</dim>
248
+ <dim>64</dim>
249
+ <dim>16</dim>
250
+ <dim>16</dim>
251
+ </port>
252
+ <port id="1" precision="FP32">
253
+ <dim>1</dim>
254
+ <dim>64</dim>
255
+ <dim>1</dim>
256
+ <dim>1</dim>
257
+ </port>
258
+ </input>
259
+ <output>
260
+ <port id="2" names="Convolution2" precision="FP32">
261
+ <dim>1</dim>
262
+ <dim>64</dim>
263
+ <dim>16</dim>
264
+ <dim>16</dim>
265
+ </port>
266
+ </output>
267
+ </layer>
268
+ <layer id="15" name="ReLU2" type="ReLU" version="opset1">
269
+ <input>
270
+ <port id="0" precision="FP32">
271
+ <dim>1</dim>
272
+ <dim>64</dim>
273
+ <dim>16</dim>
274
+ <dim>16</dim>
275
+ </port>
276
+ </input>
277
+ <output>
278
+ <port id="1" names="Convolution2" precision="FP32">
279
+ <dim>1</dim>
280
+ <dim>64</dim>
281
+ <dim>16</dim>
282
+ <dim>16</dim>
283
+ </port>
284
+ </output>
285
+ </layer>
286
+ <layer id="16" name="125" type="Const" version="opset1">
287
+ <data element_type="f32" offset="185624" shape="64, 64, 3, 3" size="147456"/>
288
+ <output>
289
+ <port id="0" precision="FP32">
290
+ <dim>64</dim>
291
+ <dim>64</dim>
292
+ <dim>3</dim>
293
+ <dim>3</dim>
294
+ </port>
295
+ </output>
296
+ </layer>
297
+ <layer id="17" name="Convolution3" type="Convolution" version="opset1">
298
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="1, 1" pads_end="1, 1" strides="1, 1"/>
299
+ <input>
300
+ <port id="0" precision="FP32">
301
+ <dim>1</dim>
302
+ <dim>64</dim>
303
+ <dim>16</dim>
304
+ <dim>16</dim>
305
+ </port>
306
+ <port id="1" precision="FP32">
307
+ <dim>64</dim>
308
+ <dim>64</dim>
309
+ <dim>3</dim>
310
+ <dim>3</dim>
311
+ </port>
312
+ </input>
313
+ <output>
314
+ <port id="2" names="Convolution3" precision="FP32">
315
+ <dim>1</dim>
316
+ <dim>64</dim>
317
+ <dim>16</dim>
318
+ <dim>16</dim>
319
+ </port>
320
+ </output>
321
+ </layer>
322
+ <layer id="18" name="Eltwise1" type="Add" version="opset1">
323
+ <data auto_broadcast="numpy"/>
324
+ <input>
325
+ <port id="0" precision="FP32">
326
+ <dim>1</dim>
327
+ <dim>64</dim>
328
+ <dim>16</dim>
329
+ <dim>16</dim>
330
+ </port>
331
+ <port id="1" precision="FP32">
332
+ <dim>1</dim>
333
+ <dim>64</dim>
334
+ <dim>16</dim>
335
+ <dim>16</dim>
336
+ </port>
337
+ </input>
338
+ <output>
339
+ <port id="2" names="Eltwise1" precision="FP32">
340
+ <dim>1</dim>
341
+ <dim>64</dim>
342
+ <dim>16</dim>
343
+ <dim>16</dim>
344
+ </port>
345
+ </output>
346
+ </layer>
347
+ <layer id="19" name="data_mul_22572261" type="Const" version="opset1">
348
+ <data element_type="f32" offset="333080" shape="1, 64, 1, 1" size="256"/>
349
+ <output>
350
+ <port id="0" precision="FP32">
351
+ <dim>1</dim>
352
+ <dim>64</dim>
353
+ <dim>1</dim>
354
+ <dim>1</dim>
355
+ </port>
356
+ </output>
357
+ </layer>
358
+ <layer id="20" name="BatchNorm4/mean/Fused_Mul_" type="Multiply" version="opset1">
359
+ <data auto_broadcast="numpy"/>
360
+ <input>
361
+ <port id="0" precision="FP32">
362
+ <dim>1</dim>
363
+ <dim>64</dim>
364
+ <dim>16</dim>
365
+ <dim>16</dim>
366
+ </port>
367
+ <port id="1" precision="FP32">
368
+ <dim>1</dim>
369
+ <dim>64</dim>
370
+ <dim>1</dim>
371
+ <dim>1</dim>
372
+ </port>
373
+ </input>
374
+ <output>
375
+ <port id="2" precision="FP32">
376
+ <dim>1</dim>
377
+ <dim>64</dim>
378
+ <dim>16</dim>
379
+ <dim>16</dim>
380
+ </port>
381
+ </output>
382
+ </layer>
383
+ <layer id="21" name="data_add_22582263" type="Const" version="opset1">
384
+ <data element_type="f32" offset="333336" shape="1, 64, 1, 1" size="256"/>
385
+ <output>
386
+ <port id="0" precision="FP32">
387
+ <dim>1</dim>
388
+ <dim>64</dim>
389
+ <dim>1</dim>
390
+ <dim>1</dim>
391
+ </port>
392
+ </output>
393
+ </layer>
394
+ <layer id="22" name="BatchNorm4/variance/Fused_Add_" type="Add" version="opset1">
395
+ <data auto_broadcast="numpy"/>
396
+ <input>
397
+ <port id="0" precision="FP32">
398
+ <dim>1</dim>
399
+ <dim>64</dim>
400
+ <dim>16</dim>
401
+ <dim>16</dim>
402
+ </port>
403
+ <port id="1" precision="FP32">
404
+ <dim>1</dim>
405
+ <dim>64</dim>
406
+ <dim>1</dim>
407
+ <dim>1</dim>
408
+ </port>
409
+ </input>
410
+ <output>
411
+ <port id="2" names="Eltwise1" precision="FP32">
412
+ <dim>1</dim>
413
+ <dim>64</dim>
414
+ <dim>16</dim>
415
+ <dim>16</dim>
416
+ </port>
417
+ </output>
418
+ </layer>
419
+ <layer id="23" name="ReLU3" type="ReLU" version="opset1">
420
+ <input>
421
+ <port id="0" precision="FP32">
422
+ <dim>1</dim>
423
+ <dim>64</dim>
424
+ <dim>16</dim>
425
+ <dim>16</dim>
426
+ </port>
427
+ </input>
428
+ <output>
429
+ <port id="1" names="Dropout_ReLU3,Eltwise1" precision="FP32">
430
+ <dim>1</dim>
431
+ <dim>64</dim>
432
+ <dim>16</dim>
433
+ <dim>16</dim>
434
+ </port>
435
+ </output>
436
+ </layer>
437
+ <layer id="24" name="BatchNorm5/mean/Fused_Mul__copy" type="Const" version="opset1">
438
+ <data element_type="f32" offset="333592" shape="128, 64, 3, 3" size="294912"/>
439
+ <output>
440
+ <port id="0" precision="FP32">
441
+ <dim>128</dim>
442
+ <dim>64</dim>
443
+ <dim>3</dim>
444
+ <dim>3</dim>
445
+ </port>
446
+ </output>
447
+ </layer>
448
+ <layer id="25" name="Convolution4" type="Convolution" version="opset1">
449
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="1, 1" pads_end="1, 1" strides="2, 2"/>
450
+ <input>
451
+ <port id="0" precision="FP32">
452
+ <dim>1</dim>
453
+ <dim>64</dim>
454
+ <dim>16</dim>
455
+ <dim>16</dim>
456
+ </port>
457
+ <port id="1" precision="FP32">
458
+ <dim>128</dim>
459
+ <dim>64</dim>
460
+ <dim>3</dim>
461
+ <dim>3</dim>
462
+ </port>
463
+ </input>
464
+ <output>
465
+ <port id="2" precision="FP32">
466
+ <dim>1</dim>
467
+ <dim>128</dim>
468
+ <dim>8</dim>
469
+ <dim>8</dim>
470
+ </port>
471
+ </output>
472
+ </layer>
473
+ <layer id="26" name="data_add_22662271" type="Const" version="opset1">
474
+ <data element_type="f32" offset="628504" shape="1, 128, 1, 1" size="512"/>
475
+ <output>
476
+ <port id="0" precision="FP32">
477
+ <dim>1</dim>
478
+ <dim>128</dim>
479
+ <dim>1</dim>
480
+ <dim>1</dim>
481
+ </port>
482
+ </output>
483
+ </layer>
484
+ <layer id="27" name="BatchNorm5/variance/Fused_Add_" type="Add" version="opset1">
485
+ <data auto_broadcast="numpy"/>
486
+ <input>
487
+ <port id="0" precision="FP32">
488
+ <dim>1</dim>
489
+ <dim>128</dim>
490
+ <dim>8</dim>
491
+ <dim>8</dim>
492
+ </port>
493
+ <port id="1" precision="FP32">
494
+ <dim>1</dim>
495
+ <dim>128</dim>
496
+ <dim>1</dim>
497
+ <dim>1</dim>
498
+ </port>
499
+ </input>
500
+ <output>
501
+ <port id="2" names="Convolution4" precision="FP32">
502
+ <dim>1</dim>
503
+ <dim>128</dim>
504
+ <dim>8</dim>
505
+ <dim>8</dim>
506
+ </port>
507
+ </output>
508
+ </layer>
509
+ <layer id="28" name="ReLU4" type="ReLU" version="opset1">
510
+ <input>
511
+ <port id="0" precision="FP32">
512
+ <dim>1</dim>
513
+ <dim>128</dim>
514
+ <dim>8</dim>
515
+ <dim>8</dim>
516
+ </port>
517
+ </input>
518
+ <output>
519
+ <port id="1" names="Convolution4" precision="FP32">
520
+ <dim>1</dim>
521
+ <dim>128</dim>
522
+ <dim>8</dim>
523
+ <dim>8</dim>
524
+ </port>
525
+ </output>
526
+ </layer>
527
+ <layer id="29" name="114" type="Const" version="opset1">
528
+ <data element_type="f32" offset="629016" shape="128, 128, 3, 3" size="589824"/>
529
+ <output>
530
+ <port id="0" precision="FP32">
531
+ <dim>128</dim>
532
+ <dim>128</dim>
533
+ <dim>3</dim>
534
+ <dim>3</dim>
535
+ </port>
536
+ </output>
537
+ </layer>
538
+ <layer id="30" name="Convolution5" type="Convolution" version="opset1">
539
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="1, 1" pads_end="1, 1" strides="1, 1"/>
540
+ <input>
541
+ <port id="0" precision="FP32">
542
+ <dim>1</dim>
543
+ <dim>128</dim>
544
+ <dim>8</dim>
545
+ <dim>8</dim>
546
+ </port>
547
+ <port id="1" precision="FP32">
548
+ <dim>128</dim>
549
+ <dim>128</dim>
550
+ <dim>3</dim>
551
+ <dim>3</dim>
552
+ </port>
553
+ </input>
554
+ <output>
555
+ <port id="2" names="Convolution5" precision="FP32">
556
+ <dim>1</dim>
557
+ <dim>128</dim>
558
+ <dim>8</dim>
559
+ <dim>8</dim>
560
+ </port>
561
+ </output>
562
+ </layer>
563
+ <layer id="31" name="65" type="Const" version="opset1">
564
+ <data element_type="f32" offset="1218840" shape="128, 64, 1, 1" size="32768"/>
565
+ <output>
566
+ <port id="0" precision="FP32">
567
+ <dim>128</dim>
568
+ <dim>64</dim>
569
+ <dim>1</dim>
570
+ <dim>1</dim>
571
+ </port>
572
+ </output>
573
+ </layer>
574
+ <layer id="32" name="Convolution6" type="Convolution" version="opset1">
575
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="0, 0" pads_end="0, 0" strides="2, 2"/>
576
+ <input>
577
+ <port id="0" precision="FP32">
578
+ <dim>1</dim>
579
+ <dim>64</dim>
580
+ <dim>16</dim>
581
+ <dim>16</dim>
582
+ </port>
583
+ <port id="1" precision="FP32">
584
+ <dim>128</dim>
585
+ <dim>64</dim>
586
+ <dim>1</dim>
587
+ <dim>1</dim>
588
+ </port>
589
+ </input>
590
+ <output>
591
+ <port id="2" names="Convolution6" precision="FP32">
592
+ <dim>1</dim>
593
+ <dim>128</dim>
594
+ <dim>8</dim>
595
+ <dim>8</dim>
596
+ </port>
597
+ </output>
598
+ </layer>
599
+ <layer id="33" name="Eltwise2" type="Add" version="opset1">
600
+ <data auto_broadcast="numpy"/>
601
+ <input>
602
+ <port id="0" precision="FP32">
603
+ <dim>1</dim>
604
+ <dim>128</dim>
605
+ <dim>8</dim>
606
+ <dim>8</dim>
607
+ </port>
608
+ <port id="1" precision="FP32">
609
+ <dim>1</dim>
610
+ <dim>128</dim>
611
+ <dim>8</dim>
612
+ <dim>8</dim>
613
+ </port>
614
+ </input>
615
+ <output>
616
+ <port id="2" names="Eltwise2" precision="FP32">
617
+ <dim>1</dim>
618
+ <dim>128</dim>
619
+ <dim>8</dim>
620
+ <dim>8</dim>
621
+ </port>
622
+ </output>
623
+ </layer>
624
+ <layer id="34" name="data_mul_22732277" type="Const" version="opset1">
625
+ <data element_type="f32" offset="1251608" shape="1, 128, 1, 1" size="512"/>
626
+ <output>
627
+ <port id="0" precision="FP32">
628
+ <dim>1</dim>
629
+ <dim>128</dim>
630
+ <dim>1</dim>
631
+ <dim>1</dim>
632
+ </port>
633
+ </output>
634
+ </layer>
635
+ <layer id="35" name="BatchNorm6/mean/Fused_Mul_" type="Multiply" version="opset1">
636
+ <data auto_broadcast="numpy"/>
637
+ <input>
638
+ <port id="0" precision="FP32">
639
+ <dim>1</dim>
640
+ <dim>128</dim>
641
+ <dim>8</dim>
642
+ <dim>8</dim>
643
+ </port>
644
+ <port id="1" precision="FP32">
645
+ <dim>1</dim>
646
+ <dim>128</dim>
647
+ <dim>1</dim>
648
+ <dim>1</dim>
649
+ </port>
650
+ </input>
651
+ <output>
652
+ <port id="2" precision="FP32">
653
+ <dim>1</dim>
654
+ <dim>128</dim>
655
+ <dim>8</dim>
656
+ <dim>8</dim>
657
+ </port>
658
+ </output>
659
+ </layer>
660
+ <layer id="36" name="data_add_22742279" type="Const" version="opset1">
661
+ <data element_type="f32" offset="1252120" shape="1, 128, 1, 1" size="512"/>
662
+ <output>
663
+ <port id="0" precision="FP32">
664
+ <dim>1</dim>
665
+ <dim>128</dim>
666
+ <dim>1</dim>
667
+ <dim>1</dim>
668
+ </port>
669
+ </output>
670
+ </layer>
671
+ <layer id="37" name="BatchNorm6/variance/Fused_Add_" type="Add" version="opset1">
672
+ <data auto_broadcast="numpy"/>
673
+ <input>
674
+ <port id="0" precision="FP32">
675
+ <dim>1</dim>
676
+ <dim>128</dim>
677
+ <dim>8</dim>
678
+ <dim>8</dim>
679
+ </port>
680
+ <port id="1" precision="FP32">
681
+ <dim>1</dim>
682
+ <dim>128</dim>
683
+ <dim>1</dim>
684
+ <dim>1</dim>
685
+ </port>
686
+ </input>
687
+ <output>
688
+ <port id="2" names="Eltwise2" precision="FP32">
689
+ <dim>1</dim>
690
+ <dim>128</dim>
691
+ <dim>8</dim>
692
+ <dim>8</dim>
693
+ </port>
694
+ </output>
695
+ </layer>
696
+ <layer id="38" name="ReLU5" type="ReLU" version="opset1">
697
+ <input>
698
+ <port id="0" precision="FP32">
699
+ <dim>1</dim>
700
+ <dim>128</dim>
701
+ <dim>8</dim>
702
+ <dim>8</dim>
703
+ </port>
704
+ </input>
705
+ <output>
706
+ <port id="1" names="Dropout_ReLU5,Eltwise2" precision="FP32">
707
+ <dim>1</dim>
708
+ <dim>128</dim>
709
+ <dim>8</dim>
710
+ <dim>8</dim>
711
+ </port>
712
+ </output>
713
+ </layer>
714
+ <layer id="39" name="BatchNorm7/mean/Fused_Mul__copy" type="Const" version="opset1">
715
+ <data element_type="f32" offset="1252632" shape="256, 128, 3, 3" size="1179648"/>
716
+ <output>
717
+ <port id="0" precision="FP32">
718
+ <dim>256</dim>
719
+ <dim>128</dim>
720
+ <dim>3</dim>
721
+ <dim>3</dim>
722
+ </port>
723
+ </output>
724
+ </layer>
725
+ <layer id="40" name="Convolution7" type="Convolution" version="opset1">
726
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="1, 1" pads_end="1, 1" strides="2, 2"/>
727
+ <input>
728
+ <port id="0" precision="FP32">
729
+ <dim>1</dim>
730
+ <dim>128</dim>
731
+ <dim>8</dim>
732
+ <dim>8</dim>
733
+ </port>
734
+ <port id="1" precision="FP32">
735
+ <dim>256</dim>
736
+ <dim>128</dim>
737
+ <dim>3</dim>
738
+ <dim>3</dim>
739
+ </port>
740
+ </input>
741
+ <output>
742
+ <port id="2" precision="FP32">
743
+ <dim>1</dim>
744
+ <dim>256</dim>
745
+ <dim>4</dim>
746
+ <dim>4</dim>
747
+ </port>
748
+ </output>
749
+ </layer>
750
+ <layer id="41" name="data_add_22822287" type="Const" version="opset1">
751
+ <data element_type="f32" offset="2432280" shape="1, 256, 1, 1" size="1024"/>
752
+ <output>
753
+ <port id="0" precision="FP32">
754
+ <dim>1</dim>
755
+ <dim>256</dim>
756
+ <dim>1</dim>
757
+ <dim>1</dim>
758
+ </port>
759
+ </output>
760
+ </layer>
761
+ <layer id="42" name="BatchNorm7/variance/Fused_Add_" type="Add" version="opset1">
762
+ <data auto_broadcast="numpy"/>
763
+ <input>
764
+ <port id="0" precision="FP32">
765
+ <dim>1</dim>
766
+ <dim>256</dim>
767
+ <dim>4</dim>
768
+ <dim>4</dim>
769
+ </port>
770
+ <port id="1" precision="FP32">
771
+ <dim>1</dim>
772
+ <dim>256</dim>
773
+ <dim>1</dim>
774
+ <dim>1</dim>
775
+ </port>
776
+ </input>
777
+ <output>
778
+ <port id="2" names="Convolution7" precision="FP32">
779
+ <dim>1</dim>
780
+ <dim>256</dim>
781
+ <dim>4</dim>
782
+ <dim>4</dim>
783
+ </port>
784
+ </output>
785
+ </layer>
786
+ <layer id="43" name="ReLU6" type="ReLU" version="opset1">
787
+ <input>
788
+ <port id="0" precision="FP32">
789
+ <dim>1</dim>
790
+ <dim>256</dim>
791
+ <dim>4</dim>
792
+ <dim>4</dim>
793
+ </port>
794
+ </input>
795
+ <output>
796
+ <port id="1" names="Convolution7" precision="FP32">
797
+ <dim>1</dim>
798
+ <dim>256</dim>
799
+ <dim>4</dim>
800
+ <dim>4</dim>
801
+ </port>
802
+ </output>
803
+ </layer>
804
+ <layer id="44" name="91" type="Const" version="opset1">
805
+ <data element_type="f32" offset="2433304" shape="256, 256, 3, 3" size="2359296"/>
806
+ <output>
807
+ <port id="0" precision="FP32">
808
+ <dim>256</dim>
809
+ <dim>256</dim>
810
+ <dim>3</dim>
811
+ <dim>3</dim>
812
+ </port>
813
+ </output>
814
+ </layer>
815
+ <layer id="45" name="Convolution8" type="Convolution" version="opset1">
816
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="1, 1" pads_end="1, 1" strides="1, 1"/>
817
+ <input>
818
+ <port id="0" precision="FP32">
819
+ <dim>1</dim>
820
+ <dim>256</dim>
821
+ <dim>4</dim>
822
+ <dim>4</dim>
823
+ </port>
824
+ <port id="1" precision="FP32">
825
+ <dim>256</dim>
826
+ <dim>256</dim>
827
+ <dim>3</dim>
828
+ <dim>3</dim>
829
+ </port>
830
+ </input>
831
+ <output>
832
+ <port id="2" names="Convolution8" precision="FP32">
833
+ <dim>1</dim>
834
+ <dim>256</dim>
835
+ <dim>4</dim>
836
+ <dim>4</dim>
837
+ </port>
838
+ </output>
839
+ </layer>
840
+ <layer id="46" name="89" type="Const" version="opset1">
841
+ <data element_type="f32" offset="4792600" shape="256, 128, 1, 1" size="131072"/>
842
+ <output>
843
+ <port id="0" precision="FP32">
844
+ <dim>256</dim>
845
+ <dim>128</dim>
846
+ <dim>1</dim>
847
+ <dim>1</dim>
848
+ </port>
849
+ </output>
850
+ </layer>
851
+ <layer id="47" name="Convolution9" type="Convolution" version="opset1">
852
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="0, 0" pads_end="0, 0" strides="2, 2"/>
853
+ <input>
854
+ <port id="0" precision="FP32">
855
+ <dim>1</dim>
856
+ <dim>128</dim>
857
+ <dim>8</dim>
858
+ <dim>8</dim>
859
+ </port>
860
+ <port id="1" precision="FP32">
861
+ <dim>256</dim>
862
+ <dim>128</dim>
863
+ <dim>1</dim>
864
+ <dim>1</dim>
865
+ </port>
866
+ </input>
867
+ <output>
868
+ <port id="2" names="Convolution9" precision="FP32">
869
+ <dim>1</dim>
870
+ <dim>256</dim>
871
+ <dim>4</dim>
872
+ <dim>4</dim>
873
+ </port>
874
+ </output>
875
+ </layer>
876
+ <layer id="48" name="Eltwise3" type="Add" version="opset1">
877
+ <data auto_broadcast="numpy"/>
878
+ <input>
879
+ <port id="0" precision="FP32">
880
+ <dim>1</dim>
881
+ <dim>256</dim>
882
+ <dim>4</dim>
883
+ <dim>4</dim>
884
+ </port>
885
+ <port id="1" precision="FP32">
886
+ <dim>1</dim>
887
+ <dim>256</dim>
888
+ <dim>4</dim>
889
+ <dim>4</dim>
890
+ </port>
891
+ </input>
892
+ <output>
893
+ <port id="2" names="Eltwise3" precision="FP32">
894
+ <dim>1</dim>
895
+ <dim>256</dim>
896
+ <dim>4</dim>
897
+ <dim>4</dim>
898
+ </port>
899
+ </output>
900
+ </layer>
901
+ <layer id="49" name="data_mul_22892293" type="Const" version="opset1">
902
+ <data element_type="f32" offset="4923672" shape="1, 256, 1, 1" size="1024"/>
903
+ <output>
904
+ <port id="0" precision="FP32">
905
+ <dim>1</dim>
906
+ <dim>256</dim>
907
+ <dim>1</dim>
908
+ <dim>1</dim>
909
+ </port>
910
+ </output>
911
+ </layer>
912
+ <layer id="50" name="BatchNorm8/mean/Fused_Mul_" type="Multiply" version="opset1">
913
+ <data auto_broadcast="numpy"/>
914
+ <input>
915
+ <port id="0" precision="FP32">
916
+ <dim>1</dim>
917
+ <dim>256</dim>
918
+ <dim>4</dim>
919
+ <dim>4</dim>
920
+ </port>
921
+ <port id="1" precision="FP32">
922
+ <dim>1</dim>
923
+ <dim>256</dim>
924
+ <dim>1</dim>
925
+ <dim>1</dim>
926
+ </port>
927
+ </input>
928
+ <output>
929
+ <port id="2" precision="FP32">
930
+ <dim>1</dim>
931
+ <dim>256</dim>
932
+ <dim>4</dim>
933
+ <dim>4</dim>
934
+ </port>
935
+ </output>
936
+ </layer>
937
+ <layer id="51" name="data_add_22902295" type="Const" version="opset1">
938
+ <data element_type="f32" offset="4924696" shape="1, 256, 1, 1" size="1024"/>
939
+ <output>
940
+ <port id="0" precision="FP32">
941
+ <dim>1</dim>
942
+ <dim>256</dim>
943
+ <dim>1</dim>
944
+ <dim>1</dim>
945
+ </port>
946
+ </output>
947
+ </layer>
948
+ <layer id="52" name="BatchNorm8/variance/Fused_Add_" type="Add" version="opset1">
949
+ <data auto_broadcast="numpy"/>
950
+ <input>
951
+ <port id="0" precision="FP32">
952
+ <dim>1</dim>
953
+ <dim>256</dim>
954
+ <dim>4</dim>
955
+ <dim>4</dim>
956
+ </port>
957
+ <port id="1" precision="FP32">
958
+ <dim>1</dim>
959
+ <dim>256</dim>
960
+ <dim>1</dim>
961
+ <dim>1</dim>
962
+ </port>
963
+ </input>
964
+ <output>
965
+ <port id="2" names="Eltwise3" precision="FP32">
966
+ <dim>1</dim>
967
+ <dim>256</dim>
968
+ <dim>4</dim>
969
+ <dim>4</dim>
970
+ </port>
971
+ </output>
972
+ </layer>
973
+ <layer id="53" name="ReLU7" type="ReLU" version="opset1">
974
+ <input>
975
+ <port id="0" precision="FP32">
976
+ <dim>1</dim>
977
+ <dim>256</dim>
978
+ <dim>4</dim>
979
+ <dim>4</dim>
980
+ </port>
981
+ </input>
982
+ <output>
983
+ <port id="1" names="Dropout_ReLU7,Eltwise3" precision="FP32">
984
+ <dim>1</dim>
985
+ <dim>256</dim>
986
+ <dim>4</dim>
987
+ <dim>4</dim>
988
+ </port>
989
+ </output>
990
+ </layer>
991
+ <layer id="54" name="BatchNorm9/mean/Fused_Mul__copy" type="Const" version="opset1">
992
+ <data element_type="f32" offset="4925720" shape="256, 256, 3, 3" size="2359296"/>
993
+ <output>
994
+ <port id="0" precision="FP32">
995
+ <dim>256</dim>
996
+ <dim>256</dim>
997
+ <dim>3</dim>
998
+ <dim>3</dim>
999
+ </port>
1000
+ </output>
1001
+ </layer>
1002
+ <layer id="55" name="Convolution10" type="Convolution" version="opset1">
1003
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="1, 1" pads_end="1, 1" strides="2, 2"/>
1004
+ <input>
1005
+ <port id="0" precision="FP32">
1006
+ <dim>1</dim>
1007
+ <dim>256</dim>
1008
+ <dim>4</dim>
1009
+ <dim>4</dim>
1010
+ </port>
1011
+ <port id="1" precision="FP32">
1012
+ <dim>256</dim>
1013
+ <dim>256</dim>
1014
+ <dim>3</dim>
1015
+ <dim>3</dim>
1016
+ </port>
1017
+ </input>
1018
+ <output>
1019
+ <port id="2" precision="FP32">
1020
+ <dim>1</dim>
1021
+ <dim>256</dim>
1022
+ <dim>2</dim>
1023
+ <dim>2</dim>
1024
+ </port>
1025
+ </output>
1026
+ </layer>
1027
+ <layer id="56" name="data_add_22982303" type="Const" version="opset1">
1028
+ <data element_type="f32" offset="7285016" shape="1, 256, 1, 1" size="1024"/>
1029
+ <output>
1030
+ <port id="0" precision="FP32">
1031
+ <dim>1</dim>
1032
+ <dim>256</dim>
1033
+ <dim>1</dim>
1034
+ <dim>1</dim>
1035
+ </port>
1036
+ </output>
1037
+ </layer>
1038
+ <layer id="57" name="BatchNorm9/variance/Fused_Add_" type="Add" version="opset1">
1039
+ <data auto_broadcast="numpy"/>
1040
+ <input>
1041
+ <port id="0" precision="FP32">
1042
+ <dim>1</dim>
1043
+ <dim>256</dim>
1044
+ <dim>2</dim>
1045
+ <dim>2</dim>
1046
+ </port>
1047
+ <port id="1" precision="FP32">
1048
+ <dim>1</dim>
1049
+ <dim>256</dim>
1050
+ <dim>1</dim>
1051
+ <dim>1</dim>
1052
+ </port>
1053
+ </input>
1054
+ <output>
1055
+ <port id="2" names="Convolution10" precision="FP32">
1056
+ <dim>1</dim>
1057
+ <dim>256</dim>
1058
+ <dim>2</dim>
1059
+ <dim>2</dim>
1060
+ </port>
1061
+ </output>
1062
+ </layer>
1063
+ <layer id="58" name="ReLU8" type="ReLU" version="opset1">
1064
+ <input>
1065
+ <port id="0" precision="FP32">
1066
+ <dim>1</dim>
1067
+ <dim>256</dim>
1068
+ <dim>2</dim>
1069
+ <dim>2</dim>
1070
+ </port>
1071
+ </input>
1072
+ <output>
1073
+ <port id="1" names="Convolution10" precision="FP32">
1074
+ <dim>1</dim>
1075
+ <dim>256</dim>
1076
+ <dim>2</dim>
1077
+ <dim>2</dim>
1078
+ </port>
1079
+ </output>
1080
+ </layer>
1081
+ <layer id="59" name="66" type="Const" version="opset1">
1082
+ <data element_type="f32" offset="7286040" shape="256, 256, 3, 3" size="2359296"/>
1083
+ <output>
1084
+ <port id="0" precision="FP32">
1085
+ <dim>256</dim>
1086
+ <dim>256</dim>
1087
+ <dim>3</dim>
1088
+ <dim>3</dim>
1089
+ </port>
1090
+ </output>
1091
+ </layer>
1092
+ <layer id="60" name="Convolution11" type="Convolution" version="opset1">
1093
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="1, 1" pads_end="1, 1" strides="1, 1"/>
1094
+ <input>
1095
+ <port id="0" precision="FP32">
1096
+ <dim>1</dim>
1097
+ <dim>256</dim>
1098
+ <dim>2</dim>
1099
+ <dim>2</dim>
1100
+ </port>
1101
+ <port id="1" precision="FP32">
1102
+ <dim>256</dim>
1103
+ <dim>256</dim>
1104
+ <dim>3</dim>
1105
+ <dim>3</dim>
1106
+ </port>
1107
+ </input>
1108
+ <output>
1109
+ <port id="2" names="Convolution11" precision="FP32">
1110
+ <dim>1</dim>
1111
+ <dim>256</dim>
1112
+ <dim>2</dim>
1113
+ <dim>2</dim>
1114
+ </port>
1115
+ </output>
1116
+ </layer>
1117
+ <layer id="61" name="97" type="Const" version="opset1">
1118
+ <data element_type="f32" offset="9645336" shape="256, 256, 1, 1" size="262144"/>
1119
+ <output>
1120
+ <port id="0" precision="FP32">
1121
+ <dim>256</dim>
1122
+ <dim>256</dim>
1123
+ <dim>1</dim>
1124
+ <dim>1</dim>
1125
+ </port>
1126
+ </output>
1127
+ </layer>
1128
+ <layer id="62" name="Convolution12" type="Convolution" version="opset1">
1129
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="0, 0" pads_end="0, 0" strides="2, 2"/>
1130
+ <input>
1131
+ <port id="0" precision="FP32">
1132
+ <dim>1</dim>
1133
+ <dim>256</dim>
1134
+ <dim>4</dim>
1135
+ <dim>4</dim>
1136
+ </port>
1137
+ <port id="1" precision="FP32">
1138
+ <dim>256</dim>
1139
+ <dim>256</dim>
1140
+ <dim>1</dim>
1141
+ <dim>1</dim>
1142
+ </port>
1143
+ </input>
1144
+ <output>
1145
+ <port id="2" names="Convolution12" precision="FP32">
1146
+ <dim>1</dim>
1147
+ <dim>256</dim>
1148
+ <dim>2</dim>
1149
+ <dim>2</dim>
1150
+ </port>
1151
+ </output>
1152
+ </layer>
1153
+ <layer id="63" name="Eltwise4" type="Add" version="opset1">
1154
+ <data auto_broadcast="numpy"/>
1155
+ <input>
1156
+ <port id="0" precision="FP32">
1157
+ <dim>1</dim>
1158
+ <dim>256</dim>
1159
+ <dim>2</dim>
1160
+ <dim>2</dim>
1161
+ </port>
1162
+ <port id="1" precision="FP32">
1163
+ <dim>1</dim>
1164
+ <dim>256</dim>
1165
+ <dim>2</dim>
1166
+ <dim>2</dim>
1167
+ </port>
1168
+ </input>
1169
+ <output>
1170
+ <port id="2" names="Eltwise4" precision="FP32">
1171
+ <dim>1</dim>
1172
+ <dim>256</dim>
1173
+ <dim>2</dim>
1174
+ <dim>2</dim>
1175
+ </port>
1176
+ </output>
1177
+ </layer>
1178
+ <layer id="64" name="data_mul_23052309" type="Const" version="opset1">
1179
+ <data element_type="f32" offset="9907480" shape="1, 256, 1, 1" size="1024"/>
1180
+ <output>
1181
+ <port id="0" precision="FP32">
1182
+ <dim>1</dim>
1183
+ <dim>256</dim>
1184
+ <dim>1</dim>
1185
+ <dim>1</dim>
1186
+ </port>
1187
+ </output>
1188
+ </layer>
1189
+ <layer id="65" name="BatchNorm10/mean/Fused_Mul_" type="Multiply" version="opset1">
1190
+ <data auto_broadcast="numpy"/>
1191
+ <input>
1192
+ <port id="0" precision="FP32">
1193
+ <dim>1</dim>
1194
+ <dim>256</dim>
1195
+ <dim>2</dim>
1196
+ <dim>2</dim>
1197
+ </port>
1198
+ <port id="1" precision="FP32">
1199
+ <dim>1</dim>
1200
+ <dim>256</dim>
1201
+ <dim>1</dim>
1202
+ <dim>1</dim>
1203
+ </port>
1204
+ </input>
1205
+ <output>
1206
+ <port id="2" precision="FP32">
1207
+ <dim>1</dim>
1208
+ <dim>256</dim>
1209
+ <dim>2</dim>
1210
+ <dim>2</dim>
1211
+ </port>
1212
+ </output>
1213
+ </layer>
1214
+ <layer id="66" name="data_add_23062311" type="Const" version="opset1">
1215
+ <data element_type="f32" offset="9908504" shape="1, 256, 1, 1" size="1024"/>
1216
+ <output>
1217
+ <port id="0" precision="FP32">
1218
+ <dim>1</dim>
1219
+ <dim>256</dim>
1220
+ <dim>1</dim>
1221
+ <dim>1</dim>
1222
+ </port>
1223
+ </output>
1224
+ </layer>
1225
+ <layer id="67" name="BatchNorm10/variance/Fused_Add_" type="Add" version="opset1">
1226
+ <data auto_broadcast="numpy"/>
1227
+ <input>
1228
+ <port id="0" precision="FP32">
1229
+ <dim>1</dim>
1230
+ <dim>256</dim>
1231
+ <dim>2</dim>
1232
+ <dim>2</dim>
1233
+ </port>
1234
+ <port id="1" precision="FP32">
1235
+ <dim>1</dim>
1236
+ <dim>256</dim>
1237
+ <dim>1</dim>
1238
+ <dim>1</dim>
1239
+ </port>
1240
+ </input>
1241
+ <output>
1242
+ <port id="2" names="Eltwise4" precision="FP32">
1243
+ <dim>1</dim>
1244
+ <dim>256</dim>
1245
+ <dim>2</dim>
1246
+ <dim>2</dim>
1247
+ </port>
1248
+ </output>
1249
+ </layer>
1250
+ <layer id="68" name="ReLU9" type="ReLU" version="opset1">
1251
+ <input>
1252
+ <port id="0" precision="FP32">
1253
+ <dim>1</dim>
1254
+ <dim>256</dim>
1255
+ <dim>2</dim>
1256
+ <dim>2</dim>
1257
+ </port>
1258
+ </input>
1259
+ <output>
1260
+ <port id="1" names="Dropout_ReLU9,Eltwise4" precision="FP32">
1261
+ <dim>1</dim>
1262
+ <dim>256</dim>
1263
+ <dim>2</dim>
1264
+ <dim>2</dim>
1265
+ </port>
1266
+ </output>
1267
+ </layer>
1268
+ <layer id="69" name="94" type="Const" version="opset1">
1269
+ <data element_type="f32" offset="9909528" shape="5, 256, 2, 2" size="20480"/>
1270
+ <output>
1271
+ <port id="0" precision="FP32">
1272
+ <dim>5</dim>
1273
+ <dim>256</dim>
1274
+ <dim>2</dim>
1275
+ <dim>2</dim>
1276
+ </port>
1277
+ </output>
1278
+ </layer>
1279
+ <layer id="70" name="emotion5_conv1/WithoutBiases" type="Convolution" version="opset1">
1280
+ <data auto_pad="explicit" dilations="1, 1" pads_begin="0, 0" pads_end="0, 0" strides="1, 1"/>
1281
+ <input>
1282
+ <port id="0" precision="FP32">
1283
+ <dim>1</dim>
1284
+ <dim>256</dim>
1285
+ <dim>2</dim>
1286
+ <dim>2</dim>
1287
+ </port>
1288
+ <port id="1" precision="FP32">
1289
+ <dim>5</dim>
1290
+ <dim>256</dim>
1291
+ <dim>2</dim>
1292
+ <dim>2</dim>
1293
+ </port>
1294
+ </input>
1295
+ <output>
1296
+ <port id="2" precision="FP32">
1297
+ <dim>1</dim>
1298
+ <dim>5</dim>
1299
+ <dim>1</dim>
1300
+ <dim>1</dim>
1301
+ </port>
1302
+ </output>
1303
+ </layer>
1304
+ <layer id="71" name="emotion5_conv1/Dims1316" type="Const" version="opset1">
1305
+ <data element_type="f32" offset="9930008" shape="1, 5, 1, 1" size="20"/>
1306
+ <output>
1307
+ <port id="0" precision="FP32">
1308
+ <dim>1</dim>
1309
+ <dim>5</dim>
1310
+ <dim>1</dim>
1311
+ <dim>1</dim>
1312
+ </port>
1313
+ </output>
1314
+ </layer>
1315
+ <layer id="72" name="emotion5_conv1" type="Add" version="opset1">
1316
+ <data auto_broadcast="numpy"/>
1317
+ <input>
1318
+ <port id="0" precision="FP32">
1319
+ <dim>1</dim>
1320
+ <dim>5</dim>
1321
+ <dim>1</dim>
1322
+ <dim>1</dim>
1323
+ </port>
1324
+ <port id="1" precision="FP32">
1325
+ <dim>1</dim>
1326
+ <dim>5</dim>
1327
+ <dim>1</dim>
1328
+ <dim>1</dim>
1329
+ </port>
1330
+ </input>
1331
+ <output>
1332
+ <port id="2" names="emotion5_conv" precision="FP32">
1333
+ <dim>1</dim>
1334
+ <dim>5</dim>
1335
+ <dim>1</dim>
1336
+ <dim>1</dim>
1337
+ </port>
1338
+ </output>
1339
+ </layer>
1340
+ <layer id="73" name="prob_emotion" type="SoftMax" version="opset1">
1341
+ <data axis="1"/>
1342
+ <input>
1343
+ <port id="0" precision="FP32">
1344
+ <dim>1</dim>
1345
+ <dim>5</dim>
1346
+ <dim>1</dim>
1347
+ <dim>1</dim>
1348
+ </port>
1349
+ </input>
1350
+ <output>
1351
+ <port id="1" names="prob_emotion" precision="FP32">
1352
+ <dim>1</dim>
1353
+ <dim>5</dim>
1354
+ <dim>1</dim>
1355
+ <dim>1</dim>
1356
+ </port>
1357
+ </output>
1358
+ </layer>
1359
+ <layer id="74" name="prob_emotion/sink_port_0" type="Result" version="opset1">
1360
+ <input>
1361
+ <port id="0" precision="FP32">
1362
+ <dim>1</dim>
1363
+ <dim>5</dim>
1364
+ <dim>1</dim>
1365
+ <dim>1</dim>
1366
+ </port>
1367
+ </input>
1368
+ </layer>
1369
+ </layers>
1370
+ <edges>
1371
+ <edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
1372
+ <edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
1373
+ <edge from-layer="2" from-port="2" to-layer="4" to-port="0"/>
1374
+ <edge from-layer="3" from-port="0" to-layer="4" to-port="1"/>
1375
+ <edge from-layer="4" from-port="2" to-layer="6" to-port="0"/>
1376
+ <edge from-layer="5" from-port="0" to-layer="6" to-port="1"/>
1377
+ <edge from-layer="6" from-port="2" to-layer="8" to-port="0"/>
1378
+ <edge from-layer="7" from-port="0" to-layer="8" to-port="1"/>
1379
+ <edge from-layer="8" from-port="2" to-layer="9" to-port="0"/>
1380
+ <edge from-layer="9" from-port="1" to-layer="10" to-port="0"/>
1381
+ <edge from-layer="10" from-port="1" to-layer="12" to-port="0"/>
1382
+ <edge from-layer="10" from-port="1" to-layer="18" to-port="1"/>
1383
+ <edge from-layer="11" from-port="0" to-layer="12" to-port="1"/>
1384
+ <edge from-layer="12" from-port="2" to-layer="14" to-port="0"/>
1385
+ <edge from-layer="13" from-port="0" to-layer="14" to-port="1"/>
1386
+ <edge from-layer="14" from-port="2" to-layer="15" to-port="0"/>
1387
+ <edge from-layer="15" from-port="1" to-layer="17" to-port="0"/>
1388
+ <edge from-layer="16" from-port="0" to-layer="17" to-port="1"/>
1389
+ <edge from-layer="17" from-port="2" to-layer="18" to-port="0"/>
1390
+ <edge from-layer="18" from-port="2" to-layer="20" to-port="0"/>
1391
+ <edge from-layer="19" from-port="0" to-layer="20" to-port="1"/>
1392
+ <edge from-layer="20" from-port="2" to-layer="22" to-port="0"/>
1393
+ <edge from-layer="21" from-port="0" to-layer="22" to-port="1"/>
1394
+ <edge from-layer="22" from-port="2" to-layer="23" to-port="0"/>
1395
+ <edge from-layer="23" from-port="1" to-layer="32" to-port="0"/>
1396
+ <edge from-layer="23" from-port="1" to-layer="25" to-port="0"/>
1397
+ <edge from-layer="24" from-port="0" to-layer="25" to-port="1"/>
1398
+ <edge from-layer="25" from-port="2" to-layer="27" to-port="0"/>
1399
+ <edge from-layer="26" from-port="0" to-layer="27" to-port="1"/>
1400
+ <edge from-layer="27" from-port="2" to-layer="28" to-port="0"/>
1401
+ <edge from-layer="28" from-port="1" to-layer="30" to-port="0"/>
1402
+ <edge from-layer="29" from-port="0" to-layer="30" to-port="1"/>
1403
+ <edge from-layer="30" from-port="2" to-layer="33" to-port="0"/>
1404
+ <edge from-layer="31" from-port="0" to-layer="32" to-port="1"/>
1405
+ <edge from-layer="32" from-port="2" to-layer="33" to-port="1"/>
1406
+ <edge from-layer="33" from-port="2" to-layer="35" to-port="0"/>
1407
+ <edge from-layer="34" from-port="0" to-layer="35" to-port="1"/>
1408
+ <edge from-layer="35" from-port="2" to-layer="37" to-port="0"/>
1409
+ <edge from-layer="36" from-port="0" to-layer="37" to-port="1"/>
1410
+ <edge from-layer="37" from-port="2" to-layer="38" to-port="0"/>
1411
+ <edge from-layer="38" from-port="1" to-layer="47" to-port="0"/>
1412
+ <edge from-layer="38" from-port="1" to-layer="40" to-port="0"/>
1413
+ <edge from-layer="39" from-port="0" to-layer="40" to-port="1"/>
1414
+ <edge from-layer="40" from-port="2" to-layer="42" to-port="0"/>
1415
+ <edge from-layer="41" from-port="0" to-layer="42" to-port="1"/>
1416
+ <edge from-layer="42" from-port="2" to-layer="43" to-port="0"/>
1417
+ <edge from-layer="43" from-port="1" to-layer="45" to-port="0"/>
1418
+ <edge from-layer="44" from-port="0" to-layer="45" to-port="1"/>
1419
+ <edge from-layer="45" from-port="2" to-layer="48" to-port="0"/>
1420
+ <edge from-layer="46" from-port="0" to-layer="47" to-port="1"/>
1421
+ <edge from-layer="47" from-port="2" to-layer="48" to-port="1"/>
1422
+ <edge from-layer="48" from-port="2" to-layer="50" to-port="0"/>
1423
+ <edge from-layer="49" from-port="0" to-layer="50" to-port="1"/>
1424
+ <edge from-layer="50" from-port="2" to-layer="52" to-port="0"/>
1425
+ <edge from-layer="51" from-port="0" to-layer="52" to-port="1"/>
1426
+ <edge from-layer="52" from-port="2" to-layer="53" to-port="0"/>
1427
+ <edge from-layer="53" from-port="1" to-layer="55" to-port="0"/>
1428
+ <edge from-layer="53" from-port="1" to-layer="62" to-port="0"/>
1429
+ <edge from-layer="54" from-port="0" to-layer="55" to-port="1"/>
1430
+ <edge from-layer="55" from-port="2" to-layer="57" to-port="0"/>
1431
+ <edge from-layer="56" from-port="0" to-layer="57" to-port="1"/>
1432
+ <edge from-layer="57" from-port="2" to-layer="58" to-port="0"/>
1433
+ <edge from-layer="58" from-port="1" to-layer="60" to-port="0"/>
1434
+ <edge from-layer="59" from-port="0" to-layer="60" to-port="1"/>
1435
+ <edge from-layer="60" from-port="2" to-layer="63" to-port="0"/>
1436
+ <edge from-layer="61" from-port="0" to-layer="62" to-port="1"/>
1437
+ <edge from-layer="62" from-port="2" to-layer="63" to-port="1"/>
1438
+ <edge from-layer="63" from-port="2" to-layer="65" to-port="0"/>
1439
+ <edge from-layer="64" from-port="0" to-layer="65" to-port="1"/>
1440
+ <edge from-layer="65" from-port="2" to-layer="67" to-port="0"/>
1441
+ <edge from-layer="66" from-port="0" to-layer="67" to-port="1"/>
1442
+ <edge from-layer="67" from-port="2" to-layer="68" to-port="0"/>
1443
+ <edge from-layer="68" from-port="1" to-layer="70" to-port="0"/>
1444
+ <edge from-layer="69" from-port="0" to-layer="70" to-port="1"/>
1445
+ <edge from-layer="70" from-port="2" to-layer="72" to-port="0"/>
1446
+ <edge from-layer="71" from-port="0" to-layer="72" to-port="1"/>
1447
+ <edge from-layer="72" from-port="2" to-layer="73" to-port="0"/>
1448
+ <edge from-layer="73" from-port="1" to-layer="74" to-port="0"/>
1449
+ </edges>
1450
+ <meta_data>
1451
+ <MO_version value="2021.4.0-3827-c5b65f2cb1d-releases/2021/4"/>
1452
+ <cli_parameters>
1453
+ <caffe_parser_path value="DIR"/>
1454
+ <data_type value="FP32"/>
1455
+ <disable_nhwc_to_nchw value="False"/>
1456
+ <disable_omitting_optional value="False"/>
1457
+ <disable_resnet_optimization value="False"/>
1458
+ <disable_weights_compression value="False"/>
1459
+ <enable_concat_optimization value="False"/>
1460
+ <enable_flattening_nested_params value="False"/>
1461
+ <enable_ssd_gluoncv value="False"/>
1462
+ <extensions value="DIR"/>
1463
+ <framework value="caffe"/>
1464
+ <freeze_placeholder_with_value value="{}"/>
1465
+ <generate_deprecated_IR_V7 value="False"/>
1466
+ <input value="data"/>
1467
+ <input_model value="DIR/0003_EmoNet_ResNet10.caffemodel"/>
1468
+ <input_model_is_text value="False"/>
1469
+ <input_proto value="DIR/0003_EmoNet_ResNet10.prototxt"/>
1470
+ <input_shape value="[1,3,64,64]"/>
1471
+ <k value="DIR/CustomLayersMapping.xml"/>
1472
+ <keep_shape_ops value="True"/>
1473
+ <legacy_ir_generation value="False"/>
1474
+ <legacy_mxnet_model value="False"/>
1475
+ <log_level value="ERROR"/>
1476
+ <mean_scale_values value="{'data': {'mean': None, 'scale': array([1.])}}"/>
1477
+ <mean_values value="()"/>
1478
+ <model_name value="emotions-recognition-retail-0003"/>
1479
+ <output value="['prob_emotion']"/>
1480
+ <output_dir value="DIR"/>
1481
+ <placeholder_data_types value="{}"/>
1482
+ <placeholder_shapes value="{'data': array([ 1, 3, 64, 64])}"/>
1483
+ <progress value="False"/>
1484
+ <remove_memory value="False"/>
1485
+ <remove_output_softmax value="False"/>
1486
+ <reverse_input_channels value="False"/>
1487
+ <save_params_from_nd value="False"/>
1488
+ <scale_values value="data[1.0]"/>
1489
+ <silent value="False"/>
1490
+ <static_shape value="False"/>
1491
+ <stream_output value="False"/>
1492
+ <transform value=""/>
1493
+ <unset unset_cli_parameters="batch, counts, disable_fusing, disable_gfusing, finegrain_fusing, input_checkpoint, input_meta_graph, input_symbol, mean_file, mean_file_offsets, move_to_preprocess, nd_prefix_name, pretrained_model_name, saved_model_dir, saved_model_tags, scale, tensorboard_logdir, tensorflow_custom_layer_libraries, tensorflow_custom_operations_config_update, tensorflow_object_detection_api_pipeline_config, tensorflow_use_custom_operations_config, transformations_config"/>
1494
+ </cli_parameters>
1495
+ </meta_data>
1496
+ </net>
models/face-detection-adas-0001.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:54883903421c8ee5289334ca4da779976a8be66daf7d57e45d005d0bc2b8c637
3
+ size 4212072
models/face-detection-adas-0001.xml ADDED
The diff for this file is too large to render. See raw diff
 
models/person-detection-retail-0013.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6f09cb7061328942f9d5e9fc81631a4234be66a26daa50cd672d4077ee82ad44
3
+ size 2891364
models/person-detection-retail-0013.xml ADDED
The diff for this file is too large to render. See raw diff
 
utils/emotion_detection_brainai.py ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import openvino as ov
2
+ import cv2
3
+ import numpy as np
4
+ import PIL
5
+ import io
6
+ import tempfile
7
+ import streamlit as st
8
+ import moviepy.editor as mpy
9
+
10
+
11
+ class EmotionModel:
12
+ def __init__(self):
13
+ self.face_compiled_model, self.face_input_layer, self.face_output_layer = self.load_model('face-detection-adas-0001')
14
+ self.emotion_compiled_model, self.emotion_input_layer, self.emotion_output_layer = self.load_model('emotions-recognition-retail-0003')
15
+
16
+
17
+ def load_model(self, model_name):
18
+ model_path = "models/" + model_name + ".xml"
19
+ core = ov.Core()
20
+ model = core.read_model(model=model_path)
21
+ compiled_model = core.compile_model(model=model, device_name="CPU")
22
+ input_layer = compiled_model.input(0)
23
+ output_layer = compiled_model.output(0)
24
+ return compiled_model, input_layer, output_layer
25
+
26
+ def preprocess(self, img, input_layer):
27
+
28
+ input_h, input_w = input_layer.shape[2], input_layer.shape[3]
29
+ input_img = cv2.resize(img, (input_w,input_h))
30
+ input_img = input_img.transpose(2, 0, 1)
31
+ input_img = np.expand_dims(input_img, 0)
32
+
33
+ return input_img
34
+
35
+
36
+ def post_process_face(self, result_face, img, conf=0.5):
37
+ boxes = []
38
+ h,w,_ = img.shape
39
+ predictions = result_face[0][0] # ํ•˜์œ„ ์ง‘ํ•ฉ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„
40
+ confidence = predictions[:,2] # conf ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ [img_id, label, conf, x_min, y_min, x_max, y_max]
41
+
42
+ top_predictions = predictions[(confidence>conf)] # ์ž„๊ณ„๊ฐ’๋ณด๋‹ค ํฐ conf ๊ฐ’์„ ๊ฐ€์ง„ ์˜ˆ์ธก๋งŒ ์„ ํƒ
43
+ for detection in top_predictions:
44
+ box = (detection[3:7]* np.array([w, h, w, h])).astype("int") # ์ƒ์ž ์œ„์น˜ ๊ฒฐ์ •
45
+ box = [0 if i < 0 else i for i in box]
46
+ (xmin, ymin, xmax, ymax) = box # xmin, ymin, xmax, ymax์— ์ƒ์ž ์œ„์น˜ ๊ฐ’ ์ง€์ •
47
+ boxes.append(box)
48
+ cv2.rectangle(img, (xmin, ymin), (xmax, ymax), (0, 0, 255), 2) # ์‚ฌ๊ฐํ˜• ๋งŒ๋“ค๊ธฐ
49
+
50
+ return boxes
51
+
52
+ def post_process_emotion(self, result_emotion, img, face_position):
53
+
54
+ emotions = {
55
+ 0:"neutral",
56
+ 1:"happy",
57
+ 2:"sad",
58
+ 3:"surprise",
59
+ 4:"anger"
60
+ }
61
+
62
+ predictions = result_emotion[0,:,0,0]
63
+ topresult_index = np.argmax(predictions)
64
+ emotion = emotions[topresult_index]
65
+
66
+ font_size = img.shape[0]/1000
67
+ font_thickness = int(img.shape[0]/500)
68
+ text_offset = int(img.shape[0]/30)
69
+
70
+ cv2.putText(img, emotion,
71
+ (face_position[0],face_position[1]+text_offset),
72
+ cv2.FONT_HERSHEY_SIMPLEX, font_size,
73
+ (255, 255,255), font_thickness)
74
+
75
+ return emotion
76
+
77
+ def process(self, img):
78
+
79
+ if isinstance(img, np.ndarray):
80
+ uploaded_img_cv = img
81
+ else:
82
+ uploaded_img = PIL.Image.open(img)
83
+ uploaded_img_cv = np.array(uploaded_img)
84
+
85
+ input_img = self.preprocess(uploaded_img_cv, self.face_input_layer)
86
+ result_face = self.face_compiled_model([input_img])[self.face_output_layer]
87
+ boxes = self.post_process_face(result_face, uploaded_img_cv, conf=0.5)
88
+
89
+ if boxes is not None:
90
+
91
+ for box in boxes:
92
+ xmin, ymin, xmax, ymax = box
93
+ emotion_input = uploaded_img_cv[ymin:ymax,xmin:xmax]
94
+ input_img = self.preprocess(emotion_input, self.emotion_input_layer)
95
+ result_emotion = self.emotion_compiled_model([input_img])[self.emotion_output_layer]
96
+ self.post_process_emotion(result_emotion, uploaded_img_cv, box)
97
+
98
+ return uploaded_img_cv
99
+
100
+ emotion_model = EmotionModel()
101
+ def play_video(input_video):
102
+ g = io.BytesIO(input_video.read())
103
+ temporary_location = "upload.mp4"
104
+ with open(temporary_location, "wb") as out:
105
+ out.write(g.read())
106
+ out.close()
107
+
108
+ camera = cv2.VideoCapture(temporary_location)
109
+ fps = camera.get(cv2.CAP_PROP_FPS)
110
+ temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.mp4')
111
+ video_row=[]
112
+ total_frames = int(camera.get(cv2.CAP_PROP_FRAME_COUNT))
113
+ progress_bar = st.progress(0)
114
+ frame_count = 0
115
+
116
+ st_frame = st.empty()
117
+ while(camera.isOpened()):
118
+ ret, frame = camera.read()
119
+
120
+ if ret:
121
+ emotion_img = emotion_model.process(frame)
122
+ st_frame.image(emotion_img, channels = "BGR")
123
+ video_row.append(cv2.cvtColor(emotion_img,cv2.COLOR_BGR2RGB))
124
+ frame_count +=1
125
+ progress_bar.progress(frame_count/total_frames, text = None)
126
+
127
+ else:
128
+ camera.release()
129
+ st_frame.empty()
130
+ progress_bar.empty()
131
+ break
132
+ clip = mpy.ImageSequenceClip(video_row,fps=fps)
133
+ clip.write_videofile(temp_file.name)
134
+
135
+ return temp_file.name
136
+