Azure-Samples / cognitive-services-android-customvision-sample

Sample Anroid app for image classification using a TensorFlow model exported from Microsoft Cognitive Services Custom Vision
58 stars 57 forks source link

Exported tensorflow model not working from yesterday #15

Closed kkannan1 closed 6 years ago

kkannan1 commented 6 years ago

Please provide us with the following information: The codebase can't read the tensorflow model that I exported from Custom Vision portal from yesterday and today. The app is crashed while opening. If I given a old tensor flow model(.pb file) I exported few weeks back, it is working fine. Please help

This issue is for a: (mark with an x)

- [ X] bug report -> please search issues before submitting
- [ ] feature request
- [ ] documentation issue or request
- [ ] regression (a behavior that used to work and stopped in a new release)

Minimal steps to reproduce

Replace the model (.pb file) and labels in the asset folder and hit run.

Any log messages given by the failure

E/AndroidRuntime: FATAL EXCEPTION: main Process: demo.tensorflow.org.customvision_sample, PID: 20498 java.lang.RuntimeException: Failed to load model from 'file:///android_asset/model.pb' at org.tensorflow.contrib.android.TensorFlowInferenceInterface.(TensorFlowInferenceInterface.java:86) at demo.tensorflow.org.customvision_sample.MSCognitiveServicesClassifier.(MSCognitiveServicesClassifier.java:58) at demo.tensorflow.org.customvision_sample.ClassifierActivity.onPreviewSizeChosen(ClassifierActivity.java:67) at demo.tensorflow.org.customvision_sample.CameraActivity$2.onPreviewSizeChosen(CameraActivity.java:321) at demo.tensorflow.org.customvision_sample.CameraConnectionFragment.setUpCameraOutputs(CameraConnectionFragment.java:408) at demo.tensorflow.org.customvision_sample.CameraConnectionFragment.openCamera(CameraConnectionFragment.java:415) at demo.tensorflow.org.customvision_sample.CameraConnectionFragment.access$000(CameraConnectionFragment.java:65) at demo.tensorflow.org.customvision_sample.CameraConnectionFragment$1.onSurfaceTextureAvailable(CameraConnectionFragment.java:96) at android.view.TextureView.getHardwareLayer(TextureView.java:390) at android.view.TextureView.draw(TextureView.java:339) at android.view.View.updateDisplayListIfDirty(View.java:16183) at android.view.View.draw(View.java:16967) at android.view.ViewGroup.drawChild(ViewGroup.java:3731) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3517) at android.view.View.updateDisplayListIfDirty(View.java:16178) at android.view.View.draw(View.java:16967) at android.view.ViewGroup.drawChild(ViewGroup.java:3731) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3517) at android.view.View.draw(View.java:17204) at android.view.View.updateDisplayListIfDirty(View.java:16183) at android.view.View.draw(View.java:16967) at android.view.ViewGroup.drawChild(ViewGroup.java:3731) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3517) at android.view.View.updateDisplayListIfDirty(View.java:16178) at android.view.View.draw(View.java:16967) at android.view.ViewGroup.drawChild(ViewGroup.java:3731) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3517) at android.view.View.updateDisplayListIfDirty(View.java:16178) at android.view.View.draw(View.java:16967) at android.view.ViewGroup.drawChild(ViewGroup.java:3731) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3517) at android.view.View.draw(View.java:17204) at com.android.internal.policy.DecorView.draw(DecorView.java:753) at android.view.View.updateDisplayListIfDirty(View.java:16183) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:648) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:654) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:762) at android.view.ViewRootImpl.draw(ViewRootImpl.java:2818) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2626) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2233) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1272) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6408) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874) at android.view.Choreographer.doCallbacks(Choreographer.java:686) at android.view.Choreographer.doFrame(Choreographer.java:621) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6165) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778) Caused by: java.io.IOException: Not a valid TensorFlow Graph serialization: NodeDef mentions attr 'dilations' not in Op<name=Conv2D; signature=input:T, filter:T -> output:T; attr=T:type,allowed=[DT_HALF, DT_FLOAT]; attr=strides:list(int); attr=use_cudnn_on_gpu:bool,default=true; attr=padding:string,allowed=["SAME", "VALID"]; attr=data_format:string,default="NHWC",allowed=["NHWC", "NCHW"]>; NodeDef: conv1/Conv2D = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], padding="VALID", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true](data_bn/data_bn/add_1, conv1/weights/read). (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.). at org.tensorflow.contrib.android.TensorFlowInferenceInterface.loadGraph(TensorFlowInferenceInterface.java:488) at org.tensorflow.contrib.android.TensorFlowInferenceInterface.(TensorFlowInferenceInterface.java:82) ... 52 more Application terminated.

Expected/desired behavior

Application should not crash.

OS and Version?

Android 6

Versions

Mention any other details that might be useful


Thanks! We'll be in touch soon.

flamechaoz commented 6 years ago

This is true. This also happened to me with a model trained last Sunday, September 23.

shonohs commented 6 years ago

Thanks for the bug report. This issue was fixed by #16. Please try with the latest code.

delfu commented 6 years ago

fixed by PR 16