İçeriğe geç
Vaka Çalışması
Model Eğitimi
Uç Yapay Zekâ
Çevrim Dışı Öncelikli

FieldNet 1'i Eğitmek: 39 MB'a Sığan 5.077 Türlük Yaban Hayatı Sınıflandırıcısı

Ağustos 2026
22 dk
Alp Yalay
XLinkedIn
Rol
Yaratıcı, Ürün Mimarı & Model Eğitimi
Kullanılan Teknolojiler
PyTorch, TensorFlow Lite, MobileNetV4, React Native CLI, RTX 4080
Platform
iOS & Android (Çevrim Dışı Öncelikli)
Model Ölçeği
5.077 tür · 39 MB INT8 · %61,3 top-1

RealDex, bir telefona zorla sığdırılmış bilimsel bir görü transformatörü olan BioCLIP ile yayınlandı. Sonra onu değiştirdim. FieldNet 1, 5.077 hayvan türü üzerinde eğittiğim bir MobileNetV4 sınıflandırıcısı: top-1 doğruluğu %46,8'den %61,3'e çıkardı, ilk indirme boyutunu yarıdan fazla küçülttü ve INT8 niceleme sonrası neredeyse hiç doğruluk kaybetmedi. Bu, başarısız eğitim turunun, hileli kıyaslamanın ve neredeyse üç güne mal olan USB diskin hikâyesi.

1. İlk Modelden Sonra Gelen Soru

RealDex'in ilk sürümü bir paketleme problemiydi. BioCLIP, bir React Native kamera uygulaması için değil, bilimsel ölçekte biyolojik temsil öğrenimi için tasarlanmış bir görü transformatörü. Onu bir iPhone'a ve bir Android katlanabilire taşımak için grafiği dönüştürdüm, mobil çalışma zamanlarının reddettiği operatörleri değiştirdim, ağırlıkları INT8'e niceledim ve yanına ayrı bir tür vektörü veritabanı koydum. Çalıştı. O zaman başarı bu gibi görünüyordu.

Ama bir modeli yayınlamak ile doğru modeli seçmek iki ayrı iştir. BioCLIP türleri karar vererek değil, karşılaştırarak tanıyordu: fotoğrafı 512 boyutlu bir vektöre çeviriyor, sonra her tür için saklanan tek bir prototipe kosinüs benzerliğiyle bakıyordu. Kodlayıcı donmuştu. RealDex'in önemsediği tam 5.077 türü ayırt etmek için hiç eğitilmemişti. Güven skorları sık sık zayıftı, transformatör grafiği CPU'da kalıyordu ve ilk açılıştaki toplam yapay zekâ indirmesi yaklaşık 105 MB'a ulaşıyordu. Böylece rahatsız edici soruyu sordum: BioCLIP'i daha da optimize etmek yerine, RealDex onu değiştirmeli mi?

Cevap evetti ve gerekçesi yapısaldı. Donmuş bir kodlayıcı ile en yakın prototip eşleştirmesi, tasarımı gereği doğruluktan feragat eder; çünkü hattın hiçbir parçası gerçek etiket uzayı üzerinde eğitilmez. Eğitilmiş bir sınıflandırıcı ise doğrudan karar verir. Ayrıca mobil hızlandırıcılara çok daha iyi oturur, çünkü telefon GPU delegeleri evrişimli grafikleri çalıştırmak için yapılmıştır. Plan, RealDex'in mevcut YOLO dedektörünü bir kapı olarak ve bulut doğrulamasını yedek olarak korumak, yalnızca ortadaki parçayı değiştirmekti: hayvana ismini veren şeyi.

2. Projeyi Neredeyse Bitiren Üç Problem

Zor kısım modeli eğitmek değildi. Üç başarısızlıktı ve her biri, zararını verene kadar görünmez kaldı:

Kıyaslama Hileliydi

