あの消しゴム機能がついにiOS形式に変換できるようになった
以前はiOS形式にできなかったLaMaインペインティングモデル。
フーリエ変換か何かが変換できなかった。
CoreMLToolsのアップデートで変換できるようになったらしい。
というのは、変換スクリプトを提供してくれている人をGitHubで見つけた。
ありがとうマルマンさん。
変換方法
git clone https://github.com/mallman/CoreMLaMa.git
cd CoreMLaMa
pip install -r requirements.txt
python convert_lama.py
これだけでLaMa.mlpackageがゲットできる。
サイズも200MBぐらいで、実行時間も2秒ぐらい(iPhone13pro)。
最高か。
ちなみに、変換スクリプトでは、LaMaのラッパーモデルを作って、出力を画像のピクセル値に非正規化している。
class CoreMLaMa(torch.nn.Module):
def __init__(self, lama):
super(CoreMLaMa, self).__init__()
self.lama = lama
def forward(self, image, mask):
normalized_mask = ((mask > 0) * 1).byte()
lama_out = self.lama(image, normalized_mask)
output = torch.clamp(lama_out * 255, min=0, max=255)
return output
うむ、勉強になる。
iOSで実行
let config = MLModelConfiguration()
let model = try LaMa(configuration: config)
let input = try! LaMaInput(imageWith: inputCGImage, maskWith: maskCGImage)
let out = try! model.prediction(input: input!)
let pixelBuffer = out.output
これだけである。入力画像と、消したい領域が白の白黒画像を入れるだけ。
結果も画像(PixelBuffer)で出てくる。
最高かよ。
結果
アプリ例
ということで、lama-cleaner-iOSを作ってみました。
マスク描画→インペインティング→スライダー比較
というだけだけど、インペインティングの基本的なiOS実装は入っていると思います。
🐣
フリーランスエンジニアです。
AIについて色々記事を書いていますのでよかったらプロフィールを見てみてください。
もし以下のようなご要望をお持ちでしたらお気軽にご相談ください。
AIサービスを開発したい、ビジネスにAIを組み込んで効率化したい、AIを使ったスマホアプリを開発したい、
ARを使ったアプリケーションを作りたい、スマホアプリを作りたいけどどこに相談したらいいかわからない…
いずれも中間コストを省いたリーズナブルな価格でお請けできます。
お仕事のご相談はこちらまで
rockyshikoku@gmail.com
機械学習やAR技術を使ったアプリケーションを作っています。
機械学習/AR関連の情報を発信しています。