CoreMLで動画を超解像してみました
動画を超解像したらおもしろいんじゃないか
動画をCoreMLの超解像モデルにかけてみる
今回は1フレームずつ超解像にかけてみるという力技に挑戦します。
Step
1、CoreML-Modelsから超解像モデルをダウンロード
lazy var srrequest: VNCoreMLRequest = {
let model = srmodel().model
let vnModel = try! VNCoreMLModel(for: model)
let request = VNCoreMLRequest(model: vnModel)
request.imageCropAndScaleOption = .scaleFill
return request
}()
2、SemanticImageで動画フレームを処理
semanticImage.applyProcessingOnVideo(videoURL: url, { ciImage in
let handler = VNImageRequestHandler(ciImage: ciImage, options: [:])
try! handler.perform([self.request])
let result = request.results?.first as! VNPixelBufferObservation
let pixelBuffer = result.pixelBuffer
let srImage = CIImage(cvPixelBuffer: pixelBuffer)
return srImage.resize(as: ciImage.extent.size)
}, { err, processedURL in
})
結果


今回は元動画サイズにリサイズしていますが、超解像モデルは画像サイズも大きくしてくれるので、4Kのような動画を作ることも可能かと思います。
🐣
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com
Core MLやARKitを使ったアプリを作っています。
機械学習/AR関連の情報を発信しています。