İlk karşılaştırmam BioCLIP'in lehineydi ve bu karşılaştırma geçersizdi. BioCLIP'in tür prototiplerini oluşturmak için kullanılan görüntülerin bir kısmı, değerlendirme havuzunda da yer alıyordu. Yani BioCLIP fiilen ezberlemiş olduğu fotoğraflar üzerinde test ediliyor, yeni modelim ise temiz test ediliyordu. Bu, yayınlanan uygulamadaki bir hata değildi. Deneydeki bir hataydı; daha kötüsü, çünkü kararlar deneye bakılarak veriliyor. Her BioCLIP prototipini yalnızca eğitim görüntülerinden yeniden ürettim ve karşılaştırmayı tekrarladım.

INT8 Niceleme Modeli Çökertti

İlk eğitilen model tam hassasiyette %33,0 top-1 aldı. Telefon için INT8'e sıkıştırıldığında yaklaşık %21'e düştü. On iki puan dönüşümde kayboldu. Sebep, düz sınıf skorlarıydı: model doğru türü sıklıkla üst sıralara koyuyordu, ama adaylar arasındaki sayısal farklar niceleme gürültüsünün sıralamayı bozacağı kadar küçüktü. Sıkıştırılamayan doğru bir model, mobil bir model değildir.

Bir USB Disk GPU'yu Açlıktan Öldürdü

RTX 4080 çoğunlukla boş beklerken eğitim sürünüyordu. Veri kümesi hâlâ harici bir USB sabit diskteydi ve saniyede yaklaşık 31 görüntü besliyordu. Aynı çalışma kümesi dahili bir SSD'de saniyede yaklaşık 301 görüntü besledi. USB hızında kalan epoch'ların 70 saatten fazla süreceği öngörülüyordu. Veriyi kopyalamak 11,7 dakika sürdü. Ders gösterişsiz ve açıkça söylenmeye değer: tek GPU'lu bir eğitim makinesinde darboğaz genellikle GPU değildir.

3. Mercek Altında: Başarısızlıklar Gerçekte Nasıl Göründü

Bunların hiçbiri temiz gerçekleşmedi ve her başarısızlığın kendine özgü şekli, saklanmaya değer olan kısım:

İlk Tur
BioCLIP'e Kaybetti
İlk ciddi deneme 36 GB bellekli bir M4 Max üzerinde çalıştı. Eğitim süreci veri kümesine erişimini kaybettiğinde 6. epoch'ta öldü ve kısmi model, BioCLIP'in %44,9'una karşı %33,0 aldı. Bunu mimari hakkında bir kanıt olarak görmedim. Model gözle görülür şekilde yetersiz eğitilmişti ve tur erken bitmişti; dürüst okuma, fikrin değil turun başarısız olduğuydu. RTX 4080 masaüstüne geçtim ve baştan başladım.
Takılma
VRAM'i Destiny 2 Tutuyordu
Yeniden başlatılan tur, tam olarak omurgayı çözdüğü anda iki kez takıldı; her seferinde 1 saat 46 dakikaya kadar süren bir bekleyişin ardından. Sebep bellek baskısıydı: Destiny 2'yi aynı GPU üzerinde açık bırakmıştım. Oyunu kapatıp yığın boyutunu 256'dan 128'e düşürmek sorunu çözdü ve kalan 38 epoch tek bir takılma olmadan tamamlandı.
Kıl Payı
İkisi de 5.077 İsim İçeren İki Etiket Dosyası
FieldNet 1 kendi etiket dosyasıyla gelir ve 5.077 indeksinin 4.798'i BioCLIP'inkinden farklı sıradadır. İki dosya da aynı türleri ve aynı sayıyı içerdiği için sınıf sayısı kontrolü geçer, ama her tahmin yanlış ismi alır. Bu, bir zamanlar RealDex'in kedim Mavi'yi böcek olarak tanımasına yol açan hatanın aynı sınıfı. Çözüm, modeli ve etiketleri tek bir sürümlenmiş yapıt olarak görmek ve satır sayarak değil SHA-256 özetiyle birlikte doğrulamak.

4. FieldNet 1 Nasıl İnşa Edildi

Dört aşama; her biri, bir sonrakinin anlam kazanması için doğru olmak zorundaydı:

