Slide 1

Slide 1 text

CoreML3ͷΦϯσόΠετϨʔχϯάͰͭ͘Δ฼Իਪఆ Inference of vowel by on-device training of CoreML3 Naruki Chigira @ Mirrativ, inc. _naru_jpn

Slide 2

Slide 2 text

σϞͰ࢖͏ΞϓϦͷίʔυ https://github.com/naru-jpn/InferenceVowel

Slide 3

Slide 3 text

฼Իਪఆ /a/, /i/, /u/, /e/, /o/ ͷਪఆ

Slide 4

Slide 4 text

ΦϯσόΠετϨʔχϯά https://developer.apple.com/jp/machine-learning/core-ml/ …ϢʔβʔσʔλΛ࢖༻ͨ͠ϞσϧͷΞοϓσʔτΛΦϯσό ΠεͰ࣮ߦͰ͖ΔΑ͏ʹͳͬͨͨΊɺϓϥΠόγʔΛ৵֐͢Δ ͜ͱͳ͘ɺϢʔβʔͷߦಈʹ߹ΘͤͯϞσϧΛΞοϓσʔτ͠ ͍ͯ͘͜ͱ͕Ͱ͖·͢ɻ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

ํ਑

Slide 7

Slide 7 text

લॲཧ Preprocessing ֶश / ਪ࿦ Training / Inference Ի੠σʔλ Audio

Slide 8

Slide 8 text

લॲཧ Preprocessing ֶश / ਪ࿦ Training / Inference Ի੠σʔλ Audio let captureSession = AVCaptureSession() … captureSession.startSession()

Slide 9

Slide 9 text

લॲཧ Preprocessing ֶश / ਪ࿦ Training / Inference Ի੠σʔλ Audio ϑʔϦΤม׵ Fourier Transformation ϝϧϑΟϧλόϯΫ Mel Filter Bank ཭ࢄίαΠϯม׵ Discrete Cosine Transformation

Slide 10

Slide 10 text

ϑʔϦΤม׵ Fourier Transformation (ϩά)ϝϧϑΟϧλόϯΫ (Log) Mel Filter Bank ཭ࢄίαΠϯม׵ Discrete Cosine Transformation Import Accelerate // ԻΛप೾਺͝ͱʹ෼ղ vDSP_fft_zrip(fftsetup, … // ਓ͕ฉ͖෼͚΍͍͢௿ԻΛΑΓৄࡉʹ vDSP_mmul(melFilerBank, … // ΑΓগͳ͍σʔλ਺Ͱදݱ vDSP_DCT_Execute(dctsetup, …

Slide 11

Slide 11 text

ϑʔϦΤม׵ Fourier Transformation (ϩά)ϝϧϑΟϧλόϯΫ (Log) Mel Filter Bank ཭ࢄίαΠϯม׵ Discrete Cosine Transformation Import Accelerate // ԻΛप೾਺͝ͱʹ෼ղ vDSP_fft_zrip(fftsetup, … // ਓ͕ฉ͖෼͚΍͍͢௿ԻΛΑΓৄࡉʹ vDSP_mmul(melFilerBank, … // ΑΓগͳ͍σʔλ਺Ͱදݱ vDSP_DCT_Execute(dctsetup, … 1024ݸͷσʔλ 16ݸͷσʔλ ~25μs

Slide 12

Slide 12 text

લॲཧ Preprocessing ֶश / ਪ࿦ Training / Inference Ի੠σʔλ Audio https://github.com/apple/coremltools/blob/master/examples/updatable_models/updatable_nearest_neighbor_classifier.ipynb apple/coremltools updatable_nearest_neighbor_classifier.ipynb Jupyter notebook ্Ͱkۙ๣๏Λར༻ͯ͠෼ ྨΛ͢ΔϞσϧΛ࡞੒͢Δαϯϓϧ

Slide 13

Slide 13 text

લॲཧ Preprocessing ֶश / ਪ࿦ Training / Inference Ի੠σʔλ Audio https://github.com/apple/coremltools/blob/master/examples/updatable_models/updatable_nearest_neighbor_classifier.ipynb // ֶशʹ࢖͏σʔλͷ४උ let inputValue = snapshot.featureValue let outputValue = MLFeatureValue( string: snapshot.vowel.identifier ) let dataPointFeatures: [String: MLFeatureValue] = [ "input": inputValue, "label": outputValue ] let provider = try! MLDictionaryFeatureProvider( dictionary: dataPointFeatures )

Slide 14

Slide 14 text

લॲཧ Preprocessing ֶश / ਪ࿦ Training / Inference Ի੠σʔλ Audio https://github.com/apple/coremltools/blob/master/examples/updatable_models/updatable_nearest_neighbor_classifier.ipynb // ֶशͷ࣮ߦ let batchProvider = MLArrayBatchProvider( array: featureProviders ) let updateTask = try! MLUpdateTask( forModelAt: UpdatableKNN.urlOfModelInThisBundle, trainingData: batchProvider, configuration: nil, completionHandler: completion ) updateTask.resume()

Slide 15

Slide 15 text

લॲཧ Preprocessing ֶश / ਪ࿦ Training / Inference Ի੠σʔλ Audio https://github.com/apple/coremltools/blob/master/examples/updatable_models/updatable_nearest_neighbor_classifier.ipynb // ਪ࿦ͷ࣮ߦ let inputs = snapshots.compactMap({ $0.featureValue.multiArrayValue }).map({ UpdatableKNNInput(input: $0) }) let model = try! UpdatableKNN(contentsOf: updatedModelUrl) // ฼Ի͝ͱͷ֬཰͕ग़ྗͱͯ͠ฦͬͯ͘Δ let outputs = try model.predictions(inputs: inputs) 100~200μs

Slide 16

Slide 16 text

σϞ