×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
全身画像からコーデアイテムを抽出し 毎日にIRODORIを!デバイス完結型アプリを作る Copyright © ZOZO, Inc. 1 株式会社ZOZO ZOZOTOWN開発本部 ZOZOTOWN開発1部 iOSブロック だーはま / 濵田 悠樹 Copyright © ZOZO, Inc.
Slide 2
Slide 2 text
© ZOZO, Inc. 株式会社ZOZO ZOZOTOWN開発本部 ZOZOTOWN開発1部 iOSブロック 濵田 悠樹 @ios_hamada 2 ● 25年新卒でZOZOに入社 ● 学生時代はAIの研究, iOSやPdMの長期インターン ● 服でユーザーの人生を変えるためZOZOへ入社 ● 新卒4人で IRODORI を開発中(業務外)
Slide 3
Slide 3 text
© ZOZO, Inc. 3 IRODORI : コーディネートの”相棒”ができる ○ 写真1枚からコーデの分析や提案をしてくれる → コーデに悩まなくなる, 自信を持てる AIを使ったアイテム抽出
Slide 4
Slide 4 text
© ZOZO, Inc. 4 開発始めたてのある日 AIモデル使って、全身画像からトップスとボトムスを抽出したい いいね!使えそうなAIモデル調べてみる AIエンジニア
Slide 5
Slide 5 text
© ZOZO, Inc. 5 開発始めたてのある日 AIモデル使って、全身画像からトップスとボトムスを抽出したい いいね!使えそうなAIモデル調べてみる AI動かすために GPUサーバー6万円/月かかる。いいね! AIエンジニア インフラエンジニア
Slide 6
Slide 6 text
© ZOZO, Inc. 6 AIモデル使って、全身画像からトップスとボトムスを抽出したい いいね!使えそうなAIモデル調べてみる いいね!AI動かすためにGPUサーバー6万円/月かかる。いいね! ん....??
Slide 7
Slide 7 text
© ZOZO, Inc. 7 会話から得た 気づき と 課題 AIは 便利な反面 金かかる AIを動かすGPUサーバーを立てるためのコスト : 6万/月 by だーはま
Slide 8
Slide 8 text
© ZOZO, Inc. 8 課題の解決策 オンデバイス でAIを動かす
Slide 9
Slide 9 text
© ZOZO, Inc. 9 課題の解決策 オンデバイス でAIを動かす
Slide 10
Slide 10 text
© ZOZO, Inc. 10 iPhone オンデバイスなら 0円さ GPUサーバー6万/月 → オンデバイス0万/月 by だーはま 結果
Slide 11
Slide 11 text
© ZOZO, Inc. 11 Step1. HuggingFaceを使ったAIモデルの選定 ○ 世界中の研究者や企業がモデルを共有するWEBサービス ○ 数10万のモデル公開 ○ ダウンロード数, パラメータ数, 公開日 を参考に選定 https://huggingface.co/mattmdjaga/segformer_b2_clothes ダウンロード数 パラメータサイズ 公開日
Slide 12
Slide 12 text
© ZOZO, Inc. 12 Step2. Swiftで扱えるファイル形式(.mlpackage)へ変換 ○ pythonのモデル変換ライブラリ Exporters を使い1行で変換可能 ■ HugginFace Hub で公開されているモデル が対象 # 1. exports をインストール $ git clone https://github.com/huggingface/exporters $ cd exporters $ pip install -e . # 2. 変換:タスク=セマンティックセグメンテーション $ python -m exporters.coreml \ --model=mattmdjaga/segformer_b2_clothes \ --feature=semantic-segmentation \ exported/
Slide 13
Slide 13 text
© ZOZO, Inc. 13 Step3. モデルの呼び出し・実行 // モデルの設定 let config = MLModelConfiguration() config.computeUnits = .all // 実行するチップを指定 ○ .mlpackage をXcodeへドラッグ&ドロップ
Slide 14
Slide 14 text
© ZOZO, Inc. 14 Step3. モデルの呼び出し・実行 // モデルの設定 let config = MLModelConfiguration() config.computeUnits = .all // 実行するチップを指定 // AIモデルの呼び出し var model: SegformerB2Clothes? do { model = try SegformerB2Clothes(configuration: config) } catch { print("モデルのロードまたは設定に失敗しました: \(error)") } } ○ .mlpackage をXcodeへドラッグ&ドロップ
Slide 15
Slide 15 text
© ZOZO, Inc. 15 Step3. モデルの呼び出しおよび実行 ○ モデルに CVPixelBuffer (or MLMultiArray) を渡す ■ モデルの入力形式に依存している func segmentation() async { // 1. 入力 guard let pixelBuffer = coordinateImage.toCVPixelBuffer() else { return } let input = SegformerB2ClothesInput(image: pixelBuffer) guard let model else { return }
Slide 16
Slide 16 text
© ZOZO, Inc. 16 Step3. モデルの呼び出しおよび実行 ○ モデルに CVPixelBuffer (or MLMultiArray) を渡す ■ モデルの入力形式に依存している func segmentation() async { // 1. 入力 guard let pixelBuffer = coordinateImage.toCVPixelBuffer() else { return } let input = SegformerB2ClothesInput(image: pixelBuffer) guard let model else { return } do { // 2. 実行 let output = try await model.prediction(input: input) AI
Slide 17
Slide 17 text
© ZOZO, Inc. 17 Step3. モデルの呼び出しおよび実行 ○ モデルに CVPixelBuffer (or MLMultiArray) を渡す ■ モデルの入力形式に依存している func segmentation() async { // 1. 入力 guard let pixelBuffer = coordinateImage.toCVPixelBuffer() else { return } let input = SegformerB2ClothesInput(image: pixelBuffer) guard let model else { return } do { // 2. 実行 let output = try await model.prediction(input: input) // 3. 出力を整形 let fashionItemMap = output.classLabelsShapedArray.scalars .map { SegmentationConverter.fashionItems[Int($0)] } // 省略 AI
Slide 18
Slide 18 text
© ZOZO, Inc. 18 検証 解像度の低い全身画像(190×260) からのアイテム抽出に成功 ○ 処理時間は 0.9〜1.1s → 実用的
Slide 19
Slide 19 text
© ZOZO, Inc. 19 まとめ AIモデルをオンデバイスで動かし、コストを6万→0万へ削減
Slide 20
Slide 20 text
© ZOZO, Inc. 20 まとめ AIモデルをオンデバイスで動かし、コストを6万→0万へ削減 GPUサーバー使わなくても 3万円/月 飛んでます IRODORI って実は...
Slide 21
Slide 21 text
© ZOZO, Inc. 21 まとめ AIモデルをオンデバイスで動かし、コストを6万→0万へ削減 IRODORI と 新卒4人 はこれからどうなるのか to be continued ... IRODORI って実は... IRODORI って実は... GPUサーバー使わなくても 3万円/月 飛んでます
Slide 22
Slide 22 text
No content