01. 1. Aşama — Veri Kümesini Kurmak

Kaynak, yaklaşık 44 GB'lık iNaturalist 2021 train_mini arşiviydi. Bir dönüştürme betiği yalnızca hayvan kategorilerine eşlenen sınıfları tuttu; bitkileri, mantarları, protozoaları ve diğer âlemleri attı. Geriye 5.077 hayvan türü kaldı: 2.526 böcek, 1.486 kuş, 313 sürüngen, 246 memeli, 183 balık, 170 amfibi ve 153 örümcek. Kusursuz dengeyi zorlamak yerine her türü 50 görüntüyle sınırladım ve eğitim başlamadan önce her türden 5 görüntüyü, dokunulmamış bir nihai test kümesi olmak üzere ayırdım.

02. 2. Aşama — Sınıflandırıcıyı Eğitmek

FieldNet 1, ImageNet ile ön eğitilmiş bir MobileNetV4-Conv-L omurgasından başladı; yani sıfırdan değil, ince ayarla eğitildi. İki ısınma epoch'u yalnızca yeni sınıflandırma başlığını eğitti; bu, rastgele başlatılmış bir başlık yolunu bulurken ön eğitilmiş ağırlıkları korur. Ardından tam omurga 256x256 girdiyle 38 epoch daha açıldı: RandAugment, Mixup, CutMix, rastgele silme, etiket yumuşatma, stokastik derinlik, kosinüs öğrenme oranı çizelgesi ve ağırlıkların üstel hareketli ortalaması ile. Verimli tur 7 saat 20 dakika sürdü.

03. 3. Aşama — Keskinleştirme, Sonra İhracat

Niceleme çöküşünü düzeltmek için Mixup kapalı ve etiket yumuşatma sıfır olacak şekilde altı son epoch ekledim; tüm ağ, sert tek-sıcak hedeflere karşı eğitildi. Bu, kazanan skor ile rakipleri arasındaki sayısal farkı genişletir; nicelemenin ihtiyaç duyduğu şey tam olarak budur. Eğitim kaybı yaklaşık 3,7'den 0,75'e düştü, ama bu sayı tek başına pek bir şey kanıtlamaz — yumuşatılmış hedefleri kaldırmak kaybı mekanik olarak düşürür. Gerçek kanıt ihracattan sonra geldi: FP16 ve INT8 birbirinden 0,14 puan içinde kaldı.

04. 4. Aşama — Uygulamaya Almak

FieldNet 1, yanında çalışmak yerine erişim tabanlı yolun yerini aldı; bu da 10,5 MB'lık prototip veritabanını tamamen kaldırdı. Uygulama, ilk kurulumdan sonra tek bir 39 MB'lık INT8 dosyası indirir ve etkinleştirmeden önce SHA-256 özetini doğrular; yanında ayrıca özetlenen bir etiket dosyası ve coğrafi öncül vardır. Dağıtım bir Firebase Remote Config bayrağının arkasında durur, böylece model kapalı yayınlanıp platform ve sürüm bazında açılabilir; ve her tahmin, uygulama bir tür iddia etmeye razı olmadan önce bir güven kapısından geçer.

5. Ne Değişti

Ölçülen Sonuçlar

FieldNet 1 INT8, 5.077 tür genelinde %61,3 top-1 ve %81,7 top-5'e ulaşıyor; sızıntısız BioCLIP referansı ise %46,8 top-1 ve %73,4 top-5'te. Bu, 14,5 puanlık, yani göreli olarak yaklaşık %31'lik bir kazanç. INT8, FP16'ya karşı yalnızca 0,14 puana mal olurken dosyayı 39 MB'a indiriyor. İlk açılıştaki toplam yapay zekâ indirmesi yaklaşık 105 MB'dan yaklaşık 46 MB'a düştü. Bu etiket uzayında rastgele tahmin yaklaşık %0,02 alırdı.

%61,3
Top-1 Doğruluk
39 MB
Yayınlanan Model

