זיהוי בעלי חיים מתמונות באפליקציות מובייל
משתמש מצלם ציפור על ענף — והיא עפה לה בזמן שהוא מרים את הטלפון. אנחנו נתקלים בבעיה הזו כל הזמן: מלבד דיוק הסיווג, צריך לחשוב גם על מהירות הצילום. אנו מיישמים חציצת פריימים (Frame Buffering) ובוחרים את הצילום הפחות מטושטש — הבדל מהותי מזיהוי עצמים סטטי. האתגר גדל אם החיה זזה או שהתאורה חלשה. הצוות שלנו, עם ניסיון של למעלה מ-5 שנים בפיתוח מובייל ו-30+ פרויקטי AI שהושלמו, עוזר ללקוחות ליישם זיהוי בעלי חיים בדיוק של 85%+ למינים פופולריים. משתמשים מתלוננים לעיתים קרובות שהאפליקציה לא מזהה חיה אם היא מוסתרת חלקית או בצל. אנחנו פותרים זאת עם עיבוד מקדים של תמונה: התאמה אוטומטית של בהירות וניגודיות, ושימוש במודלים שאומנו על תנאי צילום מגוונים. צרו קשר — נבחן את הפרויקט שלכם תוך יום אחד.
איך בוחרים מודל?
המשימה תלויה מאוד במחלקת החיות המטופלת. ממשקי API מוכנים מכסים אלפי מינים, אבל גזעים נדירים עשויים לדרוש מודל מותאם אישית.
| קטגוריה | API / מודל מוכן | מספר מינים |
|---|---|---|
| ציפורים | Merlin Bird ID (Cornell Lab API), iNaturalist | 10,000+ |
| חיות בר | iNaturalist API, INat Seek SDK | 100,000+ טקסות |
| דגים | iNaturalist, FishVerify API | 30,000+ |
| חיות מחמד (גזע) | Google Cloud Vision, CoreML מותאם | 200–400 גזעים |
| חרקים | iNaturalist, iNat Seek | 500,000+ מינים |
לקהל מעורב, iNaturalist API הוא הבחירה האופטימלית: בסיס טקסונומי רחב, ציון ביטחון ברמת מין/סוג/משפחה, ו-SDK למכשיר — Seek ל-iOS ואנדרואיד. שימוש ב-API מוכן במקום מודל מותאם חוסך בין $10,000 ל-$30,000 בפיתוח. רישיון מסחרי של iNaturalist מתחיל ב-$500 לחודש, זול משמעותית מבניית מסד טקסונומי משלכם.
"iNaturalist API מספק גישה ליותר מ-400,000 תצפיות מינים" — מסמכי iNaturalist
שילוב iNaturalist Seek SDK באנדרואיד
class AnimalRecognitionManager(private val context: Context) { // Seek использует TFLite модель ~15MB
private val seekModel by lazy { SeekClassifier(context, modelPath = "seek_v2.tflite") }
fun recognizeFromBitmap(bitmap: Bitmap): List<TaxonResult> {
val resized = Bitmap.createScaledBitmap(bitmap, 299, 299, true)
val results = seekModel.classify(resized)
return results
.filter { it.score > 0.15f }
.sortedByDescending { it.score }
.map { result ->
TaxonResult(
taxonId = result.taxonId,
name = result.name,
commonName = result.commonName,
rank = result.rank, // SPECIES, GENUS, FAMILY
confidence = result.score,
photoUrl = result.defaultPhotoUrl
)
}
}
}הדרגה (Rank) חשובה לממשק המשתמש: אם הביטחון ברמת המין הוא 30%, יותר כנה להציג "משפחת פרושיים (85%)" מאשר מין ספציפי עם דיוק נמוך.
למה חציצת פריימים היא קריטית
חציצת פריימים היא הדרך היחידה לקבל תמונה חדה של חיה נעה. השוו לצילום רגיל:
| שיטת צילום | אחוז צילומים מטושטשים | עיכוב | המלצה |
|---|---|---|---|
class AnimalRecognitionManager(private val context: Context) { // Seek использует TFLite модель ~15MB private val seekModel by lazy { SeekClassifier(context, modelPath = "seek_v2.tflite") } fun recognizeFromBitmap(bitmap: Bitmap): List<TaxonResult> { val resized = Bitmap.createScaledBitmap(bitmap, 299, 299, true) val results = seekModel.classify(resized) return results .filter { it.score > 0.15f } .sortedByDescending { it.score } .map { result -> TaxonResult( taxonId = result.taxonId, name = result.name, commonName = result.commonName, rank = result.rank, // SPECIES, GENUS, FAMILY confidence = result.score, photoUrl = result.defaultPhotoUrl ) } } } (רגיל) |
~30% | מיידי | לעצמים סטטיים |
| חציצת פריימים + ניקוד חדות | ~10% | עיכוב 0.3–0.5 שניות | לחיות נעות |
חציצת פריימים מפחיתה את אחוז הצילומים המטושטשים פי שלושה בהשוואה לצילום רגיל.
צילום מהיר לעצמים נעים
// iOS: буферизация кадров для выбора лучшего
class AnimalCaptureViewController: UIViewController {
private var frameBuffer: [CMSampleBuffer] = []
private let bufferSize = 10 // последние 10 кадров
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
frameBuffer.append(sampleBuffer)
if frameBuffer.count > bufferSize {
frameBuffer.removeFirst()
}
}
// При нажатии кнопки — выбрать наименее смазанный кадр из буфера
func captureWithMotionCompensation() -> UIImage? {
return frameBuffer
.compactMap { UIImage(from: $0) }
.max(by: { sharpnessScore($0) < sharpnessScore($1) })
}
}גישה זו מפחיתה צילומים מטושטשים פי שלושה בהשוואה ל-capturePhoto() רגיל.
היבטי רישוי ומשפט
בשימוש ב-iNaturalist API, עמדו בתנאיהם: שימוש לא מסחרי הוא חינם, שימוש מסחרי דורש מנוי. לבדיקת App Store, עליכם לציין שימוש ב-App Tracking Transparency (ATT) אם אתם אוספים נתונים לאימון.
תהליך העבודה
- ניתוח דרישות — הגדרת מחלקות חיות, תנאי צילום, מספר מינים מטופל.
- בחירת מודל — iNaturalist, CoreML מותאם או TFLite בהתאם למשימה.
- שילוב SDK — סוהר ל-iOS (Swift) ואנדרואיד (Kotlin).
- אופטימיזציית צילום — חציצת פריימים, ניקוד חדות, התאמה לתאורה חלשה.
- בדיקות על תמונות אמיתיות — הערכת דיוק, בדיקות A/B עם משתמשים.
- תמיכה לאחר השקה — עדכוני מסד טקסונומי, התאמות לגרסאות OS חדשות.
מה כלול
- תיעוד שילוב והתקנה.
- גישה לחנות (App Store Connect, Google Play Console).
- הדרכת צוות על שימוש ב-SDK.
- תמיכה ל-30 יום לאחר השקה.
למה לבחור בנו
יש לנו מפתחי iOS ואנדרואיד מוסמכים, ניסיון עם iNaturalist API, ואנחנו מבטיחים דיוק סיווג של 85%+ למינים פופולריים. אנחנו מספקים סוהר: מבחירת מודל ועד פרסום בחנות. צרו קשר — נבחן את הפרויקט שלכם תוך יום אחד. הזמינו יישום זיהוי בעלי חיים עוד היום.
הערכות זמנים
שילוב API יחיד או Seek SDK עם ממשק משתמש בסיסי — יום אחד. הוספת חציצת פריימים, כרטיס תיאור חיה עם קישורים ל-iNaturalist, היסטוריית זיהוי — עד יומיים למשימה בסיסית, עד 1.5 שבועות לדרישות לא סטנדרטיות.







