SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
TFLiteとPyTorch Mobile
2020/06/17
shibui yusuke
1
自己紹介
cat : 0.55
dog: 0.45
human : 0.70
gorilla : 0.30
画像分類Shibui Yusuke
● メルカリ AI Team
基盤エンジニア
MLエンジニア
その他いろいろ
● Github: @shibuiwilliam
● Qiita: @cvusk
● Facebook: @shibui yusuke
● 最近やってること:Android、AR
MLシステムデザインパターン作成中。
これにEdge AIパターンを追加したい!
https://github.com/mercari/ml-system
-design-pattern 2
今日のアイドル
マルグレーテちゃん( ♀) 1歳
ノルウェージャンフォレストキャット
趣味は爪研ぎとゴミ箱あさり!
3
● Why Edge AI?
● Tensorflow Lite & PyTorch Mobile
● Let’s Edge AI
Agenda
4
Why Edge AI?
● サーバサイドでAI
● クライアントサイドで AI
ボトル
ネック
ボトル
ネック
高性能
低性能
リアル
タイム
・Kotlin
・Java
・Swift
・C++
・C
情報保護
・Python
・Python
・Python
5
AIをスマホで動かす
● AIはAIだけではない。
○ 前処理
 カメラで画像を取得し、
 画像をAIで扱えるように
 サイズとRGBを調整して
 テンソル(行列)に変換する。
○ AI
 前処理済みのテンソルにたくさんの
 掛け算と足し算(積和演算)をする。
 
○ 後処理
 AIの結果をスマホの画面に表示。