Dürüst Geliştirici Hissi

"%61, neyin %61'i olduğunu bilmeden etkileyici gelmiyor. Bu, uygulamanın gerçekten yayınladığı YOLO dedektöründen gelen kırpmalar üzerinde değerlendirilen, bir telefonda çevrim dışı çalışan 39 MB'lık bir dosyadan gelen 5.077 ince taneli yaban hayatı sınıfı. Eğitim bittiğinde hiçbir şey hissetmedim. Karşılaştırma tablosu ekrana geldiğinde ve adil BioCLIP kolonu açıkça, tartışmasız daha düşük çıktığında hissettim."

6. Teknik Kayıt

Grafikler, yapıt dökümleri, kalibrasyon eşikleri ve abartmaya razı olmadığım ölçümler.

Her şeyi belirleyen kıyaslama

Aşağıdaki her sayı tek bir protokolden geliyor. Eğitim başlamadan önce veri kümesinden her türden 5 görüntü çıkardım; bu, dokunulmamış bir test kümesi üretti. O kareleri yayınlanan YOLOv8n dedektöründen geçirdim ve dedektörün hayvan bulduğu 10.918 kırpmayı tuttum. Sonra ihraç edilen her model aynı 10.918 kırpmayı gördü ve her modelin sınıf indekslerini kendi eşleşen etiket dosyasına karşı kontrol ettim.

Buradaki BioCLIP referansı yeniden kurulmuş olan. Tür prototipleri, orijinal prototiplerin değerlendirme havuzundan görüntü emdiğini fark ettikten sonra yalnızca eğitim görüntülerinden yeniden üretildi.

5.077 tür genelinde nihai kıyaslama

Dokunulmamış test kümesinden 10.918 YOLO kırpması

Top-1Top-5
FieldNet 1 — FP16 (75,6 MB)
61,4%
81,7%
FieldNet 1 — INT8 (39,0 MB)yayında
61,3%
81,7%
BioCLIP — INT8, sızıntısız (88,0 MB + prototipler)
46,8%
73,4%

FieldNet 1, sızıntısız BioCLIP referansına karşı 14,5 puan top-1 doğruluk kazanıyor. Yayınlanan model INT8; FP16'ya karşı 0,14 puana mal oluyor, dosya boyutunun yarısında.

+14,5
Puan top-1
%46,8'den %61,3'e, göreli ~%31
0,14
INT8'e kaybedilen puan
Başarısız tur ~12 puan kaybetti
%56
Daha küçük ilk indirme
~105 MB'dan ~46 MB'a
%0,02
Rastgele tahmin tabanı
5.077'de bir doğru cevap

Nihai model için bilerek bir FP32 doğruluk değeri yayınlamadım. Gerçekten yayınlanabilecek yapıtlar olan FP16 ve INT8'i değerlendirdim. Ölçmediğim üçüncü bir sayıyı alıntılamak dolgu olurdu.

Keskinleştirme dağıtımı neden kurtardı

Başarısız tur, anlaşılmaya değer bir örüntü gösterdi; çünkü bu örüntü yalnızca ihracattan sonra ortaya çıkıyor. Tam hassasiyetli model vasat ama işlevseldi. Sıkıştırılmış iki sürüm de kullanılamazdı.

Niceleme: çöküş, sonra toparlanma

Sayısal biçime göre top-1 doğruluk

Başarısız tur — FP3233%
Yetersiz eğitilmiş, 6. epoch'ta durdu
Başarısız tur — INT821%
Sıkıştırma ~12 puan yok etti
FieldNet 1 — FP1661,4%
FieldNet 1 — INT861,3%
Yayınlanan

Solda: terk edilen ilk tur; sıkıştırma 12 puan yok etti. Sağda: altı keskinleştirme epoch'undan sonra iki yayın biçimi 0,14 puan içinde uyuşuyor. Aynı mimari, farklı eğitim finali.

