Farm tech
Can a phone photo spot fake saffron?

In short: Saffron Check is a research prototype that looks at a photo of one saffron thread and sorts it into one of five groups: two kinds of pure saffron and three common fakes. On 75 test photos it had never seen, it was right 97.3% of the time (73 of 75). It runs in your browser, and your photo never leaves your phone. It is not a certified food-safety test, and it should never be used to accuse a seller.
Why saffron gets faked
By weight, saffron is the most expensive spice there is, which makes it one of the most faked. Three tricks are common. The pale stem of the flower is sold as the red stigma, the same stems are dyed red, or the threads are made entirely of something else.
Real saffron varies too. Stigmas dried in a dryer and stigmas dried by pressing differ in colour and shape, so an honest grower's saffron can look suspicious to a buyer who has only seen one kind.
What the model sees
The project began as my B.Tech thesis in Agricultural and Food Engineering at IIT Kharagpur. I photographed 500 single threads of saffron collected in Pampore with a phone, one thread per photo on paper, 100 photos for each of five groups:
- pure saffron, dried in a dryer
- pure saffron, dried by pressing
- dried saffron stem
- saffron stem coloured with food dye
- synthetic saffron

One exact duplicate was removed. The remaining 499 photos were split into 349 for training, 75 for tuning and 75 kept aside for the final test, with each group equally represented in every part.
How it was trained
A few hundred photos are rarely enough to train an image model from scratch. Saffron Check starts instead from ResNet50V2, a network already trained on over a million everyday photos, and retrains its top layers on saffron. I compared three such networks and chose ResNet50V2 on the tuning photos. It won by a single photo, so EfficientNetB3 would have done almost as well.
Colour is the main clue that separates real stigma from dyed stems and synthetic thread. During training the photos were flipped, rotated, cropped and brightened to make the model sturdier, but their colour was shifted only slightly. Shift it too far and a dyed stem starts to look like the real thing, and the model learns to ignore the one clue it most needs.
The results
The 75 test photos were used once, at the very end. The model got 73 of them right. Both mistakes were dyed stems that it called synthetic saffron. Both are red-dyed material that isn't stigma, and my original thesis model confused the same two groups.
It was 78.6% sure of one of those two wrong answers, so a high confidence figure from this model does not mean it is right.
Where it cheats
Grad-CAM heatmaps show which parts of a photo pushed the model towards its answer. For dried stems, dyed stems and synthetic threads, the heat sits on the thread itself. For the two pure groups it often spreads over the paper behind the thread.

The cause is how the photos were taken. The two pure groups were photographed on different paper from the fakes, so the model partly learnt to recognise the paper. The test photos were taken the same way, which is why the 97.3% can't reveal the problem and the heatmaps can.
The fix is to photograph every group on the same background under the same light, and to test on photos taken on other days, with other phones and on other paper.
What it can't do
- It has only seen single threads on light paper, from one phone and one growing area. Anything else is untested.
- It always picks one of the five groups. It has no "this isn't saffron" answer, though it does warn you when it is unsure.
- Its confidence figures aren't calibrated, as the 78.6% mistake shows.
- It is a research and teaching prototype. It isn't a laboratory or food-safety test.
Try it
The Saffron Check demo runs in your browser. The 47 MB model downloads once and is then kept on your device, and your photo is never uploaded. Ten of the test photos are built in, including one of its real mistakes.
Is this part of AI Health?
No. Saffron Check is a separate research project. Saffron screening in AI Health is listed as coming soon.
What's next
- Re-photograph every group on one background, under fixed light.
- Build a test set from other days, papers, phones and growing areas.
- Add a "not saffron" answer, and a way to find fake threads mixed in with real ones.
Further reading
- The code, results and model card on GitHub
- The live demo
- Momeny, M. et al. (2023). Grading and fraud detection of saffron via learning-to-augment incorporated Inception-v4 CNN. Food Control, 147, 109554.
