Muammo
Fermer barg yoki mevadagi dog'ni ko'radi, lekin bu qanday kasallik ekanini va nima qilish kerakligini bilmaydi. Mutaxassisga murojaat qilish har doim ham imkon emas, internetdagi ma'lumot esa asosan chet tilida va boshqa iqlim uchun yozilgan.
Kerak bo'lgan narsa oddiy: telefonda rasmga olasan, javobni o'zbek tilida va shu yerdagi sharoitga mos holda olasan.
Nima qurdim
Next.js frontend Vercel'da, FastAPI backend esa Hugging Face Spaces'da ishlaydi. Uchta tahlil turi bor: o'simlik turini aniqlash, kasallik tahlili va yer tahlili. Har bir natija Supabase'ga model nomi va ishlov berish vaqti bilan yoziladi.
O'zbekistonning 14 ta hududi uchun iqlim, tuproq va ekin ma'lumotlari Leaflet xaritasida ko'rsatiladi.
Saytdan tashqari ikkinchi kirish nuqtasi — Telegram bot, chunki ko'p fermer uchun Telegram brauzerdan qulayroq.
Qabul qilgan asosiy qarorim
Boshida YOLOv8 bilan qilmoqchi edim. Keyin Gemini Vision'ga o'tdim: Google'da o'simliklarga oid ma'lumot juda ko'p, va men o'zim yig'a oladigan ma'lumotdan ancha kengroq. Shuning uchun aniqlash sifati yuqoriroq bo'ladi deb hisobladim.
Lekin faqat Gemini'ga tayanmadim. O'zim EfficientNet-B3 modelini 109 ta sinf uchun o'rgatdim va ikkovini birga ishlatdim.
Ular quyidagicha birlashadi: avval Gemini rasmni ko'rib kategoriyani aniqlaydi. Keyin mening modelim ishga tushadi, lekin softmax'da o'sha kategoriyadan tashqaridagi barcha sinflar nolga tushiriladi va qayta normallashtiriladi — ya'ni Gemini'ning qarori mening modelimning qidiruv maydonini toraytiradi. Oxirida ishonch darajasiga qarab qaysi biri g'olib bo'lishi hal qilinadi. Agar ishonch 0.40 dan past bo'lsa, tizim javob bermaydi va yaxshiroq rasm so'raydi. Qaysi yo'l ishlatilgani har bir natijada saqlanadi.
Eng qiyin joyi
Eng qiyin qismi ma'lumot bo'ldi. Modelni o'rgatish uchun o'simliklar haqida juda katta hajmdagi ma'lumot kerak ekan. Platforma samarali ishlashi uchun shunga o'xshash ma'lumotni ko'proq to'plash zarurligini ish jarayonida tushundim.
Bu men uchun asosiy saboq bo'ldi: model arxitekturasi emas, ma'lumot sifati va hajmi natijani belgilaydi.
Natija va keyingi qadam
Backend jonli ishlaydi, tahlil natijalari bazaga yoziladi. Frontend uch tilda (o'zbek, rus, ingliz).
Keyingi ish — o'rgatish uchun ma'lumot to'plamini kengaytirish va model sifatini o'lchab, natijani hujjatlashtirish.