Mekanizma bir kez görülünce basit. Mixup ve etiket yumuşatma, modeli olasılığı kasten yaymaya eğitir; çünkü yumuşak hedefler aşırı güveni azaltır ve genellemeyi iyileştirir. Aynı zamanda üst adaylar arasındaki mesafeyi sıkıştırırlar. Sonra INT8 niceleme bu zaten daralmış farkları yuvarlar ve sıralama karışır.

Altı keskinleştirme epoch'u bunu tersine çevirdi. Mixup kapalı, etiket yumuşatma sıfır, tüm ağ eğitilebilir, hedefler sert tek-sıcak. Model karar vermeyi öğrendi. Eğitim kaybı yaklaşık 3,7'den 0,75'e düştü; bunu açıkça bir atılım olarak sunmak istemiyorum — yumuşatılmış hedefleri kaldırmak, model iyileşsin ya da iyileşmesin, kaybı aritmetik olarak düşürür. Önemli olan sonuç, FP16 ve INT8'in yakınsamasıydı.

Doğruluğa karşı boyut

Tüm projenin tezi tek bir grafikte. İyi olan yön yukarı ve sola.

Doğruluğa karşı yayınlanan dosya boyutu
40%55%70%080160Tanımlama modeli boyutu (MB)Top-1 doğrulukBioCLIP INT8 — 88 MBFieldNet 1 FP16 — 75,6 MBFieldNet 1 INT8 — 39 MB

BioCLIP, 88 MB'lık kodlayıcısının yanında 10,5 MB'lık bir prototip veritabanına da ihtiyaç duyar; yani gerçek ayak izi çizilenden daha sağdadır. FieldNet 1 INT8'in ihtiyacı 0,5 MB'lık bir etiket dosyası.

İlk açılış indirmesiBioCLIPFieldNet 1
YOLOv8n dedektörü6,4 MB6,4 MB
Tanımlama modeli88,0 MB39,0 MB
Tür prototipleri10,5 MByok
Etiketler ve öncüller1,6 MB~2,1 MB
Yaklaşık toplam~105 MB~46 MB

Erişim tabanlı yolu kaldırmak, bütün bir yapıt sınıfını kaldırdı. FieldNet 1 onun yerine bir coğrafi öncül taşıyor; bu da yerini aldığı prototip veritabanından küçük.

Depolama darboğazı

Projedeki en pahalı hatanın makine öğrenmesiyle hiçbir ilgisi yoktu.

Depolama aygıtına göre girdi verimi

GPU'ya ulaşan saniyedeki görüntü sayısı

Harici USB sabit disk31 görüntü/s
Öngörülen kalan süre: 70 saatten fazla
Dahili SSD301 görüntü/s
Gerçekleşen kalan süre: 7 sa 20 dk

11,7 dakikalık bir dosya kopyalama, kalan eğitim için öngörülen 70+ saati 7 saat 20 dakikaya çevirdi. Kısıt hiçbir zaman GPU değildi.

Eğitim zaman çizelgesi

Turlar ve duvar saati

Yığın 256 denemesi, epoch 1–2
1 sa 46 dk'ya kadar, çözülmede takıldı
Yığın 128 devam turu, epoch 3–40
7 sa 19 dk 53 sn, takılma yok
Toplam eğitim duvar saati
yaklaşık 9 saat
İhracat ve değerlendirme
yaklaşık 2 sa 45 dk
Donanım
RTX 4080, Core i5-13600K, 32 GB DDR5
Doğrudan proje maliyeti
100 $ Claude aboneliği artı elektrik

Bu başarısızlıkların her biri tek bir sebeple kurtarılabilirdi: hat her epoch'tan sonra kontrol noktası kaydediyordu. Bozuk bir arşiv, dosyaları çoğaltan büyük-küçük harf duyarsız globbing, ihracatta eksik bir sunum imzası, bir log yolunu çökerten bir Unicode karakteri ve tek bir Python ortamı üzerinde kavga eden üç kütüphane — her biri zamana mal oldu, hiçbiri tura mal olmadı.

Eğitim tarifi

FieldNet 1 yapılandırması