猫!
6この画像に写っているものを AIで判定したい
AIをスマホで動かす前処理
● カメラで画像を取得し、画像を AIで扱えるように
サイズとRGBを調整してテンソル(行列)に変換する。
0.2 0.3 0.9 0.0
0.0 0.1 0.5 0.7
0.1 0.3 0.5 0.7
0.7 0.6 0.4 0.6
0.2 0.3 0.9 0.0
0.0 0.1 0.5 0.7
0.1 0.3 0.5 0.7
0.7 0.6 0.4 0.6
0.2 0.3 0.9 0.0
0.0 0.1 0.5 0.7
0.1 0.3 0.5 0.7
0.7 0.6 0.4 0.6
画像を正方形
(224*224)にリサイズ
RGBのテンソル
(行列)に分ける
テンソルを0~1に正規化
60 90 240 0
0 10 127 195
10 92 128 195
195 161 111 161
7
AIをスマホで動かすモデル
● 前処理済みのテンソルにたくさんの掛け算と足し算(積和演算)をする。
AIの実態(ロジックとパラメータの集まり)を「モデル」と呼ぶ。
0.2 0.3 0.9 0.0
0.0 0.1 0.5 0.7
0.1 0.3 0.5 0.7
0.7 0.6 0.4 0.6
0.2 0.3 0.9 0.0
0.0 0.1 0.5 0.7
0.1 0.3 0.5 0.7
0.7 0.6 0.4 0.6
0.2 0.3 0.9 0.0
0.0 0.1 0.5 0.7
0.1 0.3 0.5 0.7
0.7 0.6 0.4 0.6
tench
hen
jay
kite
goose
beagle
collie
stove
lion
persian
siamese
gown
mask
ski
...1000
モデル
演算中にテンソルの形状が変化していく
8
AIをスマホで動かす後処理
● AIの結果をスマホの画面に表示。
猫!
tench 5%
hen 2%
jay 3%
kite 2%
goose 10%
beagle 2%
collie 3%
stove 1%
lion 10%
persian 15%
siamese 10%
gown 4%
mask 2%
ski 3%
...1000 ... 9
Google製のTensorflowをモバイルで
動かすためのライブラリ。
Android/iOS/ラズパイ/マイコン対応。
AIのモバイル対応では高性能で汎用的。
TensorFlow Lite & PyTorch Mobile
スマホでAIのモデルを動かすための主なライブラリ
Facebook製のPyTorchをモバイルで
動かすためのライブラリ。
Android/iOS対応。
PyTorchは使いやすさやシンプルさから
AI研究で使われることが多い。
10
Let's Edge AI
ImageAnalysisでTFLiteと
PyTorchMobileを実行
WorkerThreadで推論推論結果
上位3件
ソースコードはこちら。
https://github.com/shibuiwilliam/TFLitePyTorch
11
CameraXにImageAnalysisをbind
abstract class AbstractCameraXActivity : AppCompatActivity(){
@WorkerThread
protected abstract fun analyzeImage(image: ImageProxy, rotationDegrees: Int): Map<String, Float>
~~~~省略~~~~
private fun setupCameraX() {
~~~~省略(preview)~~~~
val imageAnalysisConfig = ImageAnalysisConfig
.Builder()
.apply {
setCallbackHandler(mBackgroundHandler)
setImageReaderMode(ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
}
.build()
~~~~次ページへ~~~~
}
}
TFLiteとPyTorchMobileが
analyzeImage()をoverride
12
CameraXにImageAnalysisをbind
abstract class AbstractCameraXActivity : AppCompatActivity(){
@WorkerThread
protected abstract fun analyzeImage(image: ImageProxy, rotationDegrees: Int): Map<String, Float>
~~~~省略~~~~
private fun setupCameraX() {
~~~~前ページから~~~~
val imageAnalysis = ImageAnalysis(imageAnalysisConfig)
imageAnalysis.analyzer = ImageAnalysis.Analyzer {
image: ImageProxy?, rotationDegrees: Int ->
if (image == null) return@Analyzer
val result = analyzeImage(image, rotationDegrees)
if (result != null) runOnUiThread(Runnable { showResult(result) })
}
CameraX.bindToLifecycle(this, preview, imageAnalysis)
}
}
結果を画面に表示
推論して結果を取得
13
AIの開発ステップ
前処理 学習
前処理 推論 後処理
モデル
学習
サーバサイド
Python
推論
クライアントサイド
Kotlin/Swift
モデル
変
換
14
グレー部分を
TensorFlowや
PyTorchがカバー
● tf.lite.TFLiteConverter
○ TFLite向けの専用のコンバータでモデルを FlatBuffersに変換する。
○ 各種クライアントのTFLite InterpreterがFlatBuffersを読み込んでモデルを動かす。
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/python
TensorFlow Lite
スマホで推論するためのモデル変換
スマホで推論モデルを動かすためのランタイム
● org.tensorflow.lite.*
○ チップセットへのdelegateを含めたInterpreter(推論器)を動かすためのライブラリ。
○ データの入出力はjava.nio.Bufferに変換、Interpreterを呼び出す。
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimenta
l/support/java/src/java/org/tensorflow/lite/support
15
TensorFlow Lite
Python
Java
(Kotlin)
16
Neural Network API (NNAPI)
Androidデバイスで演算負荷の
高いAI処理を実行するための
ネイティブAPI。
演算をGPUや専用チップへ移譲。
アプリ
TFLite
NNAPI
CPUProc
GPU
17
class TFLiteActivity : AbstractCameraXActivity() {
~~~~省略~~~~
private fun initializeTFLite(device: Constants.Device = Constants.Device.NNAPI, numThreads: Int = 4) {
val delegate = when (device) {
Constants.Device.NNAPI -> NnApiDelegate()
Constants.Device.GPU -> GpuDelegate()
Constants.Device.CPU -> "" }
if (delegate != "") tfliteOptions.addDelegate(delegate)
tfliteOptions.setNumThreads(numThreads)
tfliteModel = FileUtil.loadMappedFile(this, Constants.TFLITE_MOBILENET_V2_PATH)
tfliteInterpreter = Interpreter(tfliteModel, tfliteOptions)
~~~~次ページへ~~~~
}
}
TFLiteの演算を
NNAPIやGPU
に移譲
既存のモデルファイルを
ロード
モデルを計算
グラフに変換
TFLiteの推論モデルを用意する
18
TFLiteの推論モデルを用意する
class TFLiteActivity : AbstractCameraXActivity() {
~~~~省略~~~~
private fun initializeTFLite(device: Constants.Device, numThreads: Int) {
~~~~前ページから~~~~
inputImageBuffer = TensorImage(tfliteInterpreter.getInputTensor(0).dataType())
outputProbabilityBuffer = TensorBuffer.createFixedSize(
tfliteInterpreter.getOutputTensor(0).shape(),
tfliteInterpreter.getInputTensor(0).dataType())
probabilityProcessor = TensorProcessor
.Builder()
.add(NormalizeOp(0.0f, 1.0f))
.build()
}
}
入出力テンソルのバッファ
実態はjava.nio.Buffer
出力(確率)の
プロセッサ
19
TFLiteで推論
@WorkerThread
override fun analyzeImage(image: ImageProxy, rotationDegrees: Int): Map<String, Float> {
val bitmap = Utils.imageToBitmap(image)
val cropSize = Math.min(bitmap.width, bitmap.height)
inputImageBuffer.load(bitmap)
val inputImage = ImageProcessor
.Builder()
.add(ResizeWithCropOrPadOp(cropSize, cropSize))
.add(ResizeOp(224, 224, ResizeMethod.NEAREST_NEIGHBOR))
.add(NormalizeOp(127.5f, 127.5f))
.build()
.process(inputImageBuffer)
~~~~次ページへ~~~~
}
前処理
ImageProxyをbitmap
→テンソルに変換
(同時にリサイズと正規化 )
20
TFLiteで推論
@WorkerThread
override fun analyzeImage(image: ImageProxy, rotationDegrees: Int): Map<String, Float> {
~~~~前ページから~~~~
tfliteInterpreter.run(inputImage!!.buffer,
outputProbabilityBuffer.buffer.rewind())
val labeledProbability: Map<String, Float> = TensorLabel(
labelsList, probabilityProcessor.process(outputProbabilityBuffer)
).mapWithFloatValue
return labeledProbability
}
@UiThread
override fun showResult(result: String) { textView.text = result }
outputProbBufferに
推論結果を格納
ラベルと推論結果を紐
付ける
結果を表示 21
● torch.jit.trace()
○ 汎用的なJITコンパイラでモバイル用のモデルを生成。
モバイル用に最適化するものではない。
○ Pythonで作ったPyTorchのモデルをC++から直接呼べるように変換している。
https://github.com/pytorch/pytorch/tree/master/torch/jit
PyTorch Mobile
● org.pytorch.*
torch.jit.trace()で生成したモデルを Nativeライブラリで動かすための Java実装を提供。
https://github.com/pytorch/pytorch/tree/master/android
● com.facebook.soloader.*
org.pytorch.*の実態はSoLoaderというFacebook製のネイティブコードローダー。
https://github.com/facebook/SoLoader
スマホで推論するためのモデル変換
スマホで推論モデルを動かすためのランタイム
22
server
Torch API
PyTorch Mobile
client
Torch
torch.jit.trace model.pt SoLoader
Graph
computation
CPU
Python
Java
(Kotlin)
23
PyTorch Mobileの推論モデルを用意する
class PyTorchActivity : AbstractCameraXActivity() {
~~~~省略~~~~
private fun initializePyTorch() {
val pytorchModule = Module.load(Utils.assetFilePath(
this,
Constants.PYTORCH_RESNET18_PATH))
val mInputTensorBuffer = Tensor.allocateFloatBuffer(3 * 224 * 224)
val mInputTensor = Tensor.fromBlob(
mInputTensorBuffer,
longArrayOf(1, 3, 224L, 224L)
)
}
}
推論モデルファイルをロード
この先はSoLoader
入力のテンソルを用意
実態はjava.nio.Buffer
24
PyTorch Mobileで推論
@WorkerThread
override fun analyzeImage(image: ImageProxy, rotationDegrees: Int): Map<String, Float> {
TensorImageUtils.imageYUV420CenterCropToFloatBuffer(
image.image,
rotationDegrees,
224,
224,
TensorImageUtils.TORCHVISION_NORM_MEAN_RGB,
TensorImageUtils.TORCHVISION_NORM_STD_RGB,
mInputTensorBuffer,
0
)
~~~~次ページへ~~~~
}
前処理
ImageProxyを
テンソルに変換
(同時にリサイズと正規化 )
25
PyTorch Mobileで推論
@WorkerThread
override fun analyzeImage(image: ImageProxy, rotationDegrees: Int): Map<String, Float> {
~~~~前ページから~~~~
val outputModule = pytorchModule.forward(IValue.from(mInputTensor)).toTensor()
val scores = outputModule.dataAsFloatArray
val labeledProbability: MutableMap<String, Float> = mutableMapOf()
for (i in 0 until labelsList.size - 1) {
labeledProbability[labelsList[i + 1]] = score[i]
}
return labeledProbability
}
@UiThread
override fun showResult(result: String) { textView.text = result }
推論し、結果を
テンソルに変換
ラベルと
推論結果を
紐付ける
結果を表示
26
こんな感じで動きます
27
TFLiteとPyTorch Mobileを使ってみた感想
● 高性能。
● CPUだけでなくGPU/NNAPI移譲が可能。
● 各種オプションやExampleが豊富。
● 最低限必要な機能がある。
● CPUのみ。
● オプションが少ない分、シンプルに書くことが
できる。
28

Contenu connexe

Tendances

Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
 

Tendances (20)

Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
 
Sift特徴量について
Sift特徴量についてSift特徴量について
Sift特徴量について
 
Point net
Point netPoint net
Point net
 
[第2回3D勉強会 研究紹介] Neural 3D Mesh Renderer (CVPR 2018)
[第2回3D勉強会 研究紹介] Neural 3D Mesh Renderer (CVPR 2018)[第2回3D勉強会 研究紹介] Neural 3D Mesh Renderer (CVPR 2018)
[第2回3D勉強会 研究紹介] Neural 3D Mesh Renderer (CVPR 2018)
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
 
【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fields【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fields
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
 
画像生成・生成モデル メタサーベイ
画像生成・生成モデル メタサーベイ画像生成・生成モデル メタサーベイ
画像生成・生成モデル メタサーベイ
 
[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
Cvpr 2021 manydepth
Cvpr 2021 manydepthCvpr 2021 manydepth
Cvpr 2021 manydepth
 
semantic segmentation サーベイ
semantic segmentation サーベイsemantic segmentation サーベイ
semantic segmentation サーベイ
 
これからの Vision & Language ~ Acadexit した4つの理由
これからの Vision & Language ~ Acadexit した4つの理由これからの Vision & Language ~ Acadexit した4つの理由
これからの Vision & Language ~ Acadexit した4つの理由
 
GAN(と強化学習との関係)
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)
 
Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)
 
