IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

特許7469912情報処理装置、推論装置、それらの制御方法、プログラム、記憶媒体
<>
  • 特許-情報処理装置、推論装置、それらの制御方法、プログラム、記憶媒体 図1
  • 特許-情報処理装置、推論装置、それらの制御方法、プログラム、記憶媒体 図2
  • 特許-情報処理装置、推論装置、それらの制御方法、プログラム、記憶媒体 図3
  • 特許-情報処理装置、推論装置、それらの制御方法、プログラム、記憶媒体 図4
  • 特許-情報処理装置、推論装置、それらの制御方法、プログラム、記憶媒体 図5
  • 特許-情報処理装置、推論装置、それらの制御方法、プログラム、記憶媒体 図6
  • 特許-情報処理装置、推論装置、それらの制御方法、プログラム、記憶媒体 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-09
(45)【発行日】2024-04-17
(54)【発明の名称】情報処理装置、推論装置、それらの制御方法、プログラム、記憶媒体
(51)【国際特許分類】
   G06N 20/00 20190101AFI20240410BHJP
   G06N 3/0495 20230101ALI20240410BHJP
   G06F 18/15 20230101ALI20240410BHJP
   G06F 18/241 20230101ALI20240410BHJP
【FI】
G06N20/00
G06N3/0495
G06F18/15
G06F18/241
【請求項の数】 19
(21)【出願番号】P 2020036041
(22)【出願日】2020-03-03
(65)【公開番号】P2021140336
(43)【公開日】2021-09-16
【審査請求日】2023-02-24
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】田邉 章弘
【審査官】多賀 実
(56)【参考文献】
【文献】特開2000-059628(JP,A)
【文献】国際公開第2019/183202(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 17/10-17/18
G06F 18/00-18/40
G06T 7/00
G06V 10/20-10/86
(57)【特許請求の範囲】
【請求項1】
入力データを入力する入力手段と、
前記入力手段により入力した入力データの複数の値の中から、その値を0に変換する所定値を判別する第1の判別手段と、
前記入力データの前記所定値と一致する値を0値に変換する処理と、前記入力データの0値に変換する以外の値から前記所定値を減算する処理との加工処理を行う加工手段と、
前記加工手段により加工した場合の加工データに含まれる0値の割合が第1の閾値より小さい場合に、前記加工データを用いて学習済みモデルを生成する学習処理を行う学習手段と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記加工手段は、前記減算する処理により0より小さい値となる値を、さらに0値に変換することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記加工手段は、前記減算する処理により0より大きく第2の閾値以下となる値を、さらに0値に変換することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記加工データにおける0値の割合が前記第1の閾値以上である場合は、前記第1の判別手段は前記所定値を変更することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項5】
前記加工手段は、前記入力データにおける0値の値に対しては、前記減算する処理を実行しないことを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
【請求項6】
前記入力データにおける0値の割合が第3の閾値以下であるか否かを判別する第2の判別手段をさらに備え、該第2の判別手段により、前記入力データにおける0値の割合が前記第3の閾値より大きいと判別された場合に、前記第1の判別手段は前記所定値を変更することを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
【請求項7】
前記加工データにおける0値の割合が第4の閾値以上である場合には、前記加工手段は、前記第2の閾値を変更することを特徴とする請求項3に記載の情報処理装置。
【請求項8】
前記加工手段は、前記入力データの大きさが所定以下の大きさの場合に、前記加工処理を行わないことを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
【請求項9】
前記第1の判別手段は、前記所定値を、前記入力データの中で最も出現頻度の高い値、前記入力データの平均値、前記入力データの中央値に基づいて判別することを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
【請求項10】
請求項1乃至9のいずれか1項に記載の情報処理装置により学習された学習済みモデルと、前記加工データとを用いて、推論処理を行う推論手段を備えることを特徴とする推論装置。
【請求項11】
前記加工データを符号化する符号化手段と、該符号化手段により符号化されたデータを復号化する復号化手段とをさらに備えることを特徴とする請求項10に記載の推論装置。
【請求項12】
前記推論手段の推論の結果に対して、前記加工処理に基づいて補正を行う補正手段をさらに備えることを特徴とする請求項10または11に記載の推論装置。
【請求項13】
前記入力データが画像データである場合に、補正手段は前記補正を行わないことを特徴とする請求項12に記載の推論装置。
【請求項14】
入力データを入力する入力工程と、
前記入力工程において入力した入力データの複数の値の中から、その値を0に変換する所定値を判別する第1の判別工程と、
前記入力データの前記所定値と一致する値を0値に変換する処理と、前記入力データの0値に変換する以外の値から前記所定値を減算する処理との加工処理を行う加工工程と、
前記加工工程において加工した場合の加工データに含まれる0値の割合が第1の閾値以下である場合に、前記加工データを用いて学習済みモデルを生成する学習処理を行う学習工程と、
を有することを特徴とする情報処理装置の制御方法。
【請求項15】
請求項1乃至9のいずれか1項に記載の情報処理装置により学習された学習済みモデルと、前記加工データとを用いて、推論処理を行う推論工程を有することを特徴とする推論装置の制御方法。
【請求項16】
コンピュータを、請求項1乃至9のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラム。
【請求項17】
コンピュータを、請求項1乃至9のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラムを記憶したコンピュータが読み取り可能な記憶媒体。
【請求項18】
コンピュータを、請求項10乃至13のいずれか1項に記載の推論装置の各手段として機能させるためのプログラム。
【請求項19】
コンピュータを、請求項10乃至13のいずれか1項に記載の推論装置の各手段として機能させるためのプログラムを記憶したコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習におけるデータの加工技術に関するものである。
【背景技術】
【0002】
ニューラルネットワーク等に代表される機械学習手法の活用方法として、クラウド上で用いる以外に、組み込み機器において用いる方法もある。例えば撮像装置では特定の被写体をニューラルネットワークにより判別して自動的に焦点を合わせる製品が存在する。
【0003】
組み込み機器でニューラルネットワークの処理を行う際に課題となるのが、ニューラルネットワークのデータサイズである。ニューラルネットワークの種類によっては、学習済みモデルのパラメータ数が大きいため、データサイズがより大きくなる。データサイズを小さくする方法として、プルーニングと呼ばれる処理でニューラルネットワークにおけるノード数を減らしたり、あるいはノード間の接続を減らしたりする処理が知られている。
【0004】
学習済みモデルのパラメータ以外の部分のデータサイズに関しては、例えば特許文献1では、入力データであるRAWデータを読み込んで、RGBデータを生成し、該当する色成分以外の画素を0にしてマスク処理した後に畳み込み演算を行う方法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2014-123814号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1では、入力データの状態に基づいて、入力データ中のどの値を0に変換するかを判断しておらず、更に精度への影響は考慮されていない。
【0007】
本発明は上述した課題に鑑みてなされたものであり、その目的は、機械学習において、精度への影響を軽減しつつ、入力データのデータサイズを小さくすることである。
【課題を解決するための手段】
【0008】
本発明に係わる情報処理装置は、入力データを入力する入力手段と、前記入力手段により入力した入力データの複数の値の中から、その値を0に変換する所定値を判別する第1の判別手段と、前記入力データの前記所定値と一致する値を0値に変換する処理と、前記入力データの0値に変換する以外の値から前記所定値を減算する処理との加工処理を行う加工手段と、前記加工手段により加工した場合の加工データに含まれる0値の割合が第1の閾値より小さい場合に、前記加工データを用いて学習済みモデルを生成する学習処理を行う学習手段と、を備えることを特徴とする。
【発明の効果】
【0009】
本発明によれば、機械学習において、精度への影響を軽減しつつ、入力データのデータサイズを小さくすることが可能となる。
【図面の簡単な説明】
【0010】
図1】第1の実施形態における情報処理装置のハードウェア構成を示すブロック図。
図2】第1の実施形態における撮像装置のハードウェア構成を示すブロック図。
図3】第1の実施形態における入力データの変換処理を説明する図。
図4】第1の実施形態の情報処理装置において実行される処理のフローチャート。
図5】第1の実施形態の撮像装置において実行される処理のフローチャート。
図6】第2の実施形態における入力データの変換処理を説明する図。
図7】第2の実施形態の情報処理装置において実行される処理のフローチャート。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0012】
(第1の実施形態)
以下、本発明の第1の実施形態における、学習処理と推論処理について説明する。図1は、第1の実施形態に係わる学習装置として機能する情報処理装置100のハードウェア構成を示すブロック図である。
【0013】
図1に示す様に、情報処理装置100は、CPU101と、メモリ102と、表示部103と、操作部105と、記録部106と、通信部107と、ニューラルネットワーク処理部108とを有している。
【0014】
CPU101は、記録部106に記憶されているコンピュータプログラムを実行することによって、情報処理装置100を構成するすべての処理ブロックの制御を行う。メモリ102は、主にCPU101のワークエリアや、データの一時バッファ領域として使用されるメモリである。
【0015】
表示部103は、液晶パネル、または有機ELパネル等で構成され、CPU101の指示に基づいて、操作画面等の表示を行う。内部バス104は、情報処理装置100内の各処理ブロックを相互に接続するためのバスである。
【0016】
操作部105は、キーボード、マウス、ボタン、タッチパネル、またはリモコン等によって構成され、ユーザの操作指示を受け付ける。操作部105から入力された操作情報は、CPU101に送信され、CPU101は操作情報に基づいて各処理ブロックの制御を実行する。
【0017】
記録部106は記録媒体を有し、CPU101の指示に基づいて記録媒体に様々なデータを格納したり読み出したりする処理ブロックである。記録媒体は、例えばEEPROM、内蔵フラッシュメモリ、内蔵ハードディスク、或いは着脱可能なメモリカード等で構成される。記録部106には、ニューラルネットワーク処理部108における学習用データである入力データと教師データを保存しておく。なお、教師データを新規に作成する場合は、処理時間はかかるが、高精度に判定できる高性能学習済みモデルを使用した結果を教師データとして生成して記録部106に記録する。
【0018】
通信部107は、無線LAN及び有線LANの通信を行うためのハードウェア等を備えている。無線LANにおいては、例えばIEEE802.11n/a/g/b方式の処理を行うブロックである。通信部107は、外部のアクセスポイントと無線LANで接続し、アクセスポイントを経由して他の無線通信機器と無線LAN通信を行う。また、通信部107は、有線LANにおいてEthernetケーブルにより外部ルータ、またはスイッチングハブを介して通信を行う。通信部107は、撮像装置200を含む外部の機器と通信を行い、画像や制御データ、学習用データ、学習済みモデル等の情報のやり取りを行う。
【0019】
ニューラルネットワーク処理部108は、記録部106に保存された学習用データと、予め作成されたニューラルネットワークのモデルを用いて、ニューラルネットワークの学習処理を行う。ニューラルネットワーク処理部108は、例えば画像データを入力データとして異なるクラスの被写体の夫々に対応する学習済みモデルを構築するための学習処理を行う。また、この入力データは、操作部105を介したユーザからの指示から得てもよいし、または予めプログラムされた通信部107から受信してもよいし、記録部106に記録された入力データを読み込んでもよい。ニューラルネットワーク処理部108はGPU(Graphic Processing Unit)や、DSP(Digital Signal Processor)で構成される。なお、ニューラルネットワークの学習処理は、ニューラルネットワーク処理部108を設けず、CPU101で行ってもよいし、両方で行ってもよい。また、ニューラルネットワーク処理部108により行われた学習処理の結果である、学習済みモデルも記録部106(学習済みモデル保持手段)に保持される。また、ニューラルネットワーク処理部108は、記録部106に保存された学習済みモデルと、推論用の入力データとを用いて推論することも可能である。
【0020】
図2は、推論装置である撮像装置200のハードウェア構成を示すブロック図である。
【0021】
図2に示すように、撮像装置200は、CPU201と、メモリ202と、不揮発性メモリ203と、操作部204と、ニューラルネットワーク処理部205と、撮像部212と、画像処理部213と、符号化処理部214とを有している。更に、撮像装置200は、表示制御部215と、表示部216と、通信制御部217と、通信部218と、記録媒体制御部219と、内部バス230とを有している。また、撮像装置200は、撮影レンズ211を用いて被写体の光学像を撮像部212の画素アレイに結像させる。撮影レンズ211は、撮像装置200のボディ(筐体、本体)から、着脱不能であってもよいし、着脱可能であってもよい。また、撮像装置200は、記録媒体制御部219を介して画像データの書き込み及び読み出しを不図示の記録媒体に対して行う。記録媒体は、撮像装置200に着脱可能であってもよいし、着脱不能であってもよい。
【0022】
CPU201は、不揮発性メモリ203に記憶されているコンピュータプログラムを実行することによって、内部バス230を介して撮像装置200の各部(各機能ブロック)の動作を制御する。
【0023】
メモリ202は、書き換え可能な揮発性メモリである。メモリ202は、撮像装置200の各部の動作を制御するためのコンピュータプログラム、撮像装置200の各部の動作に関するパラメータ等の情報、通信制御部217によって受信される情報等を一時的に記録する。また、メモリ202は、撮像部212によって取得された画像、画像処理部213、符号化処理部214等によって処理された画像及び情報を一時的に記録する。メモリ202は、これらを一時的に記録するために十分な記憶容量を備えている。
【0024】
不揮発性メモリ203は、電気的に消去及び記録が可能なメモリであり、例えばEEPROM、ハードディスク等が用いられる。不揮発性メモリ203は、撮像装置200の各部の動作を制御するコンピュータプログラム及び撮像装置200の各部の動作に関するパラメータ等の情報を記憶する。このようなコンピュータプログラムに基づく処理により、撮像装置200の各種動作が実現される。更に、不揮発性メモリ203は、ニューラルネットワーク処理部205で使用する、ニューラルネットワークの処理内容を記述したコンピュータプログラムと、重み係数やバイアス値等の学習済み係数パラメータを格納する。なお、重み係数とはニューラルネットワークにおいてノード間の接続の強さを示すための値であり、バイアスは重み係数と入力データの積算値に対してオフセットを与えるための値である。不揮発性メモリ203は、学習済み係数パラメータと、ニューラルネットワークの処理を記述したコンピュータプログラムとを夫々複数保持することが可能である。
【0025】
なお、メモリ202ではなく不揮発性メモリ203に、上述したニューラルネットワーク処理部205で使用する、ニューラルネットワークの処理を記述したコンピュータプログラム及び学習済み係数パラメータを、夫々複数格納するようにしてもよい。また、不揮発性メモリ203は、履歴データも格納する。
【0026】
操作部204は、撮像装置200を操作するためのユーザインタフェースを提供する。操作部204は、電源ボタン、メニューボタン、撮影用のレリーズボタン、動画録画ボタン、キャンセルボタン等の各種ボタンを含んでおり、各種ボタンはスイッチ、タッチパネル等により構成される。CPU201は、操作部204を介して入力されたユーザの指示に従って撮像装置200を制御する。なお、ここでは、操作部204を介して入力される操作に基づいてCPU201が撮像装置200を制御する場合を例に説明したが、これに限定されるものではない。例えば、不図示のリモートコントローラ、不図示の携帯端末等から通信部218を介して入力される要求に基づいて、CPU201が撮像装置200を制御してもよい。
【0027】
ニューラルネットワーク処理部205は、予め作成された学習済みモデルにおける、係数パラメータを用いてニューラルネットワークの処理を実行する。なお、ニューラルネットワークの処理とは、例えばCNN(Convolutional Neural Network)と全結合層で構成されるものなどであるが、これに限定されるものではない。また上述の学習済み係数パラメータは、全結合層では各層のノード間を結ぶエッジ毎に持つ重み係数やバイアス値、CNNではカーネルの重み係数やバイアス値に相当する。また、ニューラルネットワーク処理部205は、圧縮された入力データや学習済み係数パラメータをデコードする機能を持っていてもよい。
【0028】
撮影レンズ(レンズユニット)211は、ズームレンズ、フォーカスレンズ等を含む不図示のレンズ群、不図示のレンズ制御部、不図示の絞り等によって構成される。撮影レンズ211は、画角を変更するズーム手段として機能し得る。撮影レンズ211のレンズ制御部は、CPU201から送信される制御信号により、焦点の調整及び絞り値(F値)の制御を行う。
【0029】
撮像部212は、動画像を構成する複数の画像を順次取得する取得手段として機能し得る。撮像部212には、例えばCCD(電荷結合素子)、CMOS(相補型金属酸化膜半導体)素子等から成るエリアイメージセンサが用いられる。撮像部212は、被写体の光学像を電気信号に変換する不図示の光電変換部が行列状、すなわち、2次元的に配列された不図示の画素アレイを有している。この画素アレイには、被写体の光学像が撮影レンズ211によって結像される。撮像部212は、撮像した画像を画像処理部213又はメモリ202に出力する。なお、撮像部212は、静止画像を取得することも可能である。
【0030】
画像処理部213は、撮像部212から出力される画像データ、又は、メモリ202から読み出された画像データに対し、所定の画像処理を行う。この画像処理の例としては、ダイナミックレンジ変換処理、補間処理、縮小処理(リサイズ処理)、色変換処理等が挙げられる。また、画像処理部213は、撮像部212によって取得された画像データを用いて、露光制御、焦点調節制御等のための所定の演算処理を行う。画像処理部213による演算処理によって得られた演算結果に基づいて、露光制御、焦点調節制御等がCPU201によって行われる。また、画像処理部213は、ニューラルネットワーク処理部205で使用する入力データの一部を0値化するデータ加工処理を行ってもよい。
【0031】
符号化処理部214は、画像データに対してフレーム内予測符号化(画面内予測符号化)、フレーム間予測符号化(画面間予測符号化)等を行うことによって、画像データのサイズを圧縮する。符号化処理部214は、例えば、半導体素子等により構成される。符号化処理部214は、撮像装置200の外部に設けられてもよい。また、符号化処理部はニューラルネットワーク処理部205で使用する入力データを符号化処理することが可能である。
【0032】
表示制御部215は、表示部216を制御する。表示部216は、不図示の表示画面を備える。表示制御部215は、表示部216の表示画面に表示可能な画像を生成し、その画像、すなわち、画像信号を表示部216に出力する。また、表示制御部215は表示部216に画像データを出力するだけでなく、通信制御部217を介して外部機器に画像データを出力することも可能である。表示部216は、表示制御部215から送られてくる画像信号に基づいて、表示画面に画像を表示する。表示部216は、表示画面にメニュー等の設定画面を表示する機能であるOSD(On Screen Display)機能を備えている。表示制御部215は、画像信号にOSD画像を重畳して表示部216に画像信号を出力し得る。表示部216は、液晶ディスプレイ、有機ELディスプレイ等により構成されており、表示制御部215から送られてきた画像信号を表示する。表示部216は、例えばタッチパネルであってもよい。表示部216がタッチパネルである場合、表示部216は、操作部204としても機能し得る。
【0033】
通信制御部217は、CPU201により制御される。通信制御部217は、IEEE802.11等のような無線通信規格に適合する変調信号を生成して、その変調信号を通信部218に出力し、外部の機器からの変調信号を、通信部218を介して受信する構成である。また、通信制御部217は、映像信号の制御信号を送受信することが可能である。例えば、HDMI(登録商標)(High Definition Multimedia Interface)やSDI(Serial Digital Interface)などの通信規格に準拠した映像信号を送るために通信部218を制御してもよい。
【0034】
通信部218は、映像信号と制御信号を物理的な電気信号に変換して外部機器と送受信を行う。なお、ここでは、通信部218によって映像信号と制御信号などの無線通信が行われる場合を例に説明したが、通信部218によって行われる通信はこれらに限定されるものではない。
【0035】
記録媒体制御部219は、記録媒体を制御する。記録媒体制御部219は、CPU201からの要求に基づいて、記録媒体を制御するための制御信号を記録媒体に出力する。記録媒体としては、例えば不揮発性メモリや磁気ディスク等が用いられる。
【0036】
各々の機能ブロック201~205、212~215、217、219は、内部バス230を介して互いにアクセス可能となっている。
【0037】
<入力データの変換方法>
図3は、入力データの変換処理を説明する図である。
【0038】
図3(a)は、入力データとしての画像データの一部の領域を示した図である。データ301は入力データの中で0となる画素である。データ302は0に変換する予定となる画素である。データ303は、データ302の0に変換する予定の画素値よりも小さい値を示す画素である。データ304は、データ301から303以外の画素値である。なお、画像データはRGBのRのみや、YUVの中の輝度信号のみであってもよく、RGBが混在したデータ、あるいはYUVが混在した画像データであってもよい。なお、データ301からデータ304において、同じ塗りつぶし、同じ網掛けの画素値は同様のデータであることを示し、以降の説明においても同様とする。
【0039】
図3(b)は、図3(a)で示した入力データを加工した場合の一例を示した図である。データ301は入力データが0であったもので、変更のない画素を示す。データ312は0に変換された値を示す。データ313は、データ312の値をデータ303から引いた値が0未満になる画素であるため0に変更した画素値である。なお、画像データ以外であれば、データ313のように0未満になってしまう値をそのまま使用してもよい。データ314はデータ312の値をデータ304から引いた値に変更された画素値である。
【0040】
<情報処理装置100の処理の流れ>
図4は、第1の実施形態の情報処理装置100において実行される入力データの加工及び学習処理の流れを示すフローチャートである。
【0041】
この動作は、情報処理装置100の電源がオンの状態において、記録部106に格納されているコンピュータプログラムがメモリ102に展開され、CPU101がメモリ102のコンピュータプログラムを読み出して実行することにより実現される。
【0042】
ステップS401において、CPU101は、記録部106に記録されている学習用の入力データをメモリ102に展開する。CPU101は、処理をステップS401からステップS402に進める。
【0043】
ステップS402において、CPU101は、メモリ102に展開された入力データのサイズが、あらかじめ決められた閾値である「V」よりも大きいか否かを判断する。入力データが小さい場合は、0値化する効果が少なく、精度への悪影響が考えられるため、それを避けるためにこの判断を行う。CPU101は、入力データが「V」よりも大きい場合(ステップS402のYES)、処理をステップS402からステップS403へ進める。CPU101は、入力データが「V」以下(所定以下)である場合(ステップS402のNO)、処理をステップS402からステップS409へ進める。
【0044】
ステップS403において、CPU101は、入力データを確認して、0である入力データの総数である「Sum0」を算出してメモリ102に格納する。CPU101は、処理をステップS403からステップS404に進める。
【0045】
ステップS404において、CPU101は、ステップS403で算出してメモリ102に格納した「Sum0」とあらかじめ決められた閾値である「S0」を比較する。本処理では、入力データの中に0値が多すぎた場合に、さらにデータを0値化すると精度に影響を及ぼすため、入力データの0値の総数をチェックする。CPU101は、 「Sum0」が「S0」よりも小さい場合(ステップS404のYES)、処理をステップS404からステップS406に進める。CPU101は、 「Sum0」が「S0」以上である場合(ステップS404のNO)、処理をステップS404からステップS405に進める。
【0046】
ステップS405において、CPU101は、後述するステップS407で使用する閾値「X」の値を変更する。CPU101は、ステップS403で算出された「Sum0」の値に応じて閾値「X」を設定する。具体的には、「Sum0」が多ければ閾値Xの値を小さくし、「Sum0」が小さければ閾値Xの値を大きくする。CPU101は、処理をステップS405からステップS406へ進める。
【0047】
ステップS406において、CPU101は、入力データの中から、0に変換する値(所定値)である「ValX」を決定する。「ValX」の値は、図3で説明したように、入力データの中で最も出現頻度の高いものや、全入力データの平均値、中央値などから判断してもよい。CPU101は、ValXの値を持つ(ValXと一致する値を持つ)総数をカウントし、「SumX」を算出する。なお、CPU101は、後述するステップS407における判定で、このステップS406に戻ってきた場合は、「SumX」の数が減るように「ValX」の値を再設定する。CPU101は、処理をステップS406からステップS407へ進める。なお、「ValX」を決めてから「SumX」を決定する流れで説明したが、「SumX」をあらかじめ決めておいて、「SumX」以下となる「ValX」を決定してもよいものとする。
【0048】
ステップS407において、CPU101は、ステップS406で求めた「SumX」とあらかじめ決められた閾値Xを比較する。CPU101は、「SumX」が閾値Xよりも小さい場合(ステップS407のYES)、処理をステップS407からステップS408へ進める。CPU101は、「SumX」が閾値X以上(閾値以上)である場合(ステップS407のNO)、処理をステップS407からステップS406へ戻す。なお、CPU101は、ステップS407からステップS406に処理を戻す回数が規定回数を超えた場合は、処理をステップS409に進めるか、あるいは表示部103を介してユーザにエラーを提示してもよい。
【0049】
ステップS408において、CPU101は、入力データの加工処理を行う。CPU101は、図3で説明したように、入力データの中で、ステップS406で決定した「ValX」の値と同じ値を持つデータを0に変換する。また、CPU101は、「ValX」の値と同じ値を持つデータ以外に関しては、各データに対して「ValX」を減算する処理を行う。CPU101は、加工した入力データをメモリ102に格納する。なお、入力データが画像データのようにマイナスの値を表現できない場合は、「ValX」よりも大きいデータに関しては0に変換し、元々0であったものも同様に0のままにする。
【0050】
ステップS409において、CPU101は、ニューラルネットワーク処理部108を制御して、ステップS408でメモリ102に格納された加工後のデータを学習用の入力データとしてニューラルネットワークにおける学習処理を行う。CPU101は、教師ありの場合は記録部106に保存されている教師データを用いて学習を行う。なお、教師データが入力データと同様のデータ形式を使用する学習方法の場合は、教師データに対しても上記ステップS401~ステップS408で説明した処理ステップによりデータ加工を行ってもよい。
【0051】
ステップS410において、CPU101は、ステップS408で処理を行った際のデータ加工方法である、「ValX」の値と、「ValX」以下と元々0であったデータの取り扱いに関するデータを加工情報ファイルとして記録部106に保存する。なお、このステップS410は、ステップS401において学習予定であった全ての入力データを読み込んで「ValX」を算出した場合に有効となる。したがって、ステップS410における処理は省略してもよいものとする。CPU101は、この処理により、本フローチャートにおける処理を終了する。
【0052】
なお、上記では1データを処理する際の流れを説明しているが、実際には複数のデータを処理することになり、例えば画像であれば1画像ではなく複数の画像データを取り扱うことになる。複数のデータを取り扱う場合は、処理におけるステップS401からステップS408を繰り返してデータを加工したのちステップS409の学習処理を実行してもよいし、ステップS401からステップS408の処理とステップS409からステップS410の処理を別タスクとして並列に処理してもよい。また、複数のデータを処理する場合、複数の全入力データから「ValX」の値を判定してもよい。
【0053】
<撮像装置200の処理の流れ>
図5は、第1の実施形態の撮像装置200において実行される推論処理の流れを示すフローチャートである。
【0054】
この動作は、撮像装置200の電源がオンの状態において、不揮発性メモリ203に格納されているコンピュータプログラムがメモリ202に展開され、CPU201がメモリ202のコンピュータプログラムを読み出して実行することにより実現される。なお、本フローチャートでは撮像装置200を推論処理に使用する場合について説明するが、上述した情報処理装置100を用いて実行してもよい。また、図5では例として、撮像装置200で撮像した画像データを入力した場合について説明する。
【0055】
ステップS501において、CPU201は、推論に使用する入力データを読み込む。CPU201は、撮像部212で撮像した画像データを、画像処理部213に送る。CPU201は、処理をステップS501からステップS502に進める。
【0056】
ステップS502において、CPU201は、あらかじめ情報処理装置100のステップS410で保存された加工情報ファイルを不揮発性メモリ203から取得してメモリ202に格納する。CPU201は、メモリ202に格納した加工情報ファイルから、上述した「ValX」の値と、「ValX」以下と元々0であったデータの取り扱いに関するデータを取得する。なお、このステップS502における処理は、上述したステップS410における処理が学習時に実施された場合に有効であって、加工情報ファイルが無い場合は未実施と判断し、処理を行わずステップS503に進む。CPU201は、処理をステップS502からステップS503に進める。
【0057】
ステップS503において、CPU201は、ステップS502の処理を行った場合は、ステップS502で取得した加工情報ファイルからの情報に従い、画像処理部213に送られた入力データである画像データに対してデータ加工を行う。ステップS502の処理が行われなかった場合は、上述した情報処理装置100におけるステップS401からステップS407の処理フローを実行してデータ加工処理を行うものとする。なお、データ加工の方法は、図4のステップS408と同様の処理を行うものとする。また、データ加工は、CPU201により実行してもよく、画像処理部213で実行してもよい。CPU201は、データ加工された入力データを符号化処理部214に送る。CPU201は、処理をステップS503からステップS504に進める。
【0058】
ステップS504において、CPU201は、符号化処理部214を用いて、データ加工された入力データに対して符号化処理を行う。なお、符号化処理は0が多い場合に圧縮効率が高まる方式で符号化を行う。CPU201は、符号化されたデータをメモリ202に格納して、処理をステップS504からステップS505へ進める。
【0059】
ステップS505において、CPU201は、ステップS504で符号化された符号化データを入力データとして、ニューラルネットワーク処理部205を制御することで推論処理を行う。なお、ニューラルネットワーク処理部205では、入力データがステップS504により符号化されている場合は、入力データをデコード(復号化)して推論処理を行う。CPU201は推論を実行した結果を、メモリ202に保存する。CPU201は処理をステップS505からステップS506に進める。
【0060】
ステップS506において、CPU201は、ステップS505でメモリ202に保存された推論結果の修正が必要か否かを判断する。例えば推論結果が画像データであって、画像回復処理を行うような場合は、ステップS503で各データに対して減算処理をした分だけデータを戻す必要がある。CPU201は、推論結果の修正が必要でない場合(ステップS506のNO)、処理を終了する。CPU201は、推論結果の修正が必要である場合(ステップS506のYES)、処理をステップS506からステップS507へ進める。
【0061】
ステップS507において、CPU201は、ステップS503で各データに対して減算処理をした分だけデータを戻す処理を行う。具体的には、ステップS503で「ValX」だけ減算したデータに対してはValXだけ加算する。また、データがValXよりも小さい値のため、0に変換した場合はValX以下の値を加算し、データが0であった箇所は0に変換する。以上で、CPU201は処理を終了する。
【0062】
以上説明したように、第1の実施形態の処理を行うことにより、精度に対する影響を軽減しながら入力データの一部を0値化することができ、データ量を減らすことができる。更に、入力データの一部を0値化することで、圧縮効率を高めることが可能となり、組み込み機器でメモリ102におけるバスを効率的に使用することができる。
【0063】
(第2の実施形態)
以下、第2の実施形態における学習処理と、推論処理に関して説明する。第1の実施形態では、入力データを加工することで0値を増やす方法について説明した。第2の実施形態では、更に入力データにおいて、0値に近い値に対して0値化することで、更に0値を増やす処理を行う。更に、入力データだけでなく、学習済み係数パラメータの0値の割合も考慮して入力データの加工を行う。
【0064】
なお、学習装置である情報処理装置100のハードウェア構成であるブロック図は図1に示したものと同様とし、推論装置である撮像装置200のハードウェア構成を示すブロック図は図2に示したものと同様とする。
【0065】
<入力データの変換方法>
図6は、入力データの変換処理を説明する図である。
【0066】
図6(a)は、図3の(b)と同じ入力データを加工した場合の一例を示した図である。データ601は0に最も近い値であり、次にデータ602、データ603の順で0に近い値となる。図6(b)は、データ601~データ603を0に変換した場合の一例を示した図である。図6(b)に示す通り、データ601~データ603はいずれもデータ611、データ612、データ613に示すように0値に変換される。
【0067】
<情報処理装置100の処理の流れ>
図7のフローチャートを用いて、第2の実施形態における情報処理装置100において実行される入力データの加工及び学習処理の流れについて説明する。
【0068】
この動作は、情報処理装置100の電源がオンの状態において、記録部106に格納されているコンピュータプログラムがメモリ102に展開され、CPU101がメモリ102のコンピュータプログラムを読み出して実行することにより実現される。
【0069】
ステップS701からステップS707の処理は、第1の実施形態のステップS401からステップS407までの処理と同様とする。但し、ステップS405と同様の処理であるステップS705と、ステップS407と同様の処理であるステップS707における閾値は閾値Xと異なる閾値Yを設定するものとする。CPU101はステップS707の処理を終えてステップS708へ処理を進める。
【0070】
ステップS708において、CPU101は、ステップS706で処理を行った加工データにおいて、0値に変更する値の範囲(閾値以下の範囲)を決定する、例えば、図6に示した加工データであれば、範囲(閾値)を1~2とすればデータ601のみが0値に変更され、範囲を1~11とすればデータ601、データ602、データ603が0値に変更される。CPU101は処理をステップS708からステップS709に進める。
【0071】
ステップS709において、CPU101は、ステップS706で加工したすべてのデータに対して、ステップS708で設定した0値に変更する値の範囲のデータを0値化した場合のデータの総数である「SumP」を算出してメモリ102に格納する。CPU101は、ステップS709からステップS710に処理を進める。
【0072】
ステップS710において、CPU101は、閾値Pと「SumP」の値を比較する。CPU101は、SumPが閾値Pよりも小さい場合(ステップS710のYES)、処理をステップS710からステップS711へ進める。CPU101は、SumPが閾値P以上である場合(ステップS710のNO)、処理をステップS710からステップS708へ戻す。なお、CPU101は、ステップS710からステップS708に処理を戻す回数が規定回数を超えた場合は、処理をステップS711に進めるか、あるいは表示部103を介してユーザにエラーを提示してもよい。
【0073】
ステップS711において、CPU101は、ステップS408と同様の処理に加えて、ステップS708で決定した0に変更する値の範囲に従ってデータの加工を実行する。CPU101は、処理をステップS711からステップS712に進める。
【0074】
ステップS712において、CPU101は、ステップS409と同様の処理を行い、ステップS712からステップS713へ処理を進める。
【0075】
ステップS713において、CPU101は、ステップS410と同様の処理に加えて、ステップS708で決定した0近傍値の範囲の情報を付加してデータ加工情報ファイルの生成を行い、ステップS713からステップS714へ処理を進める。なお、このステップはステップS410と同様に省略してもよいものとする。
【0076】
ステップS714において、CPU101は、ステップS712で学習した結果である、学習済みの係数パラメータに含まれる0値の総数である「SumW」を算出し、メモリ102に格納する。CPU101は、処理をステップS714からステップS715へ進める。
【0077】
ステップS715において、CPU101は、あらかじめ決められた閾値Wと、ステップS714で算出した「SumW」を比較する。CPU101は、「SumW」が閾値Wよりも小さい場合(ステップS715のYES)、処理をステップS715からステップS716へ進める。CPU101は、「SumW」が閾値W以上である場合(ステップS715のNO)、本フローチャートにおける処理を終了する。
【0078】
ステップS716において、CPU101は、学習済み係数パラメータに対して、公知のプルーニング処理を実行する。ここで、プルーニング処理とは、ノード数を減らす場合と、ノード間の接続を減らす方法のどちらでもよいものとする。その後、CPU101は、本フローチャートにおける処理を終了する。
【0079】
<撮像装置200の処理フロー>
推論処理を実行する撮像装置200の処理フローに関しては、第1の実施形態において図5で示した処理と同様とする。但し、ステップS503においては、ステップS502においてデータ加工情報ファイルに含まれる、0近傍値の補正も含めてデータ加工処理を行うものとする。また、ステップS503において、加工情報ファイルが存在しない場合は、第2の実施形態における情報処理装置100の処理フローである、ステップS701からステップS710の処理を行ってデータ加工を行うものとする。
【0080】
以上説明したように、第2の実施形態の処理を行うことにより、精度への影響を軽減しながら、第1の実施形態よりも更に0値を増やすことが可能であり、データ量を減らすことができる。また、入力データに対する加工にともなう精度への影響を考慮しながら、学習済み係数パラメータに対してプルーニング処理を行うことで、学習済み係数パラメータのデータを削減することも可能となる。
【0081】
(変形実施形態)
以上、本発明の実施形態について詳述したが、本発明はこれらの実施形態に限定されるものではなく、本発明の主旨を逸脱しない範囲での様々な変形も本発明に含まれる。
【0082】
本発明が適用され得る対象は、上述の実施形態で説明した情報処理装置100、撮像装置200等に限定されるものではない。例えば、情報処理装置100を複数の装置から構成されるシステムとした場合であっても上述の実施形態と同様の機能を実現することが可能である。更に、撮像装置200の処理の一部をネットワーク上の外部装置により実施して実現することが可能である。
【0083】
また、ニューラルネットワーク処理部108,205は機械学習用のアルゴリズムにより動作する処理部であればよく、アルゴリズムはニューラルネットワークに限定されない。例えば、SVM(サポートベクターマシン)、決定木などのアルゴリズムを用いてもよい。
【0084】
(他の実施形態)
また本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現できる。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現できる。
【0085】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0086】
101,201:CPU、102,202:メモリ、103:表示部、105,204:操作部、106:記録部、107:通信部、108,205:ニューラルネットワーク処理部
図1
図2
図3
図4
図5
図6
図7