Omurga
MobileNetV4-Conv-L, ImageNet ön eğitimli
Girdi çözünürlüğü
256 x 256
Sınıflar
5.077 hayvan türü
Isınma
2 epoch, yalnızca sınıflandırma başlığı
İnce ayar
38 epoch, tam omurga
Keskinleştirme
6 epoch, sert hedefler
RandAugment
2 işlem, büyüklük 9
Mixup / CutMix
alfa 0,2 / etkin
Rastgele silme
etkin
Etiket yumuşatma
ince ayarda açık, keskinleştirmede sıfır
Stokastik derinlik
drop_path etkin
EMA azalması
0,9998
Çizelge
kosinüs, her epoch'ta kontrol noktası

Bu girdilerden ikisi diğerlerinden daha fazla yük taşıdı. Yalnızca başlığın ısınması gerekiyor, çünkü rastgele başlatılmış 5.077 yönlü bir sınıflandırıcı başta büyük ve kötü nişan alınmış gradyanlar üretir; bunların ön eğitilmiş bir omurgaya ulaşması, öğrenilmesi çok hesap gücü tutmuş öznitelikleri bozar. Üstel hareketli ortalama ise gürültülü güncellemeler boyunca ağırlıkların yumuşatılmış bir kopyasını tutar; böylece ihraç edilen model, son adımın nereye denk geldiğini değil eğitimin eğilimini yansıtır.

Veri kümesi bileşimi

Hayvan kategorisine göre tür sayısı

iNaturalist 2021 train_mini'den tutulan 5.077 sınıf

Böcekler2526 sınıf
Kuşlar1486 sınıf
Sürüngenler313 sınıf
Memeliler246 sınıf
Balıklar183 sınıf
Amfibiler170 sınıf
Örümcekler153 sınıf

Dağılım ağır biçimde böceklere kayıyor ve bu, verideki bir kusur değil problemin gerçek bir özelliği. Böcekler hayvan biyoçeşitliliğine gerçekten hâkim. Bu da manşet doğruluk değerinin kümedeki en zor ve görsel olarak en benzer sınıflar tarafından belirlendiği anlamına geliyor; bunu değerlendirilmek için adil bir yol olarak görüyorum.

Entegrasyon ve sessiz saçmalığı önleyen koruma

FieldNet 1, ilk kurulumdan sonra ve kamera ilk kez açılmadan önce indirilir. Üç dosya tek bir sürümlenmiş paket olarak gelir: INT8 model, etiket dosyası ve coğrafi öncül. Her biri SHA-256 özetiyle doğrulanır ve uyuşmazlık, yükleme denemesi yerine reddetmeye yol açar.

Etiket dosyasındaki özet kontrolü rutin bir hijyen değil. Yük taşıyan parça o.

Güven bir kapıdır, süs değil

Erişimi sınıflandırmayla değiştirmek gerçek bir gerileme getirdi ve bunu açıkça söylemek gerekiyor. BioCLIP bir kırpmayı yeni üretilmiş prototiplerle karşılaştırabiliyordu, yani onu genişletmek yeniden eğitim gerektirmiyordu. FieldNet 1'in tam olarak 5.077 çıktısı var. Bu kümenin dışındaki bir hayvan gösterildiğinde, olasılığı yine bildiği türler arasında dağıtmak zorunda.

Bu yüzden RealDex, üç koşul birlikte sağlanmadıkça bir tür iddia etmeyi reddediyor.

Kalibrasyon eşikleri

Top-1 olasılığı
en az 0,60
İkinciye karşı fark
en az 0,05
Sonsal entropi
en fazla 3,58 nat
Softmax sıcaklığı
1,0

Bu eşiklerin altında uygulama, sıralanmış yerel adayları ve buluta doğrulatmak için açık bir seçenek sunar. Düşük güven, hiçbir zaman sessizce bir bulut tanımlama kredisi harcamaz.

Gecikme: ne ölçtüm, neyi iddia etmeyeceğim

Bu vaka çalışmasının ilk taslağının fazla ileri gittiği bölüm burasıydı; bu yüzden kendi kanıtımın sınırları konusunda net olmak gerekiyor.

