#ImageRecognition in C# using #tensorflow #inception
Ever been faced with that situation, where you are confronted with fluffy grey animal, with four legs, whiskers, big ears and you just have no idea what it is ?
Never fear, with Artifical intelligence, you can now tell, with 12% confidence, that this is infact a tabby cat!
Ok, in fairness, what this is going to be used for is image tagging, so that a given image can be tagged based on image contents with no other context. So part of a bigger project.
Anyway, This is based on EMGU, and the Inception TensorFlow model. Which I have packaged into a web service.
You need to install the following nuget packages
Install-Package Emgu.TF
Install-Package EMGU.TF.MODELS
Then, ensuring your application is running in 64 bit mode (x86 doesn’t cut it!)
Run the code;
Inception inceptionGraph = new Inception(null, new string[] { Server.MapPath(@”models\tensorflow_inception_graph.pb”),
Server.MapPath(@”models\imagenet_comp_graph_label_strings.txt”) });
Tensor imageTensor = ImageIO.ReadTensorFromImageFile(fileName, 224, 224, 128.0f, 1.0f / 128.0f);float[] probability = inceptionGraph.Recognize(imageTensor);
Where filename is a local image file of our trusty moggie, and the output is an array of floats corresponding to the likelyhood of the image matchine one of the labels in inceptionGraph.labels
The 224, 224 bit is still a bit of dark magic to me, and I’d love someone to explain what those are!
I think there are missing parameters, so it will be like below;
inceptionGraph.Init(new string[] { “retrained_graph.pb”, “retrained_labels.txt” }, “https://github.com/emgucv/models/raw/master/inception_flower_retrain/”, “DecodeJpeg/contents”, “final_result”);
But, it gives an error which is “Expects arg[0] to be string but float is provided”.
How can I solve this error?
LikeLike