Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu kılavuzda, Electron uygulamanızda Windows Machine Learning (WinML) kullanan bir C# yerel eklentisinin nasıl oluşturulacağı gösterilmektedir. WinML, görüntü sınıflandırma, nesne algılama ve daha fazlası gibi görevler için windows cihazlarında machine learning modelleri (ONNX biçimi) yerel olarak çalıştırmanızı sağlar.
Önkoşullar
- Geliştirme ortamı kurulumu tamamlandı
- Windows 11 veya Windows 10 (sürüm 1809 veya üzeri)
Uyarı
WinML herhangi bir Windows 10 (1809+) veya Windows 11 cihazda çalışır. En iyi performans için GPU'ları veya NPU'ları olan cihazlar önerilir, ancak API de CPU üzerinde çalışır.
1. Adım: C# yerel eklentisi oluşturma
npx winapp node create-addon --template cs --name winMlAddon
Windows SDK ve Windows App SDK başvuruları ile yapılandırılmış bir C# projesi içeren bir winMlAddon/ klasörü oluşturur.
Eklentiyi oluşturun:
npm run build-winMlAddon
2. Adım: SqueezeNet modelini indirme
- Yapay Zeka Geliştirme Galerisi'ni yükleme
- Görüntüyü Sınıflandır örneğine gidin
- SqueezeNet 1.1 modelini indirme
-
.onnxdosyasını project kökünüzdeki birmodels/klasörüne kopyalayın
3. Adım: Gerekli NuGet paketlerini ekleme
Proje kökünüzde Directory.packages.props güncelleyin.
<PackageVersion Include="Microsoft.ML.OnnxRuntime.Extensions" Version="0.14.0" />
<PackageVersion Include="System.Drawing.Common" Version="9.0.9" />
winMlAddon/winMlAddon.csproj'yi paket başvurularını eklemek için güncelleştirin.
<PackageReference Include="Microsoft.ML.OnnxRuntime.Extensions" />
<PackageReference Include="System.Drawing.Common" />
4. Adım: Örnek kodu ekleme
AI Geliştirme Galerisi, SqueezeNet ile görüntü sınıflandırması için tam uygulama sağlar. Uyarlanmış kodu electron-winml örneğinde bulabilirsiniz.
Örnekten winMlAddon/ klasörü kopyalayın veya örnek kodla el ile güncelleştirin winMlAddon/addon.cs .
Önemli uygulama ayrıntıları
Project kök yolu: Eklenti, ONNX modelini ve yerel bağımlılıkları bulabilmesi için JavaScript kodunun project kök yolunu geçirmesini gerektirir.
Yerel bağımlılıkları önceden yükleme: Eklenti, hem geliştirme hem de üretim senaryolarında çalışan gerekli DLL'leri yüklemek için bir yöntem içerir.
Electron Forge yapılandırması: Paketleyicinizi yerel dosyaların paketini açmak için yapılandırın:
module.exports = {
packagerConfig: {
asar: {
unpack: "**/*.{dll,exe,node,onnx}"
},
ignore: [
/^\/.winapp\//,
"\\.msix$",
/^\/winMlAddon\/(?!dist).+/
]
},
};
5. Adım: Eklentiyi oluşturma
npm run build-winMlAddon
6. Adım: Eklentiyi test edin
Eklentiyi açın src/index.js ve yükleyin:
const winMlAddon = require('../winMlAddon/dist/winMlAddon.node');
Test işlevi ekleyin:
const testWinML = async () => {
try {
let projectRoot = path.join(__dirname, '..');
if (projectRoot.includes('app.asar')) {
projectRoot = projectRoot.replace('app.asar', 'app.asar.unpacked');
}
const addon = await winMlAddon.Addon.createAsync(projectRoot);
console.log('Model loaded successfully!');
const imagePath = path.join(projectRoot, 'test-images', 'sample.jpg');
const predictions = await addon.classifyImage(imagePath);
console.log('Top predictions:');
predictions.slice(0, 5).forEach((pred, i) => {
console.log(`${i + 1}. ${pred.label}: ${(pred.confidence * 100).toFixed(2)}%`);
});
} catch (error) {
console.error('Error testing WinML:', error.message);
}
};
Örnek görüntüleri içeren bir test-images/ klasör oluşturarak test görüntülerini hazırlayın ve ardından şunu çalıştırın:
npm start
7. Adım: Hata ayıklama kimliğini güncelleştirme
npx winapp node add-electron-debug-identity
Uyarı
Seyrek paketlemesi olan "Electron" uygulamalarıyla ilgili, kilitlenmelere veya boş pencerelere neden olabilecek bilinen bir Windows hatası vardır. Geçici çözüm için kurulum kılavuzuna bakın.
Sonraki Adımlar
- Phi Silika eklentisi oluşturma - Cihaz içi yapay zeka API'lerini kullanma
- Dağıtım için paketleme - İmzalı bir MSIX paketi oluşturma
İlgili konular
Windows developer