深層学習によるHuman Pose Estimationの基礎
深層学習によるHuman Pose Estimationの基礎深層学習によるHuman Pose Estimationの基礎
深層学習によるHuman Pose Estimationの基礎
 
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
 

Similaire à TFLite_and_PyTorch_Mobile

TensorFlow Liteを使った組み込みディープラーニング開発
TensorFlow Liteを使った組み込みディープラーニング開発TensorFlow Liteを使った組み込みディープラーニング開発
TensorFlow Liteを使った組み込みディープラーニング開発
Makoto Koike
 
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
akihiro uehara
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~
Atsushi Harada
 
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
Takahiro Fujiwara
 

Similaire à TFLite_and_PyTorch_Mobile (20)

IoTLT camera
IoTLT cameraIoTLT camera
IoTLT camera
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
 
ML system design_pattern
ML system design_patternML system design_pattern
ML system design_pattern
 
TensorFlow Liteを使った組み込みディープラーニング開発
TensorFlow Liteを使った組み込みディープラーニング開発TensorFlow Liteを使った組み込みディープラーニング開発
TensorFlow Liteを使った組み込みディープラーニング開発
 
Getting Started with Graph Database with Python
Getting Started with Graph Database with PythonGetting Started with Graph Database with Python
Getting Started with Graph Database with Python
 
