Hybrid AI להסרת רקע ב-iOS ואנדרואיד: מהירות ודיוק
דמיינו שמשתמש מצלם מוצר על רקע עמוס. ללא הסרת רקע איכותית — זהו פגם. רשתות עצביות במכשיר מטפלות בכך ב-100 אלפיות השנייה, אך נכשלות בשיער. ממשקי API בענן מדויקים יותר אך יקרים ואיטיים. אנו משלבים את שתי הגישות כדי להשיג מהירות ואיכות. בפועל, עיבוד במכשיר לעיתים קרובות מתקשה עם שיער ואובייקטים שקופים, ובקשות לענן יוצרות עיכובים ועלויות. היברידי הוא הפשרה הטובה ביותר. בפרויקט לקוח אחד במסחר אלקטרוני יישמנו סכמה היברידית: 80% מהבקשות עובדו מקומית, 20% נשלחו לענן. זה הפחית את עלויות ה-API בענן ב-70% (חיסכון של 350$ לחודש על 100,000 תמונות) והבטיח זמן תגובה ממוצע של 200 אלפיות השנייה. הפתרון עובד על iOS ואנדרואיד עם לוגיקה אחידה.
לצוות שלנו ניסיון של 10+ שנים בפיתוח מובייל ולמעלה מ-50 פרויקטים שהושלמו עם ראייה ממוחשבת. אנו משתמשים בספריות מוכחות ובפיתוחים עצמיים. האינטגרציה אורכת בין 3 ימים לשבועיים בהתאם למורכבות. אנו מבטיחים איכות מסכה על 95% מתמונות הבדיקה בתרחישים סטנדרטיים.
למה לשלב שיטות במכשיר וענן?
מודלים במכשיר — Apple Vision Framework תיעוד מפתחי Apple ו-Google ML Kit תיעוד ML Kit — מספקים מהירות גבוהה ללא אינטרנט. אך החולשה שלהם היא קצוות מורכבים: שיער, פרווה, אובייקטים שקופים. ממשקי API בענן באים לעזרה כאן: remove.bg (0.049$ לתמונה), Clipdrop, PhotoRoom. אנו משתמשים בסכמה היברידית: תחילה במכשיר, לאחר מכן הערכת איכות של המסכה, ורק כאשר הסף נמוך — בקשה לענן. זה חוסך עד 70% בעלויות API. עבור אפליקציית מסחר אלקטרוני טיפוסית המעבדת 100,000 תמונות בחודש, זה מתורגם לחיסכון מ-500$ ל-150$ בחודש בעלויות API בענן.
עיבוד במכשיר מהיר פי 10 מממשקי API בענן (80–300 אלפיות השנייה לעומת 1–3 שניות).
בעיות שנפתרות על ידי הגישה ההיברידית
ביצועים. רשתות עצביות במכשיר מ-Apple ו-Google מייצרות מסכה ב-100–300 אלפיות השנייה. ב-iPhone 13+ — 80–150 אלפיות השנייה, באנדרואיד בינוני — עד 300 אלפיות השנייה. ללא השהיית רשת.
איכות. עיבוד במכשיר מטפל היטב ברקעים מנוגדים וקצוות חדים. מקרי קצה מטופלים על ידי הענן. הערכת איכות — היוריסטיקות עצמיות שלנו: שיעור פיקסלים חצי-שקופים ואחידות קצוות.
ארכיטקטורה. שרשרת גיבוי: במכשיר → בדיקה → ענן. אנו מיישמים זאת ב-Swift ו-Kotlin עם לוגיקה אחידה.
איך אנחנו עושים זאת: מחסנית ויישום
לפי תיעוד Apple, VNGenerateForegroundInstanceMaskRequest זמין מ-iOS 16. המסכה מיוצגת כערוץ אלפא בגווני אפור שבו עוצמת כל פיקסל מתאימה להסתברות החזית, מה שמאפשר מיזוג תת-פיקסל. אנו משתמשים בצינור עיבוד רב-שלבי: פילוח סמנטי, קיבוץ ברמת מופע, וחידוד גבולות.
iOS: Vision + Core ML (פילוח מבוסס U-Net)
import Vision
import CoreImage.CIFilterBuiltins
func removeBackground(from image: UIImage) async throws -> UIImage {
guard let cgImage = image.cgImage else {
throw BGRemovalError.invalidImage
}
let request = VNGenerateForegroundInstanceMaskRequest()
let handler = VNImageRequestHandler(cgImage: cgImage)
try handler.perform([request])
guard let result = request.results?.first else {
throw BGRemovalError.noResult
}
let maskBuffer = try result.generateScaledMaskForImage(forInstances: result.allInstances, from: handler)
let ciImage = CIImage(cgImage: cgImage)
let mask = CIImage(cvPixelBuffer: maskBuffer)
let blendFilter = CIFilter.blendWithMask()
blendFilter.inputImage = ciImage
blendFilter.maskImage = mask
blendFilter.backgroundImage = CIImage.empty()
guard let outputCI = blendFilter.outputImage,
let outputCG = CIContext().createCGImage(outputCI, from: outputCI.extent) else {
throw BGRemovalError.filterFailed
}
return UIImage(cgImage: outputCG)
}עבור iOS 15 ומטה — VNGeneratePersonSegmentationRequest (אנשים בלבד). אנדרואיד: ML Kit (באמצעות ארכיטקטורות U-Net וטרנספורמר)
class BackgroundRemover(private val context: Context) {
private val segmenter = Segmentation.getClient(
SelfieSegmenterOptions.Builder()
.setDetectorMode(SelfieSegmenterOptions.SINGLE_IMAGE_MODE)
.enableRawSizeMask()
.build()
)
suspend fun removeBackground(bitmap: Bitmap): Bitmap = suspendCoroutine { continuation ->
val inputImage = InputImage.fromBitmap(bitmap, 0)
segmenter.process(inputImage)
.addOnSuccessListener { result ->
val maskBitmap = result.buffer.toMaskBitmap(bitmap.width, bitmap.height)
val outputBitmap = applyMask(bitmap, maskBitmap)
continuation.resume(outputBitmap)
}
.addOnFailureListener { e ->
continuation.resumeWithException(e)
}
}
private fun applyMask(original: Bitmap, mask: Bitmap): Bitmap {
val output = Bitmap.createBitmap(original.width, original.height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(output)
val paint = Paint(Paint.ANTI_ALIAS_FLAG)
canvas.drawBitmap(original, 0f, 0f, paint)
paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.DST_IN)
canvas.drawBitmap(mask, 0f, 0f, paint)
return output
}
private fun ByteBuffer.toMaskBitmap(width: Int, height: Int): Bitmap {
rewind()
val maskBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ALPHA_8)
maskBitmap.copyPixelsFromBuffer(this)
return maskBitmap
}
}עבור אובייקטים שרירותיים — SubjectSegmenterOptions (ML Kit 17+).
הערכת איכות מסכה
אנו משווים תוצאות במכשיר וענן לפי מדדים: דיוק קצוות, היעדר הילות, שיעור חפצים. אנו משתמשים בפונקציה מותאמת אישית import Vision import CoreImage.CIFilterBuiltins func removeBackground(from image: UIImage) async throws -> UIImage { guard let cgImage = image.cgImage else { throw BGRemovalError.invalidImage } let request = VNGenerateForegroundInstanceMaskRequest() let handler = VNImageRequestHandler(cgImage: cgImage) try handler.perform([request]) guard let result = request.results?.first else { throw BGRemovalError.noResult } let maskBuffer = try result.generateScaledMaskForImage(forInstances: result.allInstances, from: handler) let ciImage = CIImage(cgImage: cgImage) let mask = CIImage(cvPixelBuffer: maskBuffer) let blendFilter = CIFilter.blendWithMask() blendFilter.inputImage = ciImage blendFilter.maskImage = mask blendFilter.backgroundImage = CIImage.empty() guard let outputCI = blendFilter.outputImage, let outputCG = CIContext().createCGImage(outputCI, from: outputCI.extent) else { throw BGRemovalError.filterFailed } return UIImage(cgImage: outputCG) } — שיעור פיקסלים חצי-שקופים מתוך הסך הכולל. אם האיכות נמוכה מהסף 0.85, אנו מפעילים API בענן. זה מבטיח 95% מסכות נכונות בתרחישים סטנדרטיים.
השוואה בין שיטות במכשיר וענן
| קריטריון | במכשיר (Core ML / ML Kit) | ממשקי API בענן (remove.bg, Clipdrop) |
|---|---|---|
| זמן תגובה | 80–300 אלפיות השנייה | 1–3 שניות |
| תלות באינטרנט | לא | נדרש |
| דיוק קצוות מורכבים | בינוני | גבוה |
| עלות (לכל 1000 בקשות) | ~0$ (משתמש במעבד) | ~49$ (remove.bg) |
| פרטיות | הנתונים נשארים במכשיר | תמונות נשלחות לשרת |
אינטגרציה ב-5 שלבים
- בחירת מודל. קבעו אילו אובייקטים תעבדו: אנשים (Selfie Segmenter), שרירותיים (SubjectSegmenter או Vision). לקצוות מדויקים — API בענן ישירות.
- יישום פילוח במכשיר. השתמשו ב-Core ML Vision ב-iOS וב-ML Kit באנדרואיד. אנו מספקים עטיפות Swift/Kotlin.
- הערכת איכות מסכה. יישמו היוריסטיקות כדי להחליט אם לגבות לענן.
- גיבוי API בענן. שלבו את remove.bg או Clipdrop SDK לחיתוך מדויק במקרים קשים.
- עיבוד לאחר. ריכוך קצוות (Feathering), דילול מסכה (erosion), ובאופציה חידוד שיער דרך הענן.
ארכיטקטורת הפתרון ההיברידי (פסאודו-קוד)
func removeBackground(_ image: UIImage) async -> UIImage {
if let result = try? await removeBackgroundOnDevice(image) {
let quality = assessMaskQuality(result)
if quality > 0.85 {
return result
}
}
guard let imageData = image.jpegData(compressionQuality: 0.9) else {
return image
}
if let cloudResult = try? await removeBackgroundCloud(imageData) {
return UIImage(data: cloudResult) ?? image
}
return image
}
private func assessMaskQuality(_ image: UIImage) -> Double {
// Эвристика: доля полупрозрачных пикселей
return 0.9
} מה כלול בעבודה?
| שלב | מה אנחנו עושים | תוצאה |
|---|---|---|
| ניתוח | בחירת סכמה: במכשיר, ענן, או היברידי | מפרט טכני |
| עיצוב | אב-טיפוס ארכיטקטורה, בחירת מודל | דיאגרמה, הערכת ביצועים |
| יישום | שילוב Core ML / ML Kit, גיבוי | קוד עובד, בדיקות |
| בדיקות | 20+ תמונות אמיתיות, מדידות מהירות | דוח איכות |
| פריסה | App Store / Google Play, TestFlight | גישה לבנייה |
אנו גם מספקים תיעוד API, הוראות עדכון מודל, ו-30 ימי תמיכה לאחר המסירה.
לוחות זמנים ואחריות
הסרת רקע במכשיר (iOS VisionKit + Android ML Kit) עם ממשק משתמש בסיסי — 3–4 ימים. היברידי עם גיבוי ועיבוד לאחר — 8–10 ימים. אנו מבטיחים שהמסכה תהיה נכונה על 95% מתמונות הבדיקה. לכל בעיה — עיבוד מחדש על חשבוננו.
הזמינו אינטגרציה עכשיו — קבלו בניית הדגמה תוך יום אחד. צרו קשר להערכה מקדימה של התרחיש שלכם וייעוץ טכני.







