Running Tensorflow MobileNet from Java2019 Community Moderator ElectionTesting a tensorflow network: in_top_k() replacement for multilabel classificationTensorFlow doesn't learn when input=output (or probably I am missing something)Neural Network for Multiple Output RegressionFine-tuning a model from an existing checkpoint with TensorFlow-SlimTensorFlow: Regression using Deep Neural NetworkTensorflow predicting same value for every rowIssue with Custom object detection using tensorflow when Training on a single type of objectWhy normalize when all features are on the same scale?How to split a keras model into submodels after it's created
How to report a triplet of septets in NMR tabulation?
How can I fix this gap between bookcases I made?
DOS, create pipe for stdin/stdout of command.com(or 4dos.com) in C or Batch?
Can an x86 CPU running in real mode be considered to be basically an 8086 CPU?
The use of multiple foreign keys on same column in SQL Server
Is Social Media Science Fiction?
How do you conduct xenoanthropology after first contact?
Pronouncing Dictionary.com's W.O.D "vade mecum" in English
TGV timetables / schedules?
Infinite past with a beginning?
I’m planning on buying a laser printer but concerned about the life cycle of toner in the machine
Motorized valve interfering with button?
Banach space and Hilbert space topology
What do you call something that goes against the spirit of the law, but is legal when interpreting the law to the letter?
If Manufacturer spice model and Datasheet give different values which should I use?
Set-theoretical foundations of Mathematics with only bounded quantifiers
What are these boxed doors outside store fronts in New York?
What defenses are there against being summoned by the Gate spell?
Prevent a directory in /tmp from being deleted
Why are only specific transaction types accepted into the mempool?
How to make payment on the internet without leaving a money trail?
Why is the design of haulage companies so “special”?
What is the command to reset a PC without deleting any files
How long does it take to type this?
Running Tensorflow MobileNet from Java
2019 Community Moderator ElectionTesting a tensorflow network: in_top_k() replacement for multilabel classificationTensorFlow doesn't learn when input=output (or probably I am missing something)Neural Network for Multiple Output RegressionFine-tuning a model from an existing checkpoint with TensorFlow-SlimTensorFlow: Regression using Deep Neural NetworkTensorflow predicting same value for every rowIssue with Custom object detection using tensorflow when Training on a single type of objectWhy normalize when all features are on the same scale?How to split a keras model into submodels after it's created
$begingroup$
I am trying to run Tensorflow for image recognition (classification) in Java (JSE not Android).
I am using the code from here, and here.
It works for Inceptionv3 models, and for models retrained from Inceptionv3.
But for MobileNet models it does not work, (such as following this article).
The code works, but gives the wrong results (wrong classify labels). What code/settings are required to use MobileNet from Java?
The code that works for Inceptionv3 is
try (Tensor image = Tensor.create(imageBytes))
float[] labelProbabilities = executeInceptionGraph(graphDef, image);
int bestLabelIdx = maxIndex(labelProbabilities);
result.setText("");
result.setText(String.format(
"BEST MATCH: %s (%.2f%% likely)",
labels.get(bestLabelIdx), labelProbabilities[bestLabelIdx] * 100f));
System.out.println(
String.format(
"BEST MATCH: %s (%.2f%% likely)",
labels.get(bestLabelIdx), labelProbabilities[bestLabelIdx] * 100f));
This works of Inceptionv3 models, but not MobileNet,
Gives the error, "Expects args[0] to be float but string is provided"
For MobileNet we tried the code,
try (Graph g = new Graph())
GraphBuilder b = new GraphBuilder(g);
// Some constants specific to the pre-trained model at:
// https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip
//
// - The model was trained with images scaled to 224x224 pixels.
// - The colors, represented as R, G, B in 1-byte each were converted to
// float using (value - Mean)/Scale.
final int H = 224;
final int W = 224;
final float mean = 128f;
final float scale = 1f;
// Since the graph is being constructed once per execution here, we can use a constant for the
// input image. If the graph were to be re-used for multiple input images, a placeholder would
// have been more appropriate.
final Output<String> input = b.constant("input", imageBytes);
final Output<Float> output =
b.div(
b.sub(
b.resizeBilinear(
b.expandDims(
b.cast(b.decodeJpeg(input, 3), Float.class),
b.constant("make_batch", 0)),
b.constant("size", new int[] H, W)),
b.constant("mean", mean)),
b.constant("scale", scale));
try (Session s = new Session(g))
return s.runner().fetch(output.op().name()).run().get(0).expect(Float.class);
This works, but gives the wrong labels.
tensorflow java inception
$endgroup$
add a comment |
$begingroup$
I am trying to run Tensorflow for image recognition (classification) in Java (JSE not Android).
I am using the code from here, and here.
It works for Inceptionv3 models, and for models retrained from Inceptionv3.
But for MobileNet models it does not work, (such as following this article).
The code works, but gives the wrong results (wrong classify labels). What code/settings are required to use MobileNet from Java?
The code that works for Inceptionv3 is
try (Tensor image = Tensor.create(imageBytes))
float[] labelProbabilities = executeInceptionGraph(graphDef, image);
int bestLabelIdx = maxIndex(labelProbabilities);
result.setText("");
result.setText(String.format(
"BEST MATCH: %s (%.2f%% likely)",
labels.get(bestLabelIdx), labelProbabilities[bestLabelIdx] * 100f));
System.out.println(
String.format(
"BEST MATCH: %s (%.2f%% likely)",
labels.get(bestLabelIdx), labelProbabilities[bestLabelIdx] * 100f));
This works of Inceptionv3 models, but not MobileNet,
Gives the error, "Expects args[0] to be float but string is provided"
For MobileNet we tried the code,
try (Graph g = new Graph())
GraphBuilder b = new GraphBuilder(g);
// Some constants specific to the pre-trained model at:
// https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip
//
// - The model was trained with images scaled to 224x224 pixels.
// - The colors, represented as R, G, B in 1-byte each were converted to
// float using (value - Mean)/Scale.
final int H = 224;
final int W = 224;
final float mean = 128f;
final float scale = 1f;
// Since the graph is being constructed once per execution here, we can use a constant for the
// input image. If the graph were to be re-used for multiple input images, a placeholder would
// have been more appropriate.
final Output<String> input = b.constant("input", imageBytes);
final Output<Float> output =
b.div(
b.sub(
b.resizeBilinear(
b.expandDims(
b.cast(b.decodeJpeg(input, 3), Float.class),
b.constant("make_batch", 0)),
b.constant("size", new int[] H, W)),
b.constant("mean", mean)),
b.constant("scale", scale));
try (Session s = new Session(g))
return s.runner().fetch(output.op().name()).run().get(0).expect(Float.class);
This works, but gives the wrong labels.
tensorflow java inception
$endgroup$
$begingroup$
Have you found an answer to your question? Did you manage to get MobileNet to run without using TensorFlow lite?
$endgroup$
– Henry
Aug 25 '18 at 10:49
1
$begingroup$
No, we gave up running Tensorflow in Java, and switched to Python.
$endgroup$
– James
Aug 26 '18 at 12:30
$begingroup$
Thanks, I am currently also failing at setting up MobileNet. I might switch to Python, too.
$endgroup$
– Henry
Aug 26 '18 at 12:52
add a comment |
$begingroup$
I am trying to run Tensorflow for image recognition (classification) in Java (JSE not Android).
I am using the code from here, and here.
It works for Inceptionv3 models, and for models retrained from Inceptionv3.
But for MobileNet models it does not work, (such as following this article).
The code works, but gives the wrong results (wrong classify labels). What code/settings are required to use MobileNet from Java?
The code that works for Inceptionv3 is
try (Tensor image = Tensor.create(imageBytes))
float[] labelProbabilities = executeInceptionGraph(graphDef, image);
int bestLabelIdx = maxIndex(labelProbabilities);
result.setText("");
result.setText(String.format(
"BEST MATCH: %s (%.2f%% likely)",
labels.get(bestLabelIdx), labelProbabilities[bestLabelIdx] * 100f));
System.out.println(
String.format(
"BEST MATCH: %s (%.2f%% likely)",
labels.get(bestLabelIdx), labelProbabilities[bestLabelIdx] * 100f));
This works of Inceptionv3 models, but not MobileNet,
Gives the error, "Expects args[0] to be float but string is provided"
For MobileNet we tried the code,
try (Graph g = new Graph())
GraphBuilder b = new GraphBuilder(g);
// Some constants specific to the pre-trained model at:
// https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip
//
// - The model was trained with images scaled to 224x224 pixels.
// - The colors, represented as R, G, B in 1-byte each were converted to
// float using (value - Mean)/Scale.
final int H = 224;
final int W = 224;
final float mean = 128f;
final float scale = 1f;
// Since the graph is being constructed once per execution here, we can use a constant for the
// input image. If the graph were to be re-used for multiple input images, a placeholder would
// have been more appropriate.
final Output<String> input = b.constant("input", imageBytes);
final Output<Float> output =
b.div(
b.sub(
b.resizeBilinear(
b.expandDims(
b.cast(b.decodeJpeg(input, 3), Float.class),
b.constant("make_batch", 0)),
b.constant("size", new int[] H, W)),
b.constant("mean", mean)),
b.constant("scale", scale));
try (Session s = new Session(g))
return s.runner().fetch(output.op().name()).run().get(0).expect(Float.class);
This works, but gives the wrong labels.
tensorflow java inception
$endgroup$
I am trying to run Tensorflow for image recognition (classification) in Java (JSE not Android).
I am using the code from here, and here.
It works for Inceptionv3 models, and for models retrained from Inceptionv3.
But for MobileNet models it does not work, (such as following this article).
The code works, but gives the wrong results (wrong classify labels). What code/settings are required to use MobileNet from Java?
The code that works for Inceptionv3 is
try (Tensor image = Tensor.create(imageBytes))
float[] labelProbabilities = executeInceptionGraph(graphDef, image);
int bestLabelIdx = maxIndex(labelProbabilities);
result.setText("");
result.setText(String.format(
"BEST MATCH: %s (%.2f%% likely)",
labels.get(bestLabelIdx), labelProbabilities[bestLabelIdx] * 100f));
System.out.println(
String.format(
"BEST MATCH: %s (%.2f%% likely)",
labels.get(bestLabelIdx), labelProbabilities[bestLabelIdx] * 100f));
This works of Inceptionv3 models, but not MobileNet,
Gives the error, "Expects args[0] to be float but string is provided"
For MobileNet we tried the code,
try (Graph g = new Graph())
GraphBuilder b = new GraphBuilder(g);
// Some constants specific to the pre-trained model at:
// https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip
//
// - The model was trained with images scaled to 224x224 pixels.
// - The colors, represented as R, G, B in 1-byte each were converted to
// float using (value - Mean)/Scale.
final int H = 224;
final int W = 224;
final float mean = 128f;
final float scale = 1f;
// Since the graph is being constructed once per execution here, we can use a constant for the
// input image. If the graph were to be re-used for multiple input images, a placeholder would
// have been more appropriate.
final Output<String> input = b.constant("input", imageBytes);
final Output<Float> output =
b.div(
b.sub(
b.resizeBilinear(
b.expandDims(
b.cast(b.decodeJpeg(input, 3), Float.class),
b.constant("make_batch", 0)),
b.constant("size", new int[] H, W)),
b.constant("mean", mean)),
b.constant("scale", scale));
try (Session s = new Session(g))
return s.runner().fetch(output.op().name()).run().get(0).expect(Float.class);
This works, but gives the wrong labels.
tensorflow java inception
tensorflow java inception
edited Feb 15 '18 at 17:14
Stephen Rauch
1,52551330
1,52551330
asked Feb 15 '18 at 16:58
JamesJames
8615
8615
$begingroup$
Have you found an answer to your question? Did you manage to get MobileNet to run without using TensorFlow lite?
$endgroup$
– Henry
Aug 25 '18 at 10:49
1
$begingroup$
No, we gave up running Tensorflow in Java, and switched to Python.
$endgroup$
– James
Aug 26 '18 at 12:30
$begingroup$
Thanks, I am currently also failing at setting up MobileNet. I might switch to Python, too.
$endgroup$
– Henry
Aug 26 '18 at 12:52
add a comment |
$begingroup$
Have you found an answer to your question? Did you manage to get MobileNet to run without using TensorFlow lite?
$endgroup$
– Henry
Aug 25 '18 at 10:49
1
$begingroup$
No, we gave up running Tensorflow in Java, and switched to Python.
$endgroup$
– James
Aug 26 '18 at 12:30
$begingroup$
Thanks, I am currently also failing at setting up MobileNet. I might switch to Python, too.
$endgroup$
– Henry
Aug 26 '18 at 12:52
$begingroup$
Have you found an answer to your question? Did you manage to get MobileNet to run without using TensorFlow lite?
$endgroup$
– Henry
Aug 25 '18 at 10:49
$begingroup$
Have you found an answer to your question? Did you manage to get MobileNet to run without using TensorFlow lite?
$endgroup$
– Henry
Aug 25 '18 at 10:49
1
1
$begingroup$
No, we gave up running Tensorflow in Java, and switched to Python.
$endgroup$
– James
Aug 26 '18 at 12:30
$begingroup$
No, we gave up running Tensorflow in Java, and switched to Python.
$endgroup$
– James
Aug 26 '18 at 12:30
$begingroup$
Thanks, I am currently also failing at setting up MobileNet. I might switch to Python, too.
$endgroup$
– Henry
Aug 26 '18 at 12:52
$begingroup$
Thanks, I am currently also failing at setting up MobileNet. I might switch to Python, too.
$endgroup$
– Henry
Aug 26 '18 at 12:52
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
Don't give to use in java :)
I had the same problem, try to change the scale value, I had the same labels from java and python after that.
// - The model was trained with images scaled to 224x224 pixels.
// - The colors, represented as R, G, B in 1-byte each were converted to
// float using (value - Mean)/Scale.
final int H = 224;
final int W = 224;
final float mean = 117f;
final float scale = 255f;
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "557"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f27858%2frunning-tensorflow-mobilenet-from-java%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Don't give to use in java :)
I had the same problem, try to change the scale value, I had the same labels from java and python after that.
// - The model was trained with images scaled to 224x224 pixels.
// - The colors, represented as R, G, B in 1-byte each were converted to
// float using (value - Mean)/Scale.
final int H = 224;
final int W = 224;
final float mean = 117f;
final float scale = 255f;
$endgroup$
add a comment |
$begingroup$
Don't give to use in java :)
I had the same problem, try to change the scale value, I had the same labels from java and python after that.
// - The model was trained with images scaled to 224x224 pixels.
// - The colors, represented as R, G, B in 1-byte each were converted to
// float using (value - Mean)/Scale.
final int H = 224;
final int W = 224;
final float mean = 117f;
final float scale = 255f;
$endgroup$
add a comment |
$begingroup$
Don't give to use in java :)
I had the same problem, try to change the scale value, I had the same labels from java and python after that.
// - The model was trained with images scaled to 224x224 pixels.
// - The colors, represented as R, G, B in 1-byte each were converted to
// float using (value - Mean)/Scale.
final int H = 224;
final int W = 224;
final float mean = 117f;
final float scale = 255f;
$endgroup$
Don't give to use in java :)
I had the same problem, try to change the scale value, I had the same labels from java and python after that.
// - The model was trained with images scaled to 224x224 pixels.
// - The colors, represented as R, G, B in 1-byte each were converted to
// float using (value - Mean)/Scale.
final int H = 224;
final int W = 224;
final float mean = 117f;
final float scale = 255f;
answered Feb 25 at 20:59
Eduardo SantAna da SilvaEduardo SantAna da Silva
1
1
add a comment |
add a comment |
Thanks for contributing an answer to Data Science Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f27858%2frunning-tensorflow-mobilenet-from-java%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
Have you found an answer to your question? Did you manage to get MobileNet to run without using TensorFlow lite?
$endgroup$
– Henry
Aug 25 '18 at 10:49
1
$begingroup$
No, we gave up running Tensorflow in Java, and switched to Python.
$endgroup$
– James
Aug 26 '18 at 12:30
$begingroup$
Thanks, I am currently also failing at setting up MobileNet. I might switch to Python, too.
$endgroup$
– Henry
Aug 26 '18 at 12:52