質問編集履歴

4

追記

2021/10/21 08:52

投稿

Kawasaki02021
Kawasaki02021

スコア1

test CHANGED
File without changes
test CHANGED
@@ -10,22 +10,20 @@
10
10
 
11
11
  実行したモデルはVGG16を用いて学習させました。
12
12
 
13
- 原因は恐らく該当ソースコードとモデルの構造が一致していないことが原因と考えているのですが、
14
-
15
- 学習モデルをこれにどう対応させていいのかが分からないです。
16
-
17
13
  このエラー自体の解決方法などご助言などいただければ幸いです。
18
14
 
19
15
  よろしくお願いします。
20
16
 
21
-
17
+ [追記]
18
+
22
-
19
+ 画像分類のコードが以下のリンクにあるutils.pyで動いています。その中の466行目から486行目でckptファイルの読み込みを行っています。
20
+
23
-
21
+ [https://github.com/totti0223/deepstomata/blob/master/deepstomata/utils.py](https://github.com/totti0223/deepstomata/blob/master/deepstomata/utils.py)
22
+
23
+ ここのサイト[https://louis-needless.hatenablog.com/entry/notfounderror-bully-me](https://louis-needless.hatenablog.com/entry/notfounderror-bully-me)を参考にarg_scopeをutils.pyの467行目に入れて行いましたが、上手くいきませんでした。
24
24
 
25
25
  ### 発生している問題・エラーメッセージ
26
26
 
27
-
28
-
29
27
  ```
30
28
 
31
29
  >>> from deepstomata import *
@@ -150,145 +148,77 @@
150
148
 
151
149
  ```python
152
150
 
153
- import tensorflow as tf
154
-
155
- from math import sqrt
156
-
157
- MOVING_AVERAGE_DECAY = 0.9999
158
-
159
-
160
-
161
-
162
-
163
- def tf_inference(images, BATCH_SIZE, image_size, NUM_CLASSES):
164
-
165
-
166
-
167
- def _variable_with_weight_decay(name, shape, stddev, wd):
168
-
169
- var = tf.get_variable(name, shape=shape, initializer=tf.truncated_normal_initializer(stddev=stddev))
170
-
171
- if wd:
172
-
173
- weight_decay = tf.mul(tf.nn.l2_loss(var), wd, name='weight_loss')
174
-
175
- tf.add_to_collection('losses', weight_decay)
176
-
177
- return var
178
-
179
-
180
-
181
- def _activation_summary(x):
182
-
183
- tensor_name = x.op.name
184
-
185
- tf.scalar_summary(tensor_name + '/sparsity', tf.nn.zero_fraction(x))
186
-
187
-
188
-
189
- with tf.variable_scope('conv1') as scope:
190
-
191
- kernel = tf.get_variable('weights', shape=[3, 3, 3, 32], initializer=tf.truncated_normal_initializer(stddev=0.1))
192
-
193
- conv = tf.nn.conv2d(images, kernel, [1, 1, 1, 1], padding='SAME')
194
-
195
- biases = tf.get_variable('biases', shape=[32], initializer=tf.constant_initializer(0.0))
196
-
197
- bias = tf.nn.bias_add(conv, biases)
198
-
199
- conv1 = tf.nn.relu(bias, name=scope.name)
200
-
201
- pool1 = tf.nn.max_pool(conv1, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding='SAME', name='pool1')
202
-
203
-
204
-
205
- with tf.variable_scope('conv2') as scope:
206
-
207
- kernel = tf.get_variable('weights', shape=[3, 3, 32, 64], initializer=tf.truncated_normal_initializer(stddev=0.1))
208
-
209
- conv = tf.nn.conv2d(pool1, kernel, [1, 1, 1, 1], padding='SAME')
210
-
211
- biases = tf.get_variable('biases', shape=[64], initializer=tf.constant_initializer(0.0))
212
-
213
- bias = tf.nn.bias_add(conv, biases)
214
-
215
- conv2 = tf.nn.relu(bias, name=scope.name)
216
-
217
- pool2 = tf.nn.max_pool(conv2, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding='SAME', name='pool2')
218
-
219
-
220
-
221
- with tf.variable_scope('conv3') as scope:
222
-
223
- kernel = tf.get_variable('weights', shape=[3, 3, 64, 128], initializer=tf.truncated_normal_initializer(stddev=0.1))
224
-
225
- conv = tf.nn.conv2d(pool2, kernel, [1, 1, 1, 1], padding='SAME')
226
-
227
- biases = tf.get_variable('biases', shape=[128], initializer=tf.constant_initializer(0.0))
228
-
229
- bias = tf.nn.bias_add(conv, biases)
230
-
231
- conv3 = tf.nn.relu(bias, name=scope.name)
232
-
233
- pool3 = tf.nn.max_pool(conv3, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding='SAME', name='pool3')
234
-
235
-
236
-
237
- with tf.variable_scope('conv4') as scope:
238
-
239
- kernel = tf.get_variable('weights', shape=[3, 3, 128, 256], initializer=tf.truncated_normal_initializer(stddev=0.1))
240
-
241
- conv = tf.nn.conv2d(pool3, kernel, [1, 1, 1, 1], padding='SAME')
242
-
243
- biases = tf.get_variable('biases', shape=[256], initializer=tf.constant_initializer(0.0))
244
-
245
- bias = tf.nn.bias_add(conv, biases)
246
-
247
- conv4 = tf.nn.relu(bias, name=scope.name)
248
-
249
- pool4 = tf.nn.max_pool(conv4, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding='SAME', name='pool4')
250
-
251
-
252
-
253
- with tf.variable_scope('fc5') as scope:
254
-
255
- dim = 1
256
-
257
- for d in pool4.get_shape()[1:].as_list():
258
-
259
- dim *= d
260
-
261
- reshape = tf.reshape(pool4, [BATCH_SIZE, dim])
262
-
263
- weights = _variable_with_weight_decay('weights', shape=[dim, 1024], stddev=0.02, wd=0.005)
264
-
265
- biases = tf.get_variable('biases', shape=[1024], initializer=tf.constant_initializer(0.0))
266
-
267
- fc5 = tf.nn.relu(tf.nn.bias_add(tf.matmul(reshape, weights), biases), name=scope.name)
268
-
269
-
270
-
271
- with tf.variable_scope('fc6') as scope:
272
-
273
- weights = _variable_with_weight_decay('weights', shape=[1024, 256], stddev=0.02, wd=0.005)
274
-
275
- biases = tf.get_variable('biases', shape=[256], initializer=tf.constant_initializer(0.0))
276
-
277
- fc6 = tf.nn.relu(tf.nn.bias_add(tf.matmul(fc5, weights), biases), name=scope.name)
278
-
279
-
280
-
281
- with tf.variable_scope('fc7') as scope:
282
-
283
- weights = tf.get_variable('weights', shape=[256, NUM_CLASSES], initializer=tf.truncated_normal_initializer(stddev=0.02))
284
-
285
- biases = tf.get_variable('biases', shape=[NUM_CLASSES], initializer=tf.constant_initializer(0.0))
286
-
287
- fc7 = tf.nn.bias_add(tf.matmul(fc6, weights), biases, name=scope.name)
288
-
289
-
290
-
291
- return fc7
151
+ with vgg.arg_scope(arg_scope):
152
+
153
+ net, end_points = vgg.vgg_16.vgg_16_50(input=input)
154
+
155
+ def stomata_stat_batch_classify(image, region_number, ckpt_path):
156
+
157
+
158
+
159
+ '''
160
+
161
+ input
162
+
163
+ image : image read by scipy. imread if by opencv, bgr to rgb must be performed
164
+
165
+ ckpt_path : checkpoint absolute path
166
+
167
+ output
168
+
169
+ most likely stat of stomata, confidential level of most likely stat of stomata
170
+
171
+ '''
172
+
173
+ DST_INPUT_SIZE = 56
174
+
175
+ NUM_CLASS = 4
176
+
177
+ tf.reset_default_graph()
178
+
179
+
180
+
181
+ image = tf.reshape(image, [-1, DST_INPUT_SIZE, DST_INPUT_SIZE, 3])
182
+
183
+ logits = stomata_model.tf_inference(image, region_number, DST_INPUT_SIZE, NUM_CLASS)
184
+
185
+
186
+
187
+ sess = tf.InteractiveSession()
188
+
189
+ saver = tf.train.Saver()
190
+
191
+ sess.run(tf.global_variables_initializer())
192
+
193
+ if ckpt_path:
194
+
195
+ saver.restore(sess, ckpt_path)
196
+
197
+ softmax = tf.nn.softmax(logits).eval()
198
+
199
+ results = [[None for _ in range(2)] for _ in range(region_number)]
200
+
201
+ q = 0
202
+
203
+ for logit in softmax:
204
+
205
+ logit = [round(n * 100, 1) for n in logit]
206
+
207
+ logit = np.asarray(logit)
208
+
209
+ result = [["open", logit[0]], ["closed", logit[1]], ["partially_open", logit[2]], ["false_positive", logit[3]]]
210
+
211
+ result = sorted(result, key =lambda x: int(x[1]), reverse = True)
212
+
213
+ results[q][0] = result[0][0]
214
+
215
+ results[q][1] = result[0][1]
216
+
217
+ q += 1
218
+
219
+ #print ("\t",results)
220
+
221
+ return results
292
222
 
293
223
  ```
294
224
 
@@ -325,3 +255,5 @@
325
255
  pandas 0.25.3
326
256
 
327
257
  numpy 1.15.2
258
+
259
+ 原因は恐らく[ここ](https://github.com/totti0223/deepstomata/blob/master/deepstomata/stomata_model.py)のコードとモデルの構造が一致していないことが原因と考えているのですが、学習モデルをこれにどう対応させていいのかが分からないです。

3

文言の修正

2021/10/21 08:52

投稿

Kawasaki02021
Kawasaki02021

スコア1

test CHANGED
@@ -1 +1 @@
1
- ckptファイル復元(Tensor name "xxx" not found in checkpoint files)について
1
+ ckptファイル復元(Tensor name "xxx" not found in checkpoint files)ができません
test CHANGED
@@ -18,6 +18,10 @@
18
18
 
19
19
  よろしくお願いします。
20
20
 
21
+
22
+
23
+
24
+
21
25
  ### 発生している問題・エラーメッセージ
22
26
 
23
27
 

2

タイトルの変更

2021/10/21 08:21

投稿

Kawasaki02021
Kawasaki02021

スコア1

test CHANGED
@@ -1 +1 @@
1
- Tensor name "xxx" not found in checkpoint filesについて
1
+ ckptファイル復元(Tensor name "xxx" not found in checkpoint files)について
test CHANGED
File without changes

1

質問に若干の変更を加えました

2021/10/21 08:10

投稿

Kawasaki02021
Kawasaki02021

スコア1

test CHANGED
File without changes
test CHANGED
@@ -6,13 +6,15 @@
6
6
 
7
7
  [https://github.com/totti0223/deepstomata](https://github.com/totti0223/deepstomata)
8
8
 
9
+ モデルが上手く復元できてないようです。
10
+
9
11
  実行したモデルはVGG16を用いて学習させました。
10
12
 
11
13
  原因は恐らく該当ソースコードとモデルの構造が一致していないことが原因と考えているのですが、
12
14
 
13
15
  学習モデルをこれにどう対応させていいのかが分からないです。
14
16
 
15
- ご助言などいただければ幸いです。
17
+ このエラー自体の解決方法などご助言などいただければ幸いです。
16
18
 
17
19
  よろしくお願いします。
18
20