Eski çekim hattı, tek ölçümlü tur

BioCLIP dönemi, çekimden görünür sonuç sayfasına

Çekimden donmuş kareye
660 ms
Görüntü kod çözme
3,7 sn
YOLOv8n kırpmaları, 3 aday
284 ms
BioCLIP eşleştirme, 3 aday
1,6 sn
Sonuç sayfası görünür: toplam yaklaşık 11,1 sn

Tek tek ölçülen aşamalar 11,1 saniyenin yaklaşık 6,2'sini açıklıyor. Kalanı orkestrasyon, görüntü hazırlığı, durum değişiklikleri ve arayüz işinde geçti. Bunlar kendi ölçümlerimden gelen tek turluk değerler, ortalaması alınmış bir kıyaslama değil.

Bir Galaxy Z Fold5'te FieldNet 1, Android GPU delegesi üzerinden üç turda 44, 50 ve 67 milisaniyede sınıflandırdı; ortalama 53,7 ms. Test kedisini %43 güvenle doğru şekilde Felis catus olarak tanımladı; uzun kuyruklu gelincik ve dağ aslanı çok geride kaldı — yanlış cevaplar, ama görsel olarak ilişkili memeliler içinde yanlış; istediğiniz hata biçimi bu.

1.600 ms'yi bir şeyle çarpıp buna hızlanma demeyeceğim. BioCLIP değeri CPU'da bir iPhone 13 mini'den, FieldNet değeri GPU'da bir Fold5'ten geldi: farklı silikon, farklı işletim sistemi, farklı delege. Bu kadar farklı ölçülmüş iki sayı dürüst bir orana bölünmez.

Bu nasıl ve kim tarafından yapıldı

Buradaki atfın iki yönde de yaltaklanmak yerine doğru olmasını istiyorum.

Ürün hedefini ben koydum ve mimari değişimi ben kabul ettim. Kıyaslama sızıntısını ortaya çıkaran adalet standardını ben belirledim ve sızıntılı karşılaştırmanın — zaten çalışmış olan karşılaştırma olmasına rağmen — yayınlanamayacağına ben karar verdim. Başarısız turu kurtarmak yerine baştan başlamayı ben seçtim. Kapalı küme takasını ben kabul ettim ve güvenin iddiaya kapı olması gerektiğini ben şart koştum. Bu vaka çalışmasındaki hangi sayıların yayınlanacak kadar güçlü olduğuna ben karar verdim.

Araç ise baştan sona yapay zekâydı. Kimi K3 ilk mimari özetini ve eğitim kılavuzunu çerçeveledi. Daha derin mimari karşılaştırma, BioCLIP, BioCLIP 2, MobileNetV4, EfficientNet, MobileCLIP ve DINOv2 üzerinde Claude Code aracılığıyla çok ajanlı bir araştırma turu olarak çalıştı; 22 iddia üç oylu çekişmeli denetimden sağ çıktı. Ardından Claude Opus 4.8 eğitim, kurtarma, ihracat ve kıyaslama hattını uyguladı.

Mevcut durum

FieldNet 1, RealDex'te Google Play üzerinde yayında; platform ve sürüme göre kapsamlanmış bir Firebase Remote Config bayrağıyla etkin, böylece yeni bir sürüm çıkarmadan kapatılabiliyor. iOS yapısı App Store yayınını bekliyor ve aynı INT8 yapıtını CPU'da kullanıyor. Kamera içi canlı sınıflandırma yolu kod tabanında var ama kapalı duruyor: gecikmesi doğrulanmadı ve doğrulanmamış bir gerçek zamanlı yolu kameraya sokmak, 54 milisaniyelik bir modeli tam da böyle tutuk hale getirir.

Bu işe başlayacak birine söyleyeceğim şey

