以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付す。
上述のように、撮影装置で撮影された動画データをサーバへと送信する際に、動画データを圧縮してからサーバへと伝送することが行われている。この場合に、動画データの画質の劣化させすぎてしまい、サーバでのAIによる解析精度が劣化してしまうことがある。
そのため、AI解析の解析精度の劣化を抑えつつ、動画データの圧縮率を高めることのできる技術の提供が望まれている。
ここで、動画データの圧縮率を決定する一つの手法として、サーバにおけるAI解析の解析結果を利用することが考えられる。例えば、画像を解析するAIの多くは、解析において解析結果とともに結果の信頼性を示す精度情報を出力する。例えば、ディープラーニングで得られる学習済みモデルは、対象の検出において、検出結果の確からしさを示す信頼性のスコアを出力する。例えば、このような信頼性のスコアが、解析の確からしさを示す精度情報として用いられてよい。そして、例えば、精度情報に基づいてAI解析の解析精度の劣化を検出し、解析精度が劣化した場合に、圧縮率を下げることが考えられる。
しかしながら、この場合、AI解析の解析精度が劣化してから圧縮率を下げることになる。その結果、例えば、解析精度が劣化している時間帯が長くなってしまうことがある。そのため、動画データのサーバへの送信の際に、サーバでのAI解析の精度劣化を抑えつつ、動画データの圧縮率を高めることのできる技術の提供が望まれている。以下、実施形態を更に詳細に説明する。
図1は、実施形態に係るシステム100を例示する図である。システム100は、例えば、サーバ101、情報処理装置102、および撮影装置103を含む。
サーバ101は、例えば、サーバコンピュータなどの動画データにAI解析を実行するコンピュータであってよい。サーバ101は、例えば、クラウド上で動作するコンピュータである。
情報処理装置102は、例えば、パーソナルコンピュータ(PC)、モバイルコンピュータ、タブレット端末、スマートフォンなどの動画データの処理機能を備えるコンピュータであってよい。情報処理装置102は、例えば、エッジコンピューティングにおけるエッジとして動作し、撮影装置103で撮影された動画データに圧縮処理などを施してサーバ101に送信してよい。
撮影装置103は、例えば、カメラなどの動画を撮影する装置であり、解析対象の人物などが写る動画を撮影する。近年、AI解析のために設置される撮影装置103の台数は増加傾向にあり、例えば、図1に示すように、複数台の撮影装置103が設置されていてもよい。なお、実施形態に係るシステム100は複数台の撮影装置103に限定されるものではなく、実施形態は、例えば、1台の撮影装置103で撮影された動画データを情報処理装置102からサーバ101に送信するために利用されてもよい。また、一例では、情報処理装置102と撮影装置103とは、一体の装置であってもよい。
図2は、実施形態に係るサーバ101の機能ブロック構成を例示する図である。サーバ101は、例えば、制御部201、記憶部202、および通信部203を含む。制御部201は、例えば、受信部211、検出部212、送信部213、および変更部214などを含み、またその他の機能部を含んでもよい。サーバ101の記憶部202は、例えば、後述する量子化値情報700および情報処理装置102から受信した圧縮後の動画データなどの情報を記憶している。これらの各部の詳細および記憶部202に格納されている情報の詳細については後述する。
図3は、実施形態に係る情報処理装置102の機能ブロック構成を例示する図である。情報処理装置102は、例えば、制御部301、記憶部302、および通信部303を含む。制御部301は、例えば、情報処理装置102の各部を制御する。情報処理装置102の記憶部302は、例えば、撮影装置103から取得した動画データ、および後述するようにサーバ101から通知される指示情報などを記憶していてよい。これらの各部の詳細および記憶部302に格納されている情報の詳細については後述する。
続いて、AI解析における解析精度の劣化の予兆を検出する処理について述べる。
<解析精度の劣化の予兆検出>
図4は、例示的な精度情報と量子化値との関係を示す図である。図4の例では、縦軸が精度情報であり、横軸が量子化値である。精度情報は、例えば、AI解析の解析精度を表し、一例では、AI解析の際に生成される解析結果の確からしさを表す信頼性のスコアであってよい。
量子化値は、例えば、動画のフレーム画像の圧縮率を表す値である。量子化値は、例えば、H.264およびH.265などの動画符号化方式で利用される量子化パラメータ(QP:Quantization Parameter)であってよい。この場合、量子化値は、例えば、数値が小さいほど圧縮率が低く画質が鮮明になり、数値が高いほど圧縮率が高く画質が荒くなる。
また、図4には、動画像のフレーム画像と対応する点401が示されている。点401は、フレーム画像の圧縮に用いた量子化値と、その量子化値で圧縮されたフレーム画像を用いたAI解析の結果の精度情報との組を表している。図4にはさまざまな量子化値と対応する複数の点401が示されている。点401の精度情報は、同じ量子化値でもシーンによってさまざまな値を取っており、ばらつきがある。そのため、精度情報に対して閾値を設定しても、閾値を用いて一律に劣化の予兆を検出することは難しい。
ここで、図4には複数の点401に対して生成した近似曲線402が示されている。そして、本出願の発明者らは、近似曲線402で示されるように、量子化値と精度情報との関係性において、精度情報は特定の量子化値を境に急激に低下する傾向にあり、境界の付近では量子化値に対する精度情報のばらつきが大きくなることに気が付いた。
例えば、図4に示すように、領域410では量子化値が精度情報の低下が起きないほど十分に小さく、精度情報のばらつきは小さく抑えられている。また、領域430では量子化値が大きくなりすぎて精度情報が低下しきっており、全体的に精度情報が低下しているため精度情報のばらつきは小さい。しかしながら、例えば、領域420に示す精度情報の低下が起こり始める領域では、解析精度の劣化はまだ小さく抑えられているが、量子化値に対する精度情報のばらつきは大きくなる。
そこで、一実施形態ではサーバ101の制御部201は、量子化値に対する精度情報のばらつきが大きくなった場合に、解析精度の劣化の予兆ととらえて量子化値を制御する。図4に示すように、領域420の量子化値では精度情報は落ち切ってはおらず、解析精度の劣化の予兆を検出した時点で量子化値を下げて圧縮率を下げることで、解析精度の劣化を抑えることが可能である。また、領域430のように精度情報が低下しきってから量子化値を変更する場合と比較して、解析精度の劣化に早く対処することができるため、動画データを全体的に高い精度で解析することができる。
ここで、例えば、図4の領域420に示すような一時的なばらつきの増大は、長期のフレーム画像から得られた精度情報の集合よりも、より短期のフレーム画像から得られた精度情報の集合の方に大きな影響を与える。
そのため、制御部201は、動画の長期のフレーム画像から得られた精度情報よりも短期のフレーム画像から得られた精度情報のばらつきが大きい場合に、その短期のフレーム画像を用いたAI解析で精度劣化の予兆を検出したと判定してよい。
例えば、制御部201は、長期のフレーム画像から得られた精度情報の分散と短期のフレーム画像から得られた精度情報の分散とを求める。そして、制御部201は、短期の精度情報の分散の方が長期の精度情報の分散よりも大きい場合に、短期のフレーム画像において精度劣化の予兆を検出したと判定してよい。なお、例えば、長期のフレーム画像は、処理対象のフレーム画像から過去の50フレーム~1000フレームのフレーム画像であってよく、一例では処理対象のフレーム画像から過去の100フレームであってよい。また、例えば、短期のフレーム画像は、処理対象のフレーム画像から過去の10フレーム~50フレームのフレーム画像あってよく、一例では処理対象のフレーム画像から過去の20フレームのフレーム画像であってよい。なお、長期および短期の期間は、これらに限定されるものではなく、例えば、AI解析の対象の動きの早さ、および撮影される動画のフレームレートなどに応じて設定されてよい。
また、別の実施形態では制御部201は、動画の長期のフレーム画像から得られた精度情報を代表する第1の指標よりも短期のフレーム画像から得られた精度情報を代表する第2の指標が表す精度が劣化しているか否かを判定する。そして、制御部201は、第1の指標よりも第2の指標が表す精度が劣化している場合に、短期のフレーム画像を用いたAI解析で精度劣化の予兆を検出したと判定してよい。一例では、制御部201は、長期のフレーム画像の精度情報と短期のフレーム画像の精度情報との移動平均を求めて、2つの値の差が開いたら劣化の予兆を検出したと判定してもよい。
例えば、以上のようにAI解析の精度劣化の予兆の検出を実行し、予兆を検出した場合に、圧縮率を低下させるなどの制御を行うことで、AI解析の精度劣化を抑えつつ、動画データの圧縮率を高めることができる。なお、長期のフレーム画像は、例えば、第1の期間のフレーム画像と呼ばれてもよい。短期のフレーム画像は、例えば、第2の期間のフレーム画像と呼ばれてもよい。第2の期間は、第1の期間よりも短い期間であってよい。
続いて、実施形態に係る圧縮率の制御について説明する。
<圧縮率の制御>
以下では、量子化値を用いて圧縮率を制御する例を述べる。例えば、制御部201は、量子化値に上界と下界とを設定し、その上界と下界との間で変動するように圧縮に用いる量子化値を制御する。制御部201は、例えば、以下のように量子化値を制御してよい。
(量子化値の制御)
図5は、実施形態に係る量子化値の制御を例示する図である。図5に示すように、量子化値には上界と下界が設定されている。そして、制御部201は、例えば、十分な精度でAI解析が実行されている場合、量子化値を徐々に上昇させてよい。また、制御部201は、解析精度の劣化の予兆が検出された場合、一気に下界まで下げるように量子化値を設定してよい。それにより、精度劣化の時間を最小限に収めることができる。また、下界を、解析精度の劣化の予兆が検出されないギリギリの値に設定することで、量子化値を上昇させた後で解析精度の劣化の予兆が検出され、量子化値を下界に下げる場合にも、高い圧縮率を維持することができる。
また、図5に示すように、制御部201は、例えば、量子化値を徐々に上昇させてゆき上界に到達すると、量子化値を上界で維持する。例えば、上界を設けずに量子化値を上げ続けた場合、最終的には解析精度の劣化の予兆が検出され、量子化値を下界に戻すことになる。そして、予兆の時点では精度情報が下がりきってはいないとしても、解析精度の劣化の予兆が頻繁に検出されてしまうと、解析精度の劣化は生じてしまう。また、この場合、量子化値も頻繁に下界に戻されるため圧縮率の低下を導く。そのため、量子化値に上界を設けて、解析精度の劣化の予兆が低頻度で検出されるギリギリの値に設定することで、高圧縮の状態を維持しつつ精度劣化を抑えることができる。
続いて、実施形態に係る上界および下界の変更について説明する。以下で述べる実施形態では制御部201は、解析精度の劣化の予兆の検出に基づく解析精度の安定性に応じて上界および下界を変更する。
(上界および下界の変更)
例えば、量子化値が上界と等しい状態で長期間十分な解析精度を維持できた場合、更に画質を落としても十分な解析精度を得られる可能性がある。そのため、制御部201は、上界を大きくしてよい。
一方、例えば、量子化値の上界への制御が少ない場合、量子化値を徐々に上昇させた際に上界に到達する前、または、到達してすぐにAI解析の精度劣化の予兆が検出されていることを示している。この場合、上界が高すぎてAI解析の精度劣化の予兆が検出されていると考えられるため、制御部201は、上界を下げてよい。
また、例えば、量子化値が下界と等しい状態でAI解析の精度劣化の予兆が検出されたとする。この場合、設定した下界に量子化値を設定して圧縮を行ってもAI解析精度が劣化してしまう恐れがあるため、制御部201は、AI解析の精度劣化が起こらないように下界を小さくしてよい。
一方、例えば、量子化値が下界以上の値において所定期間にわたってAI解析の精度劣化の予兆が検出されず、十分な解析精度が出ているとする。この場合、下界を上げることができる可能性があるため、制御部201は、下界を大きくしてよい。
そして、例えば、以上のように上界および下界の値を変動させることで、AI解析の解析精度の劣化を抑えつつ、安定して高い圧縮率を維持して動画データを圧縮することができる。
また、更に、制御部201は、例えば、上界および下界の値が所定の収束条件を満たす場合に上界および下界が収束したと判定して、上界と下界の変更幅や変更頻度を小さくするように制御してよい。例えば、上述の制御に従って上界および下界が同じ値を前後するようになった場合に、制御部201は、上界および下界が収束したと判定してよい。
一方、制御部201は、例えば、上界および下界の値が所定の変動条件を満たす場合に上界および下界が収束しておらず変動している判定して、上界と下界の変更幅や変更頻度を大きくするように制御してよい。例えば、上述の制御に従って上界と下界が同じ方向に所定回数以上で更新され続けた場合に、制御部201は、上界および下界が変動していると判定してよい。
例えば、以上のように上界と下界の変更幅や変更頻度を制御することで、上界と下界の制御のための処理量を削減したり、上界と下界を早く適切な値に収束させたりすることができる。
以上に述べたように、実施形態によれば上界および下界を設定して、動画のシーンや検出対象の変化に応じて量子化値の取り得る範囲を絞り込むことで、AI解析の解析精度の劣化を抑えつつ、高い圧縮率を維持して動画データを圧縮することができる。
続いて、実施形態に係る指示情報の送信処理の例を説明する。サーバ101の制御部201は、例えば、以下の指示情報の送信処理を実行して、情報処理装置102に指示情報を送信することで、情報処理装置102から受信する動画のフレーム画像の圧縮率を制御してよい。
図6は、実施形態に係る指示情報の送信処理の動作フローを例示する図である。例えば、サーバ101の制御部201は、情報処理装置102から受信した動画データに対するAI解析の実行を開始すると、図6の動作フローを開始してよい。
ステップ601(以降、ステップを“S”と記載し、例えば、S601と表記する)において制御部201は、上界、下界、および量子化値を設定する。例えば、制御部201は、量子化値に、情報処理装置102から受信した動画データのフレーム画像に現在適用されている量子化値を設定してよい。また、制御部201は、例えば、上界および下界のそれぞれに、予め設定されている所定値を設定してよい。なお、一例では、上界には、下界よりも大きな値が設定されてよい。また、量子化値は、上界および下界の間の値に設定されていてよい。
S602において制御部201は、情報処理装置102から動画のフレーム画像を受信し、受信したフレーム画像に対してAI解析を実行して、解析結果の確からしさを表す精度情報を取得する。
S603において制御部201は、指示情報の決定処理を実行する。一例では、制御部201は、取得した精度情報に基づいて情報処理装置102での動画データの圧縮に用いる量子化値を決定してよい。指示情報の決定処理の詳細については、図8を参照して後述する。
S604において制御部201は、指示情報を情報処理装置102に宛てて送信する。指示情報は、例えば、S603の処理で決定した量子化値を含んでいてよい。また、制御部201は、情報処理装置102に送信する指示情報に含めた量子化値を、図6の動作フローで処理対象としたフレーム画像を識別するフレームID(Identifier)と対応づけて量子化値情報700に登録してよい。
図7は、実施形態に係る量子化値情報700を例示する図である。量子化値情報700には、例えば、S603の指示情報の決定処理で決定される量子化値の履歴が登録されていてよい。図7の例では、フレームIDと、量子化値とを対応づけたレコードが登録されている。レコードのフレームIDは、動画内のフレーム画像を識別するための識別情報である。また、量子化値情報700の量子化値は、例えば、レコードのフレームIDで識別されるフレーム画像の精度情報を用いて指示情報の決定処理で決定された量子化値が登録されてよい。制御部201は、量子化値情報700を参照することで、過去に設定された量子化値を取得することができる。
続いて、S605において制御部201は、動画がまだ続くか否かを判定してよい。例えば、情報処理装置102からまだ動画の後続のフレーム画像が受信されている場合、制御部201は、S605においてYESと判定しよく、フローはS602に戻り、制御部201は、次のフレーム画像に対して処理を繰り返す。一方、例えば、情報処理装置102からの動画データの受信が完了している場合、制御部201は、S605においてNOと判定しよく、本動作フローは終了する。
図6の動作フローによれば制御部201は、情報処理装置102から受信した動画のフレーム画像に対するAI解析の精度情報に基づいて指示情報を決定し、情報処理装置102に宛てて送信することができる。
続いて、実施形態に係る指示情報の決定処理について例を説明する。
図8は、実施形態に係る指示情報の決定処理の動作フローを例示する図である。サーバ101の制御部201は、例えば、図6のS603に進むと、図8の動作フローを開始してよい。
S801において制御部201は、AI解析の精度劣化の予兆を検出したか否かを判定する。制御部201は、例えば、図4を参照して例示したように、長期のフレーム画像から得られた精度情報と短期のフレーム画像から得られた精度情報のばらつきに基づいて、精度劣化の予兆を検出してよい。そして、AI解析の精度劣化の予兆を検出していない場合(S801がNO)、フローはS802に進む。
S802において制御部201は、量子化値が上界か否かを判定する。例えば、情報処理装置102から受信した動画データのフレーム画像に現在適用されている量子化値が、上界と一致していない場合(S802がNO)、フローはS803に進む。
S803において制御部201は、量子化値の上界への制御が所定の変更条件を満たして少ないか否かを判定する。例えば、制御部201は、量子化値情報700を参照し、処理対象フレームから過去の所定期間において量子化値が上界と一致していたフレームの割合が、所定の割合以下であるか否かを判定する。そして、量子化値が上界と一致していたフレームの割合が所定の割合以下である場合、制御部201は、量子化値の上界への制御が少ないと判定してよく、S803でYESと判定し、フローはS804に進む。
この場合、量子化値を徐々に上昇させた際に上界に到達する前、または、到達してすぐにAI解析の精度劣化の予兆が検出されていることを示しており、上界が高すぎてAI解析の精度劣化の予兆が検出されていることを表している。そのため、S804において制御部201は、上界を下げる制御を実行する。例えば、制御部201は、上界として設定する量子化値を所定値だけ下げてよい。
一方、S803において、例えば、量子化値が上界と一致していたフレームの割合が所定の割合よりも大きい場合、制御部201は、上界への制御が少なくはないと判定してよく、S803においてNOと判定し、フローはS807に進む。
また、例えば、S802において情報処理装置102から受信した動画データのフレーム画像に現在適用されている量子化値が上界と一致している場合(S802がYES)、フローはS805に進む。
S805において制御部201は、上界と一致している状態で解析精度の劣化の予兆が所定条件を満たして検出されず、上界と一致している状態が長く続いているか否かを判定する。例えば、制御部201は、量子化値情報700を参照し、処理対象フレームから過去の所定期間以上わたって上界と一致している状態が続いていた場合に、上界と一致している状態が長いと判定してよく、S803でYESと判定し、フローはS806に進む。
この場合、量子化値を徐々に上昇させて行き、量子化値が上界に到達した後もしばらくAI解析の精度劣化の予兆が検出されず、安定してAI解析ができていることを示しており、上界を更にあげることができる可能性があることを表している。そのため、S806において制御部201は、上界を上げる制御を実行する。例えば、制御部201は、上界として設定する量子化値を所定値だけ上げてよい。
一方、S805において、例えば、処理対象フレームから過去において上界と一致している状態が所定期間以上続いていない場合、上界と一致している状態は長くはない判定してよく、S805でNOと判定し、フローはS807に進む。
続いて、S807において制御部201は、上界に近づけるように量子化値を設定する。例えば、制御部201は、量子化値が低くまだ上界に到達していない場合には、量子化値を所定値だけ上げる制御を実行してよい。
また、S801においてAI解析の精度劣化の予兆を検出した場合(S801がYES)、フローはS808に進む。
S808において制御部201は、量子化値が下界か否かを判定する。例えば、情報処理装置102から受信した動画データのフレーム画像に現在適用されている量子化値が、下界と一致していない場合(S808がNO)、フローはS809に進む。
S809において制御部201は、現在の下界が設定されてから所定期間が経過しているか否かを判定する。そして、現在の下界が設定されてから所定期間が経過している場合(S809がYES)、フローはS810に進む。
この場合、現在の下界が設定されてからしばらく、下界においてAI解析の精度劣化の予兆が検出されておらず、設定した下界では安定してAI解析ができていることを示している。そのため、下界を更にあげることができる可能性があり、S810において制御部201は、下界を上げる制御を実行する。例えば、制御部201は、S810において下界として設定する量子化値を所定値だけ上げてよい。
一方、S809において、例えば、現在の下界が設定されてから所定期間が経過していない場合(S809がNO)、フローはS812に進む。
また、S808において、例えば、情報処理装置102から受信した動画データのフレーム画像に現在適用されている量子化値が下界と一致している場合(S808がYES)、フローはS811に進む。
この場合、下界においてもAI解析の精度劣化の予兆が検出されており、設定した下界でもAI解析の精度劣化が起こり得ることを示している。そのため、S811において制御部201は、下界を下げる制御を実行してよい。なお、下界は、AI解析の精度劣化が生じないように十分に低い値に設定されることが好ましく、S811では下界を大きく下げてよい。即ち、例えば、制御部201は、S811では、S804、S806、およびS810において上界または下界を調整する所定量よりも大きい値で下界を下げてよい。
続いて、S812において制御部201は、量子化値を下界に設定する。下界の値は、例えば、AI解析の精度劣化が生じにくいほど十分に低い値に設定されるように制御されている。そのため、AI解析の精度劣化の予兆が検出された場合に、量子化値を下界に設定することで、後続のフレームでは高い確率で高精度なAI解析を実行できるフレーム画像が情報処理装置102から受信されるように制御することができる。
続いて、S813において制御部201は、上界および下界の値が所定の収束条件を満たして収束しているか否かを判定し、収束している場合に、上界と下界の変更幅や変更頻度を小さくするように制御する。例えば、制御部201は、上界が同じ値を前後するようになり、かつ、下界が同じ値を前後するようになった場合に、収束したと判定してよい。一例として制御部201は、処理対象フレームから過去の所定期間において、上界および下界が同じ値に所定の回数以上設定されている場合に、上界および下界が収束したと判定してよい。また、別の例では、制御部201は、処理対象フレームから過去の所定期間に上界および下界に設定された値の差が所定範囲に収まっている場合に収束したと判定してもよい。そして、制御部201は、上界および下界が収束したと判定した場合、上界と下界の変更幅および変更頻度を小さくするように制御してよい。なお、収束の判定と、変更幅および変更頻度の変更は、上界および下界でそれぞれ個別に実行されてもよい。
例えば、以上のように上界と下界の変更幅や変更頻度を制御することで、量子化値が好ましい値に維持される安定性を高めることができる。また、上界と下界の更新にかかる処理量を削減することができる。
S814において制御部201は、例えば、上界および下界の値が収束しておらず、所定の変動条件を満たして変動しているか否かを判定してよい。そして、上界および下界が変動している場合に、制御部201は、上界と下界の変更幅および変更頻度を大きくするように制御してよい。例えば、制御部201は、上界と下界が同じ方向に所定の回数以上で連続して更新された場合に、変動していると判定してよい。また、別の例では、制御部201は、処理対象フレームから過去の所定期間に上界および下界に設定された値の差が所定範囲を超えている場合に変動していると判定してもよい。そして、制御部201は、上界および下界が変動していると判定した場合、上界および下界の変更幅および変更頻度を大きくするように制御してよい。なお、変動の判定と、変更幅および変更頻度の変更は、上界および下界でそれぞれ個別に実行されてもよい。
例えば、このように上界と下界の変更幅および変更頻度が大きくなるように制御することで、動画においてシーンなどの変化に伴い適切な量子化値が変わった場合にも、素早く量子化値を好ましい値に設定することが可能になる。シーンの変化は、例えば、動画に写っている人の変化、天候の変化、昼間と夜間での明るさの変化などを含んでよい。
そして、S814の処理が完了すると、本動作フローは終了し、フローは図6のS604に進む。
以上で述べたように、図8の動作フローによれば、AI解析の精度劣化の予兆の検出に基づいて、AI解析の解析精度の劣化を抑えつつ、動画データをできるだけ圧縮するように量子化値を設定することができる。
また、図8の動作フローによれば、AI解析の精度劣化の予兆の検出に基づいて、AI解析の解析精度の劣化を抑えつつ、動画データができるだけ圧縮される状態が維持されるように、上界および下界の値を設定することができる。
例えば、上述の実施形態に係る制御を実行して、上界をAI解析の精度劣化の予兆が低頻度で検出される値に設定することで、高い圧縮率を維持しつつ、AI解析の精度を安定させることができる。また、例えば、上述の実施形態に係る制御を実行して、下界をAI解析の精度劣化の予兆が検出されない値に設定することで、AI解析の精度を安定させつつ、シーンなどの変化にもすばやく対処して量子化値を設定することができる。
また、図8の動作フローによれば、上界および下界の収束を検出して、上界および下界の変更幅や変更頻度を低下させることで処理量を削減することができる。一方で、図8の動作フローによれば、上界および下界の変動を検出して上界および下界の変更幅や変更頻度を増加させることで、動画においてシーンなどの変化に伴い適切な量子化値が変わった場合にも、量子化値、上界、および下界に素早く好ましい値を設定することができる。
なお、例えば、量子化値としてH.265およびH.265などの動画符号化方式で利用される量子化パラメータを利用する場合、量子化値には0~51の範囲の整数が用いられる。しかしながら、サーバ101の制御部201は、例えば、量子化値を小数点以下を含む連続値として扱い、S807およびS812の処理では0.1および0.05などの1未満の単位で量子化値を変更してもよい。この場合、制御部201は、S604の処理で量子化値を含む指示情報を送信する際に、小数点以下の四捨五入などにより量子化値を整数化して圧縮率を制御してもよい。
続いて、実施形態に係る情報処理装置102の制御部301が実行する圧縮した動画データの送信処理の例を説明する。
図9は、実施形態に係る圧縮した動画データの送信処理の動作フローを例示する図である。例えば、情報処理装置102の制御部301は、撮影装置103で撮影された動画データのサーバ101への送信を開始すると、図9の動作フローを開始してよい。
S901において情報処理装置102の制御部301は、動画のフレーム画像の圧縮に用いる量子化値を所定の値に設定する。一例では、所定の値は、サーバ101におけるAI解析が成功するように十分に低い値であってよい。
S902において制御部301は、サーバ101から指示情報を受信したか否かを判定する。指示情報を受信していない場合(S902がNO)、フローはS904に進む。一方、サーバ101から指示情報を受信している場合(S902がYES)、フローはS903に進む。
S903において制御部301は、サーバ101からの指示情報に従って量子化値を設定してよい。例えば、指示情報には図6および図8の動作フローで決定された量子化値が含まれていてよく、情報処理装置102の制御部301は、サーバ101から指示情報で通知された量子化値に、動画のフレーム画像の圧縮に用いる量子化値を設定してよい。
S904において制御部301は、設定された量子化値に従ってフレーム画像を圧縮する。そして、S905において制御部301は、圧縮されたフレーム画像をサーバ101に宛てて送信する。
S906において制御部301は、動画がまだ続くか否かを判定する。例えば、撮影装置103から動画の後続のフレーム画像が受信される場合、制御部301は、S906においてYESと判定しよく、フローはS902に戻り、制御部301は、次のフレーム画像に対して処理を繰り返す。一方、例えば、撮影装置103からの動画データの受信が完了している場合、制御部301は、S906においてNOと判定しよく、本動作フローは終了する。
以上に述べたように、図9の動作フローによれば、情報処理装置102の制御部301は、指示情報に従って動画を圧縮することで、サーバ101でのAI解析の解析精度の劣化を抑えつつ、動画データをできるだけ圧縮してサーバ101に送信することができる。そのため、例えば、動画のAI解析をサーバ101などのクラウド上で集約して実行する場合に、AI解析の解析精度の劣化を抑制しつつも、動画データの伝送に起因するネットワーク帯域の逼迫などを抑制することができる。
なお、上述の実施形態では、動画のフレーム画像に量子化値を一律に適用して圧縮を行う例を述べている。しかしながら、実施形態はこれに限定されるものではない。例えば、実施形態は、AI解析のための動画データの圧縮に関する別の技術とともに利用することで、更に圧縮効果を高めることができる。
例えば、画像に対してAI解析を実行する場合に、画像の全ての領域がAI解析に重要なわけではないことが知られている。そのため、例えば、処理対象とするフレーム画像の一部の領域については、圧縮率を高めて画像を劣化させたとしても、AI解析の結果に影響を与えないことがある。そこで、以下では重要度マップを用いたフレーム画像の圧縮を行う例を述べる。
例えば、処理対象のフレーム画像内で各領域を圧縮などにより劣化させた場合に、AI解析に与える影響を評価することで、フレーム画像内の領域をAI解析に対する重要度で評価した重要度マップを生成することができる。なお、重要度マップには、一例では、遮蔽感度マップ(Occlusion Sensitivity Map)を用いることができる。しかしながら、実施形態に係る重要度マップは、遮蔽感度マップに限定されるものではなく、AI解析に対する画像内の各領域の重要度を示すマップであれば、その他の手法で生成されたマップであってもよい。例えば、別の実施形態では、情報処理装置102の制御部301は、画像全体の圧縮率を変えて画質を変化させ、圧縮率を変化させた時のAI解析の結果への影響度を格子状に区切った画像領域ごとに集計して重要度マップを生成してもよい。
図10は、例示的な遮蔽感度マップの生成を示す図である。例えば、図10(a)に示すように、遮蔽感度マップの生成では、制御部301は、処理対象のフレーム画像の一部をパッチで遮蔽してAI解析に入力する。この時、遮蔽されたパッチの箇所がAI解析に重要な領域であれば、出力層で正解の精度情報が低下する。一方、遮蔽されたパッチの箇所がAI解析に重要でない領域である場合、出力層で正解の精度情報はあまり変化しない。
例えば、図10(b)および図10(c)は、AI解析で表情を検出する場合のパッチの位置に応じた出力層での正解の精度情報への影響を示している。例えば、AI解析で検出される表情の検出結果には、顔以外の領域を隠しても影響が小さく、図10(b)では、正解の精度情報の変化は小さい。一方で、例えば、図10(c)に示すように、唇などの顔の一部をパッチで隠してしまうと、出力層で正解の精度情報が顕著に低下する。
制御部301は、例えば、画像を走査するようにパッチを移動させながら、パッチの位置に対応づけて出力層で正解の精度情報の変化を記録する。そして、制御部301は、画像内で各領域がAI解析での表情の検出に重要な領域であるか否かを示す重要度を、正解の精度情報の低下の度合いから評価し、評価に基づいて重要度マップを生成してよい。なお、上述のように、量子化値は高いほど圧縮率が高くなる。そのため、一例では、重要度マップでは重要でない領域ほど評価値が高くなるように生成されてよい。
図10(d)は、生成した重要度マップを例示している。図10(d)に示すように、顔の外側の領域は重要度が低いため、重要度マップでは他の領域よりも高い値「10」が設定されている。一方、顔の目や口元の周りの領域は重要度が高く、重要度マップでは他の領域よりも低い値「0」が設定されている。そして、このようにAI解析における重要度を評価した重要度マップを用いて重要でない領域の圧縮率が高くなるように制御を行うことで、AI解析精度への影響を抑えつつ、サーバ101に動画データを伝送する際のデータ量を更に下げることが可能である。
図11は、実施形態に係る重要度マップを用いた量子化値の設定の例を説明する図である。図11(a)には、上述の実施形態でサーバ101から通知された量子化値をそのまま用いて、情報処理装置102の制御部301が動画のフレーム画像を圧縮する例が示されている。図11(a)に示すように、サーバからは量子化値:20が通知されており、情報処理装置102の制御部301は、画像全体に量子化値:20を適用して画像を圧縮している。
一方、図11(b)は、サーバ101から通知された量子化値:20と、重要度マップとを用いて各領域の量子化値を決定する例を示している。例えば、図11(b)では、情報処理装置102の制御部301は、サーバ101から通知された量子化値:20を、重要度マップに加算して量子化値マップを生成している。図11(b)に示す量子化値マップでは、表情を検出するAI解析に重要な目や口元の周りなどのフレーム画像の領域は、サーバ101から通知された量子化値:20に保たれている。一方で、例えば、表情を検出するAI解析では重要でない顔の外側の領域には、サーバ101から通知された量子化値:20よりも高い量子化値:30が設定されており、更に圧縮されている。
このようにAI解析における画像内での領域の重要度に応じて量子化値を更に高めることで、AI解析精度への影響を抑えつつ、サーバ101に動画データを伝送する際のデータ量を更に削減することが可能である。
なお、図10および図11では、表情を検出するAI解析を対象に重要度マップを生成する例を述べているが、実施形態はこれに限定されるものではない。情報処理装置102の制御部301は、実施形態で適用するAI解析のモデルを用いて、そのAI解析において重要な領域を処理対象のフレーム画像で特定して重要度マップを生成することができる。また、重要度マップの生成に用いられるAI解析のモデルは、例えば、サーバ101で実行されるAI解析のモデルの一部であってもよい。例えば、サーバ101で、動画のフレーム画像からAI解析により人物を検出し、その後に別のAI解析で人体の骨格を検出して姿勢を判定するといったAI解析を実行するとする。この場合、人物を検出するAI解析のモデルを情報処理装置102に配備して重要度マップを生成すれば、サーバ101に動画データを伝送する際のデータ量の削減の効果を得ることができる。
[第2の実施形態]
続いて、第2の実施形態を例示する。例えば、動画のフレーム画像に複数の解析対象が写っていることがある。
図12は、第2の実施形態に係る複数の解析対象が写る動画のフレーム画像に対する量子化値の設定を例示する図である。図12では、3人の人物が解析対象として検出されている。この場合、サーバ101の制御部201は、例えば、検出された解析対象のそれぞれに対して上述の量子化値を決定する処理を実行する。例えば、制御部201は、解析対象が検出された領域を示す領域1、領域2、および領域3のそれぞれに対して上述の量子化値を決定する処理を実行してよい。そして、制御部201は、例えば、複数の解析対象のそれぞれに対して決定された量子化値のうちで最小の量子化値を動画データの圧縮に用いる量子化値として決定してよい。例えば、図12では、領域1と対応づけて量子化値:30が決定されており、領域2と対応づけて量子化値:40が決定されており、また、領域3と対応づけて量子化値:20が決定されている。この場合に、制御部201は、最も小さい量子化値に決定された領域3の量子化値:20を用いるように情報処理装置102に指示情報を送信してもよい。また、別の実施形態では、サーバ101の制御部201は、解析対象のそれぞれの領域に対して決定された複数の量子化値を、その解析対象の領域に対して用いるように指示する指示情報を情報処理装置102に宛てて出力してもよい。この場合、指示情報は、例えば、領域とその領域に対する量子化値とを対応づける複数の組の情報を含んでよい。
図13は、第2の実施形態に係る指示情報の送信処理の動作フローを例示する図である。例えば、サーバ101の制御部201は、情報処理装置102から受信した動画データに対してAI解析の実行を開始すると、図13の動作フローを開始してよい。
S1301においてサーバ101の制御部201は、上界、下界、および量子化値を設定する。例えば、制御部201は、量子化値に、情報処理装置102から受信した動画データのフレーム画像に現在適用されている量子化値を設定してよい。また、制御部201は、例えば、上界および下界のそれぞれに対して予め設定されている所定値に、上界および下界を設定してよい。
S1302において制御部201は、情報処理装置102から動画のフレーム画像を受信し、フレーム画像から解析対象を検出する。例えば、制御部201は、AI解析などを実行して処理対象のフレーム画像から解析対象を検出してよい。S1303において制御部201は、検出された解析対象のうちから未処理の解析対象を1つ選択する。
続く、S1304およびS1305の処理は、S602およびS603の処理と対応していてよく、制御部201は、S602およびS603と同様の処理を実行してよい。ただし、S1304において制御部201は、選択した未処理の解析対象の領域に対して精度情報を取得してよく、S1305においてその領域に対して図8の動作フローを実行して指示情報を決定してよい。
S1306において制御部201は、未処理の解析対象がまだあるか否かを判定する。未処理の解析対象がある場合(S1306がYES)、フローはS1303に戻り、未処理の解析対象に対して処理を繰り返す。一方、未処理の解析対象がない場合(S1306がNO)、フローはS1307に進む。
S1307において制御部201は、情報処理装置102に宛てて指示情報を送信する。指示情報は、例えば、解析対象に対して決定された量子化値のうちで最小の値を含んでいてもよいし、別の実施形態では、それぞれの解析対象が検出された領域と、その解析対象の領域に対して決定された量子化値との組を含んでいてもよい。
S1308において制御部201は、動画がまだ続くか否かを判定してよい。例えば、情報処理装置102からまだ動画の後続のフレーム画像が受信されている場合、制御部201は、S1308においてYESと判定しよく、フローはS1302に戻り、制御部201は、次のフレーム画像に対して処理を繰り返す。一方、例えば、情報処理装置102からの動画データの受信が完了している場合、制御部201は、S1308においてNOと判定しよく、本動作フローは終了する。
以上で述べたように、第2の実施形態によれば、動画において複数の解析対象が写っている場合にも、AI解析の解析精度の劣化を抑えつつ、動画データができるだけ圧縮されるように、圧縮率を決定することができる。
[変形例]
続いて、実施形態の変形例を説明する。例えば、動画の1枚のフレーム画像に対して複数のAI解析が実行されることがある。
例えばCPN(Cascaded Pyramid Network)を利用して人間の部位を認識するケースなどでは、人間などの1つの解析対象に対して複数のAI解析が実行され、複数のAI解析の精度情報が取得されるケースがある。一例として、複数のAI解析を実行して鼻、右目、左目、右手首、左手首などの人体の各部を検出するケースが挙げられる。この場合に、制御部201は、複数のAI解析の精度情報毎に量子化値を求めて、最小の量子化値を指示情報で通知してもよい。
この場合、制御部201は、第1の実施形態と同様に図6および図8の動作フローを実行してもよい。ただし、制御部201は、例えば、S801の処理において複数のAI解析の精度情報のそれぞれについて劣化の予兆検出を実行し、いずれかのAI解析の精度情報で劣化の予兆が検出されるか否かを判定してよい。
以上に述べた、変形例によれば解析対象に複数のAI解析を実行する場合にも、AI解析の解析精度の劣化を抑えつつ、動画データをできるだけ圧縮するように圧縮率を決定することができる。
なお、上述の第2の実施形態および変形例は、図10および図11を参照して述べた重要度マップに基づく圧縮と組み合わせて実行されてもよい。
また、上述の実施形態では、情報処理装置102からサーバ101に送信する動画データのデータ量を削減するために実施形態を適用する例を述べているが、実施形態はこれに限定されるものではない。例えば、実施形態は動画データを記憶装置に保存する際のデータ量を削減するために利用されてもよい。一例として、撮影した動画データにAI解析を実行した際に、解析結果とともに動画データを証拠として残す場合が考えられる。この場合に、上述の実施形態に係る圧縮率の調整を行うことでAI解析に適した範囲で圧縮された動画データを得ることができ、記憶装置に保存するデータ量を削減することができる。
以上において、実施形態を例示したが、実施形態はこれに限定されるものではない。例えば、上述の動作フローは例示であり、実施形態はこれに限定されるものではない。可能な場合には、動作フローは、処理の順番を変更して実行されてもよく、別に更なる処理を含んでもよく、または、一部の処理が省略されてもよい。例えば、図8のS813およびS814の処理は実行されなくてもよい。
また、例えば、上述の実施形態ではサーバ101の制御部201が、量子化値を指示情報に含めて情報処理装置102に通知し、情報処理装置102における動画のフレーム画像の圧縮率を指示情報の量子化値に基づいて制御する例を述べている。しかしながら、実施形態はこれに限定されるものではない。別の実施形態ではサーバ101の制御部201は、S603において劣化の予兆の検出を実行し、予兆を検出した場合に、S604において劣化の予兆を検出したことを示す指示情報を情報処理装置102に通知してもよい。
この場合、情報処理装置102の制御部301は、指示情報の通知を受けると、量子化値を所定値下げる制御を実行してもよい。また、この場合、情報処理装置102の制御部301は、例えば、サーバ101から所定期間にわたって指示情報が通知されなかった場合に、量子化値を所定値だけ上げる処理を繰り返して、量子化値を徐々にあげてゆく制御を実行してもよい。それにより、情報処理装置102の制御部301は、サーバ101からAI解析の精度劣化の予兆の検出に基づいて通知される指示情報に従って、AI解析の精度が下がりきってしまう前に圧縮率を調整することができる。その結果、AI解析の解析精度の劣化を抑えつつ、動画データの圧縮率を高めることができる。或いは、別の実施形態では、情報処理装置102の制御部301は、図8の動作フローを実行してもよい。この場合、情報処理装置102の制御部301は、例えば、サーバ101から通知された劣化の予兆の検出を示す指示情報を受信に基づいて、S801で劣化の予兆の検出の有無を判定し、動画の圧縮に用いる量子化値を制御してもよい。
また、上述の実施形態は、量子化値を用いる動画の圧縮方式を例に説明を行っているが、実施形態で利用可能な動画の圧縮方式はこれに限定されるものではなく、その他の動画圧縮方式が利用されてもよい。
なお、上述の実施形態において例えばS602およびS1302の処理では制御部201は、受信部として動作する。また、例えば、S801の処理では制御部201は、検出部として動作する。例えば、S604の処理では制御部201は、送信部として動作する。例えば、S802からS814の処理では制御部201は、変更部として動作する。
図14は、実施形態に係るサーバ101および情報処理装置102を実現するためのコンピュータ1400のハードウェア構成を例示する図である。図14のサーバ101および情報処理装置102を実現するためのハードウェア構成は、例えば、プロセッサ1401、メモリ1402、記憶装置1403、読取装置1404、通信インタフェース1406、および入出力インタフェース1407を備える。なお、プロセッサ1401、メモリ1402、記憶装置1403、読取装置1404、通信インタフェース1406、入出力インタフェース1407は、例えば、バス1408を介して互いに接続されている。
プロセッサ1401は、例えば、シングルプロセッサであっても、マルチプロセッサやマルチコアであってもよい。プロセッサ1401は、メモリ1402を利用して例えば上述の動作フローの手順を記述したプログラムを実行することにより、上述したサーバ101の制御部201または情報処理装置102の制御部301の一部または全部の機能を提供する。例えば、サーバ101のプロセッサ1401は、記憶装置1403に格納されているプログラムを読み出して実行することで、受信部211、検出部212、送信部213、および変更部214として動作する。
メモリ1402は、例えば半導体メモリであり、RAM領域およびROM領域を含んでいてよい。記憶装置1403は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、または外部記憶装置である。なお、RAMは、Random Access Memoryの略称である。また、ROMは、Read Only Memoryの略称である。
読取装置1404は、プロセッサ1401の指示に従って着脱可能記憶媒体1405にアクセスする。着脱可能記憶媒体1405は、例えば、半導体デバイス、磁気的作用により情報が入出力される媒体、光学的作用により情報が入出力される媒体などにより実現される。なお、半導体デバイスは、例えば、USB(Universal Serial Bus)メモリである。また、磁気的作用により情報が入出力される媒体は、例えば、磁気ディスクである。光学的作用により情報が入出力される媒体は、例えば、CD-ROM、DVD、Blu-ray Disc等(Blu-rayは登録商標)である。CDは、Compact Discの略称である。DVDは、Digital Versatile Diskの略称である。
上述のサーバ101の記憶部202および情報処理装置102の記憶部302は、例えばメモリ1402、記憶装置1403、および着脱可能記憶媒体1405を含んでいる。例えば、サーバ101の記憶装置1403には、量子化値情報700および情報処理装置102から受信した圧縮後の動画データなどが格納されている。また、例えば、情報処理装置102の記憶装置1403には、撮影装置103で撮影された動画データ、およびサーバ101から通知される指示情報などが格納されている。
通信インタフェース1406は、プロセッサ1401の指示に従って、他の装置と通信する。通信インタフェース1406は、例えば、上述のサーバ101の通信部203および情報処理装置102の通信部303の一例である。例えば、サーバ101は、通信インタフェース1406を介して情報処理装置102と通信する。また、情報処理装置102は、例えば、通信インタフェース1406を介してサーバ101および撮影装置103と通信する。なお、上述の実施形態におけるサーバ101、情報処理装置102、および撮影装置103などの装置間のデータの送受信は、直接実行されてもよいし、宛先の指定などにより別の更なる装置を介して実行されてもよい。
入出力インタフェース1407は、例えば、入力装置および出力装置との間のインタフェースであってよい。入力装置は、例えばユーザからの指示を受け付けるキーボード、マウス、タッチパネルなどのデバイスである。出力装置は、例えばディスプレーなどの表示装置、およびスピーカなどの音声装置である。
実施形態に係る各プログラムは、例えば、下記の形態でサーバ101および情報処理装置102に提供される。
(1)記憶装置1403に予めインストールされている。
(2)着脱可能記憶媒体1405により提供される。
(3)プログラムサーバなどのサーバから提供される。
なお、図14を参照して述べたサーバ101および情報処理装置102を実現するためのコンピュータ1400のハードウェア構成は、例示であり、実施形態はこれに限定されるものではない。例えば、上述の構成の一部が、削除されてもよく、また、新たな構成が追加されてもよい。また、別の実施形態では、例えば、上述のサーバ101の制御部201および情報処理装置102の制御部301の一部または全部の機能がFPGA、SoC、ASIC、およびPLDなどによるハードウェアとして実装されてもよい。なお、FPGAは、Field Programmable Gate Arrayの略称である。SoCは、System-on-a-chipの略称である。ASICは、Application Specific Integrated Circuitの略称である。PLDは、Programmable Logic Deviceの略称である。
以上において、いくつかの実施形態が説明される。しかしながら、実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態および代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨および範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態が実施され得ることが理解されよう。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して、または実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施され得ることが当業者には理解されよう。