Upon entering the room, I was startled to find James Bond on all fours, frantically crawling on the floor. Fear gripped me as I wondered if the building was besieged by enemies, poised to unleash a barrage of gunfire.
“What’s wrong? Are we under attack?” I stammered, my voice barely audible in the tension of the moment.
“Quiet!” Bond commanded sharply. “It’s worse than you think. Don’t move. Stay right where you are.”
“What’s happened?” I whispered, my shock intensifying.
“A screw from my glasses has fallen to the floor. Don’t step on it!” Bond explained tersely as he slowly rose from the ground. With practiced ease, he produced a miniature camera from his pocket, capturing an image and manipulating the device. “Aha! There it is,” he declared triumphantly, plucking the once-invisible screw from the floor, his expression smoothing into satisfaction.
“How did you manage to locate such a small object?” I marveled.
“I have a high-resolution camera equipped with an embedded neural network capable of swiftly identifying any requested object within its field of view,” Bond revealed.
“Remarkable technology! I can envision its applications in locating hidden aircraft or missiles in space photographs,” I said, impressed by the possibilities.
“Indeed, it can” Bond agreed, “though its primary function is to locate my lost glasses screws on the floor.”
Intrigued by this technological marvel, I endeavoured to replicate it on my laptop.
I simulated images of a screw in various locations and orientations. Then, I mimicking the dirty floor in Bond’s room (it was quite cluttered, by the way).
Employing a simple convolutional neural network, I devised a method to scan the floor sector by sector, successfully localizing the screw while disregarding unrelated objects.
Works fine! It is probably as good a network as that embedded in the Bond’s camera.
It’s been trained to find lost screws. Perhaps we should redirect its capabilities toward more valuable pursuits? Searching for lost friends? Good moods? Happiness?
The Python codes can be found in the pdf version of this document: Full Text with Codes.
Comments
2 responses to “To find a needle in a haystack”
Hi Pavel, I checked your code and found some tricking there. You break the image on the fixed fragments. If the screw comes near the boundary of the fragment it is not found.
This issue is easily fixed by adding the second grid shifted relative the first one. Such network will catch 95% cases and eventually localize the object more precisely.

This is however not essential. You can infinitely improve the precision and robustness of the neural network, especially if you are paid for that. My manuscript is not a tutorial on machine learning but rather a key to understanding of what is going on. I see from your question that you already got the point.