Why python
Why pythonWhy python
Why python
 
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
 
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
 
Swift for pose-estimation
Swift for pose-estimationSwift for pose-estimation
Swift for pose-estimation
 
Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Report
 
Ml system in_python
Ml system in_pythonMl system in_python
Ml system in_python
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~
 
IoT案件を70件やってみて分かった事
IoT案件を70件やってみて分かった事IoT案件を70件やってみて分かった事
IoT案件を70件やってみて分かった事
 
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみたTensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
 
2014年の制作物報告
2014年の制作物報告2014年の制作物報告
2014年の制作物報告
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
 
SnapDishの事例
SnapDishの事例SnapDishの事例
SnapDishの事例
 
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
 

Plus de yusuke shibui

Plus de yusuke shibui (20)

Creative as Software Engineering for GenAI LT
Creative as Software Engineering for GenAI LTCreative as Software Engineering for GenAI LT
Creative as Software Engineering for GenAI LT
 
Generative AIと検索を組み合わせた新たな体験の模索
Generative AIと検索を組み合わせた新たな体験の模索Generative AIと検索を組み合わせた新たな体験の模索
Generative AIと検索を組み合わせた新たな体験の模索
 
機械学習システム構築実践ガイド
機械学習システム構築実践ガイド機械学習システム構築実践ガイド
機械学習システム構築実践ガイド
 