Makul şekilde çalışabilecek en küçük modeli eğitin ve onu nasıl yayınlanacaksa öyle değerlendirin: nicelenmiş, dedektör kırpmaları üzerinde ve başlamadan önce ayırdığınız bir test kümesine karşı. Bu ilkenin etrafından dolaşmak için attığım her kısa yol, kazandırdığından fazla zamana mal oldu. Kıyaslama sızıntısı referansın tümüyle yeniden kurulmasına mal oldu. Yumuşak hedefli eğitim altı fazladan epoch ve ikinci bir ihracat turuna mal oldu. USB disk neredeyse üç güne mal oldu.

BioCLIP, RealDex'in bir telefonda ciddi biyolojik görü çalıştırabileceğini kanıtladı. FieldNet 1, ilk modelin nihai mimari olmak zorunda olmadığını kanıtladı.

Temel Dersler

Yeniden Üretilebilir Bir Kıyaslama Yine de Yanlış Soruyu Cevaplayabilir

Sızıntılı kıyaslamam otomatik, belirlenimci ve sayısal olarak kesindi. Aynı zamanda hileliydi ve bu iyi özelliklerin her biri onu daha az değil, daha inandırıcı yapıyordu. Titizlik, en sonda yaptığınız bir raporlama adımı değildir. Değerlendirme kümesini kuran kodun yanında, uygulamanın içine aittir; çünkü bir kıyaslamanın işi, size yanıldığınızı söyleyebilecek durumda olmaktır.

Bir Mimariye Sadece Yayınlandığı İçin Bağlanmayın

BioCLIP doğru ilk karardı ve yanlış kalıcı karardı. Ciddi bir biyolojik görü modelinin bir telefonda çevrim dışı çalışabileceğini kanıtladı; birinci sürümde önemli olan soru buydu. Onu değiştirmek, gurur duyduğum işleri — vektör yükleyicileri ve gömme hattını — çöpe atmak anlamına geldi. Batık maliyet gerçekti. Ürünün bundan sonra ne yapması gerektiği sorusuyla da alakasızdı.

Dağıtım Kısıtları Eğitim Döngüsüne Aittir

Niceleme çöküşü bir ihracat hatası değildi. Üç adım sonra yüzeye çıkan bir eğitim kararıydı; çünkü yoğun etiket yumuşatma ve Mixup, güveni kasten yumuşak olan bir model üretir — ve INT8'in yok ettiği şey tam olarak yumuşak güvendir. Bunu dönüştürücüde düzeltemedim. Geri dönüp modelin nasıl eğitildiğini değiştirmem gerekti. Bir modelin telefonda 8 bitte çalışması gerekiyorsa, o kısıt model öğrenirken de masada olmalıdır.

Özet

FieldNet 1, RealDex'i aynı anda iki yönde ilerletti. Yayınlanan INT8 modeli adil top-1 doğruluğunu 14,5 puan artırırken ilk açılıştaki yapay zekâ indirmesini yaklaşık %56 küçülttü. Ayrı gömme veritabanını kaldırdı, nicelemeyi 0,14 puan kayıpla atlattı ve eski transformatörün asla kullanamadığı Android GPU delegesine ulaştı. Ürünler genellikle doğruluğu boyutla takas eder. Bu ürün ikisini birlikte iyileştirdi; çünkü veri kümesi, eğitim tarifi, kıyaslama, ihracat ve mobil entegrasyon beş ayrı aşama değil tek bir sistem olarak ele alındı.

Önemsediğim sayı %61,3 değil, 39 MB değil, 54 ms de değil. Bileşim. Doğru ama fazla büyük bir model bir demodur. Hızlı ama güvenilmez bir model bir cambazlıktır. Ve hile yapmasına izin verilen bir kıyaslamada selefini geçen bir model ikisi de değildir — bu yüzden bu projenin en değerli saati, yayınlamadan önce kendi sonucumun yanlış olduğunu kanıtlamaya harcadığım saatti.

Çalışırken Görün

RealDex, iOS ve Android için bir yaban hayatı saha günlüğü. Gerçek hayvanların fotoğrafını çekiyorsunuz, model onları çevrim dışı isimlendiriyor ve koleksiyonunuz bir Pokédex gibi doluyor.