アップルはML(機械学習)に力を入れていて、多くのサンプルは画像を解析するために使っていて、テキストを使った機械学習は普及していません。しかしせっかくCoreMLが言語解析に対応しているのだから、何か新しいことができるかもしれないと思い試してみることにしました。
今回使うのは、テキストの内容からクラス分類を行う機能です。まずは機械学習のデータを用意させなくてはいけませんが、これにはXcodeに付属するCreate MLというアプリを使います。TrainingとTestingというフォルダを用意して、それぞれの中にクラス分類に対応したサブフォルダをいくつか作成します。それぞれのフォルダに複数のテキストデータを用意して入れておき、Create MLの画面上でフォルダを指定して機械学習を走らせます。GUIなので設定は容易であり、初見でもあまりつまづくことはありません。作成した学習モデルに対するテストもCreate MLで行えるので、モデルの出来が悪ければ学習データを修正して再学習させます。Xcodeに出力するボタンがあるので押すとXcodeで表示されるので、自分のアプリに組み込む準備が整いました。
続きを読む
2021年01月13日
2020年12月18日
CoreMediaのプリセット
MPEG Exporter TNGが利用しているCoreMedia(avconvert)のプリセットがそれぞれどのような特性を持っているのか、少し調査してみました。
素材に使用したのは、AppleがYouTubeで公開している「iPad Pro − Your next computer is not a computer − Apple」という動画ファイルです。QuickTime Playerで属性を確認すると、H.264 HD、1920x1080、29.97 FPS、16.5 MB、1.72 Mbpsとあります。
MPEG Exporter TNGのカスタム設定で、PresetLowQuality、PresetMediumQuality、PresetHighestQuality、Preset3840x2160、PresetHEVC3840x2160、PresetHEVCHighestQualityを呼び出して変換しました。FFmpeg (x265)を利用した独自の設定もあわせてテストしました。使用したマシンはMacBook 2017、macOS Catalina 10.15.7です。
ここからわかることは、
・Appleがいうところの品質とは圧縮率ではなく、解像度とビットレートのこと
・それぞれのプリセットは解像度に上限があり、それを上回る動画は縮小される
・HEVC(H.265)はなぜかH.264より圧縮率がかなり悪い
・おそらくフレームレートも変更されている
・いくつかのプリセットは内容が同じ
MPEG Exporter TNG独自の設定はこれとはかなり異なっており、以下のようなコンセプトで設定しています。
・品質固定可変ビットレートであり、品質とは圧縮率のこと
・できるかぎりフレームレートや画面サイズは変更しない
CoreMediaによるH.265の挙動はT2チップによるハードウエアエンコードのように見えますが、T2チップを搭載していないマシンではどうなってしまうのでしょうか?いずれにしてもAppleのH.265 HEVCエンコーダは、ストリーミング配信など特定の用途を除くと、圧縮率と画質のバランスの点で実用になりません。
そういうわけで、MPEG Exporter TNGの新しい設定プロファイルではCoreMediaを用いた4KにHEVCではなくH.264を使用することにしました(上記のPreset3840x2160に相当)。H.265/HEVCを利用したい場合、ffmpegのx.265を利用した方が画質と圧縮率の高いバランスを実現できます。
ちなみに、変換にかかる時間は計測しませんでした。どの設定も秒単位で変換が終わるので、 ストップウォッチでうまく図ることができる自信もありません。昔はMPEG Exporter TNGに変換時刻をログで出力させていたような気がします。
CoreMedia(avconvert)がサポートするプリセットは Terminalで avconvert --helpと入力すると確認することができ、
素材に使用したのは、AppleがYouTubeで公開している「iPad Pro − Your next computer is not a computer − Apple」という動画ファイルです。QuickTime Playerで属性を確認すると、H.264 HD、1920x1080、29.97 FPS、16.5 MB、1.72 Mbpsとあります。
MPEG Exporter TNGのカスタム設定で、PresetLowQuality、PresetMediumQuality、PresetHighestQuality、Preset3840x2160、PresetHEVC3840x2160、PresetHEVCHighestQualityを呼び出して変換しました。FFmpeg (x265)を利用した独自の設定もあわせてテストしました。使用したマシンはMacBook 2017、macOS Catalina 10.15.7です。
プリセット名 | 映像CODEC | 解像度 | フレームレート | 音声 | ファイルサイズ |
PresetLowQuality | H.264 SD | 224 x 128 | 15 FPS | MPEG-4 HE AAC Mono | 1.3 MB |
PresetMediumQuality | H.264 SD | 568 x 320 | 29.97 FPS | AAC Stereo | 6.9 MB |
PresetHighestQuality | H.264 HD | 1920 x 1080 | 29.97 FPS | AAC Stereo | 16.4 MB |
Preset3840x2160 | H.264 HD | 1920 x 1080 | 29.97 FPS | AAC Stereo | 16.4 MB |
PresetHEVC3840x2160 | HEVC HD | 1920 x 1080 | 29.96 FPS | AAC Stereo | 65.4 MB |
PresetHEVCHighestQuality | HEVC HD | 1920 x 1080 | 29.96 FPS | AAC Stereo | 65.4 MB |
FFmpeg (x265) | HEVC | 1920 x 1080 | 29.97 FPS | AAC Stereo | 20.2 MB |
ここからわかることは、
・Appleがいうところの品質とは圧縮率ではなく、解像度とビットレートのこと
・それぞれのプリセットは解像度に上限があり、それを上回る動画は縮小される
・HEVC(H.265)はなぜかH.264より圧縮率がかなり悪い
・おそらくフレームレートも変更されている
・いくつかのプリセットは内容が同じ
MPEG Exporter TNG独自の設定はこれとはかなり異なっており、以下のようなコンセプトで設定しています。
・品質固定可変ビットレートであり、品質とは圧縮率のこと
・できるかぎりフレームレートや画面サイズは変更しない
CoreMediaによるH.265の挙動はT2チップによるハードウエアエンコードのように見えますが、T2チップを搭載していないマシンではどうなってしまうのでしょうか?いずれにしてもAppleのH.265 HEVCエンコーダは、ストリーミング配信など特定の用途を除くと、圧縮率と画質のバランスの点で実用になりません。
そういうわけで、MPEG Exporter TNGの新しい設定プロファイルではCoreMediaを用いた4KにHEVCではなくH.264を使用することにしました(上記のPreset3840x2160に相当)。H.265/HEVCを利用したい場合、ffmpegのx.265を利用した方が画質と圧縮率の高いバランスを実現できます。
ちなみに、変換にかかる時間は計測しませんでした。どの設定も秒単位で変換が終わるので、 ストップウォッチでうまく図ることができる自信もありません。昔はMPEG Exporter TNGに変換時刻をログで出力させていたような気がします。
CoreMedia(avconvert)がサポートするプリセットは Terminalで avconvert --helpと入力すると確認することができ、
Supported presets:となっています。
Preset640x480
Preset960x540
Preset1280x720
Preset1920x1080
Preset3840x2160
PresetAppleM4A
PresetAppleM4V480pSD
PresetAppleM4V720pHD
PresetAppleM4V1080pHD
PresetAppleM4VAppleTV
PresetAppleM4VCellular
PresetAppleM4ViPod
PresetAppleM4VWiFi
PresetAppleProRes422LPCM
PresetAppleProRes4444LPCM
PresetHEVC1920x1080
PresetHEVC1920x1080WithAlpha
PresetHEVC3840x2160
PresetHEVC3840x2160WithAlpha
PresetHEVCHighestQuality
PresetHEVCHighestQualityWithAlpha
PresetHighestQuality
PresetLowQuality
PresetMediumQuality
PresetPassthrough
2020年12月16日
アップル公証用ツール
Catalina以上で動作するアプリを作成するために必要なアップルの公証手続きはGUIベースではなく、煩雑極まりません。
SD NotaryというツールやXcodeを用いることでかなり楽にはなりますが、面倒なことにかわりはありません。
公証を行う上で役に立ちそうなAppleScriptを作成したので紹介します。いずれもTerminalの扱いに慣れている方ならば簡単にできる作業ですが、GUIで使えた方が便利ですよね。
ダウンロードしてお使いいただくのは、これまた公証の問題が出ますので、AppleScriptをHTMLに埋め込んで提供します。
リンクをクリックするとスクリプト編集プログラムに新規プログラムが作成されるので、それをアプリケーションとして保存してください。Dropletになっているので、対象となるアプリなどをドロップして使います。
なお、AppleScriptのHTMLへの埋め込み形式(URLエンコード)にはAS Compilerを使用しています。
続きを読む
SD NotaryというツールやXcodeを用いることでかなり楽にはなりますが、面倒なことにかわりはありません。
公証を行う上で役に立ちそうなAppleScriptを作成したので紹介します。いずれもTerminalの扱いに慣れている方ならば簡単にできる作業ですが、GUIで使えた方が便利ですよね。
ダウンロードしてお使いいただくのは、これまた公証の問題が出ますので、AppleScriptをHTMLに埋め込んで提供します。
リンクをクリックするとスクリプト編集プログラムに新規プログラムが作成されるので、それをアプリケーションとして保存してください。Dropletになっているので、対象となるアプリなどをドロップして使います。
なお、AppleScriptのHTMLへの埋め込み形式(URLエンコード)にはAS Compilerを使用しています。
続きを読む