機械学習でテスト実行を効率化するLaunchable.pdf
機械学習でテスト実行を効率化するLaunchable.pdf機械学習でテスト実行を効率化するLaunchable.pdf
機械学習でテスト実行を効率化するLaunchable.pdf
 
Reviewing_machine_learning_program.pdf
Reviewing_machine_learning_program.pdfReviewing_machine_learning_program.pdf
Reviewing_machine_learning_program.pdf
 
DevSummit_2022_summer_MLOps.pdf
DevSummit_2022_summer_MLOps.pdfDevSummit_2022_summer_MLOps.pdf
DevSummit_2022_summer_MLOps.pdf
 
machine_learning_failure_apocalypse.pdf
machine_learning_failure_apocalypse.pdfmachine_learning_failure_apocalypse.pdf
machine_learning_failure_apocalypse.pdf
 
Launchable and efficient test execution
Launchable and efficient test executionLaunchable and efficient test execution
Launchable and efficient test execution
 
MLOps failure(1_108)
MLOps failure(1_108)MLOps failure(1_108)
MLOps failure(1_108)
 
Rosbag search system
Rosbag search systemRosbag search system
Rosbag search system
 
Machine learning CI/CD with OSS
Machine learning CI/CD with OSSMachine learning CI/CD with OSS
Machine learning CI/CD with OSS
 
Lets start mlops
Lets start mlopsLets start mlops
Lets start mlops
 
Testing machine learning development
Testing machine learning developmentTesting machine learning development
Testing machine learning development
 
Twillio deadshot made me happy
Twillio deadshot made me happyTwillio deadshot made me happy
Twillio deadshot made me happy
 
Getting started with MLOps
Getting started with MLOpsGetting started with MLOps
Getting started with MLOps
 
How to start MLOps
How to start MLOpsHow to start MLOps
How to start MLOps
 
Machine learning quality for production
Machine learning quality for productionMachine learning quality for production
Machine learning quality for production
 
Traffic light detection for self driving car
Traffic light detection for self driving carTraffic light detection for self driving car
Traffic light detection for self driving car
 
Devsumi 2021 MLOps for Self-driving car
Devsumi 2021 MLOps for Self-driving carDevsumi 2021 MLOps for Self-driving car
Devsumi 2021 MLOps for Self-driving car
 
Quality of ml_system
Quality of ml_systemQuality of ml_system
Quality of ml_system
 

TFLite_and_PyTorch_Mobile