以下に、本開示の実施形態について図面に基づいて詳細に説明する。なお、以下の各実施形態において、同一の部位には同一の符号を付することにより重複する説明を省略する。
また、以下に示す項目順序に従って本開示を説明する。
1.第1実施形態
1-1.第1実施形態に係る固体撮像システムの構成
1-2.第1実施形態に係る固体撮像システムの処理
1-3.第1実施形態に係る固体撮像システムのユースケース
1-4.第1実施形態に係る固体撮像システムの変形例
2.第2実施形態
2-1.第2実施形態に係る固体撮像システムの構成
2-2.第2実施形態に係る固体撮像システムの変形例の構成
3.第3実施形態
3-1.第3実施形態に係る固体撮像システムの構成
4.ハードウェア構成
(1.第1実施形態)
[1-1.第1実施形態に係る固体撮像システムの構成]
図1と、図2とを用いて、本開示の第1実施形態に係る固体撮像システムの構成について説明する。図1は、本開示の第1実施形態に係る固体撮像システムの構成の一例を示すブロック図である。図2は、本開示の第1実施形態に係る固体撮像システムの接続関係を説明するための図である。
図1に示すように、固体撮像システム1は、固体撮像装置100と、情報処理装置200とを含む。
図2に示すように、固体撮像装置100と、情報処理装置200とは、同一の筐体10の中に存在している。言い換えれば、固体撮像装置100と、情報処理装置200とは、同一の筐体10の中に別チップとして存在している。固体撮像装置100と、情報処理装置200とは、SoC(System-on-a-chip)、MCM(Multi-Chip Module)、SIP(System In a Package)、SOP(Small Outline Package)などで実装されている。固体撮像システム1は、例えば、インターネット通信網300によって外部の装置と通信可能に接続されていてもよい。この場合、固体撮像システム1は、例えば、無線通信によって外部の装置と通信可能に接続されていてもよい。固体撮像システム1は、例えば、VPA(Virtual Personal Assistant)や、車載カメラに適用することができる。
図1に示すように、固体撮像装置100は、撮像部110と、撮像処理部120と、DNN処理部130と、記憶部140と、評価部150と、DNN制御部160と、セレクタ170と、通信I/F180と、通信制御部190とを備える。
図3は、第1実施形態に係る固体撮像装置100の積層構造の一例を示す模式図である。図3に示すように、固体撮像装置100は、例えば、矩形の第1基板11と、矩形の第2基板12とが貼り合わされた積層構造を有している。
第1基板11と、第2基板12とは、例えば、第1基板11及び第2基板12をそれぞれチップに個片化した後、これら個片化された第1基板11及び第2基板12を貼り合わせる、いわゆるCoC(Chip on Chip)方式で貼り合わせればよい。また、第1基板11と第2基板12とのうち一方(例えば、第1基板11)をチップに個片化した後、この個片化された第1基板11を個片化前(すなわち、ウエハ状態)の第2基板12に貼り合わせる、いわゆるCoW(Chip on Wafer)方式で貼り合わせてもよい。さらに、第1基板11と第2基板12とを共にウエハの状態で、いわゆるWoW(Wafer on Wafer)方式で貼り合わせてもよい。
第1基板11と第2基板12との接合方法には、例えば、プラズマ接合等を使用することができる。ただし、これに限定されず、種々の接合方法が用いられてよい。
第1基板11と、第2基板12とのサイズは、同じであってもよいし、異なっていてもよい。第1基板11と、第2基板12とは、例えば、シリコン基板などの半導体基板である。
第1基板11には、図1に示す固体撮像装置100の構成要素のうち、例えば、撮像部110が配置される。
第2基板12は、図1に示す固体撮像装置100の構成要素のうち、例えば、撮像処理部120と、DNN処理部130と、記憶部140と、評価部150と、DNN制御部160と、セレクタ170と、通信I/F180と、通信制御部190とが配置される。
すなわち、固体撮像装置100の撮像部110は、撮像部110以外の構成要素に積層実装された構成を有している。
再び図1を参照する。撮像部110は、例えば、ズームレンズ、フォーカスレンズ、絞りなどを備える光学系と、フォトダイオードなどの受光素子を含む単位画素が2次元マトリクス状に配列した構成を備える画素アレイ部とを備える。外部から入射した光は、光学系を介することで、画素アレイ部における受光素子が配列した受光面に結像される。画素アレイ部の各単位画素は、その受光素子に入射した光を光電変換することで、入射光の光量に応じた画像データを生成する。撮像部110は、撮像した画像データを撮像処理部120に出力する。
撮像処理部120は、例えば、画像データをデジタルの画像データに変換する。撮像処理部120は、例えば、デジタルに変換した画像データに対して、「前処理」、「データ拡張」、及び「データの正規化」を実行する。前処理は、推論時及び学習時において撮像部110に対して実行する処理であり、例えば、デワープ、クロップ、レンズシェーディング補正、ダウンスケール、アップスケールといった処理を含む。データ拡張は、学習時において画像データに対して実行される処理であり、例えば、画像データの縦横比を変更したり、画像データを平行に移動させたり、回転させたり、反転させたり、幾何学的に変形させたりする処理を含む。また、データ拡張は、例えば、画像データの色の濃淡を変更させたり、色を変動させたりする処理を含む。さらに、データ拡張は、例えば、画像データにノイズを加算する処理を含む。データの正規化は、推論時及び学習時に画像データに対して実行される処理であり、例えば、画像データの画素値の平均を0にしたり、画素値の分散を1にしたり、成分間の相関を0にして画像データを白色化したりする処理を含む。撮像処理部120は、種々の処理を実行したデジタルの画像データをDNN処理部130と、セレクタ170とに出力する。
DNN処理部130は、例えば、記憶部140に記憶されているDNNモデルに基づいて、撮像処理部120から入力された画像データに対してDNNを実行することで、画像データに含まれる物体の認識処理を実行する。具体的には、DNN処理部130は、撮像処理部120から受けた画像データに対して、画像データに含まれる物体の検知処理を実行する。DNN処理部130は、画像データに対するDNNの実行結果を評価部150に出力する。DNN処理部130は、例えば、DSPで実現することができる。言い換えれば、DNN処理部130は、DSPにDNNを実行する機能を持たせることで実現することができる。また、固体撮像装置100は、DNN処理部130を、1つのみ備えていてもよいし、複数備えていてもよい。
ここで、図4を用いて、DNN処理部130が実行する物体検知処理の一例について説明する。図4は、DNN処理部130が実行する物体検知処理の一例を説明するための図である。なお、図4で示す物体検知処理は一例であり、本開示を限定するものではない。
図4に示すように、DNN処理部130は、画像分類処理、位置特定処理、物体認識処理、セマンティックセグメンテーション、インスタンスセグメンテーション、キーポイント検出処理などを実行する。
画像分類処理は、画像データ全体に含まれる物体の種類を分類する処理である。例えば、画像分類処理では、画像データに人と動物とが含まれていることを認識する。
位置特定処理は、画像データに含まれる主要な物体の位置と種類とを分類する処理である。例えば、特定処理では、主要な物体として人の位置を特定する。
物体認識処理は、画像データに含まれる複数の物体の位置と、種類とを分類する処理である。例えば、物体認識処理では、人と、動物とを分類し、人と、動物とのそれぞれの位置を認識する。
セマンティックセグメンテーションは、画像データに含まれる複数の物体の位置と種類とを分類し、同一種類の物体に同一のマスキングを施す処理である。例えば、セマンティックセグメンテーションでは、人と、動物とに対して異なるマスキングを施す。ここでは、各動物には、同じマスキングが施される。
インスタンスセグメンテーションは、画像データに含まれる複数の物体の位置と種類とを分類し、物体ごとにマスキングを施す処理である。例えば、インスタンスセグメンテーションでは、人と、各動物とに対して、それぞれ、異なるマスキングが施される。
キーポイント検出処理は、画像データに含まれる複数の物体の位置と種類とを分類し、物体のキーポイントを検出する処理である。例えば、キーポイント検出処理では、人のキーポイントが検出される。
再び図1を参照する。具体的には、DNN処理部130は、例えば、撮像処理部120から受けた画像データに対して畳み込み演算、バイアス加算、活性化演算、プーリング処理を実行することで物体検知処理を行う。
DNN処理部130が活性化演算で用いる活性化関数としては、例えば、恒等関数、シグモイド関数、ソフトマックス関数、ステップ関数、ReLU関数、及びTanh関数を挙げることができるが、これらに限定されない。
また、DNN処理部130は、例えば、学習時において、誤差や、損失関数の値を計算する。DNN処理部130は、例えば、勾配降下法、確率的勾配降下法、ニュートン法、準ニュートン法、誤差逆伝搬法などの手法を用いて、対象となるDNNモデルの誤差を計算する。DNN処理部130は、例えば、最小二乗誤差、交差エントロピー誤差などの手法を用いて、損失関数の値を算出する。
記憶部140は、例えば、DNN処理部130で実行する少なくとも1つのDNNモデルを記憶している。記憶部140は、例えば、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子で実現することができる。
記憶部140が記憶しているDNNモデルは、例えば、分類分け、物体検知、人体キーポイント認識、顔検出、顔識別、画像生成(例えば、GAN(Generative Adversarial Network))、再帰型(例えば、RNN(Recurrent Neural Network))、及びノイズ除去用のモデルを挙げることができる。なお、ここで挙げたDNNの種類は例示であり、本開示を限定するものではない。
記憶部140に記憶されているDNNモデルには、例えば、IDなどの識別情報が関連付けられている。言い換えれば、各DNNモデルは、識別情報で管理されており、識別情報に基づいて、外部から所望のDNNモデルを選択することができるように記憶部140に記憶されている。すなわち、記憶部140に記憶されているDNNモデルは、識別情報に基づいて、外部から読み出したり、追記や変更など書き込みしたりすることが可能である。また、記憶部140が記憶しているDNNモデルには、固体撮像装置100の識別情報が関連付けられていてもよい。これにより、固体撮像装置100が複数存在する場合に、どの装置に記憶されていたDNNモデルであるかを判別することができる。記憶部140は、推論用のDNNモデルを1つ以上記憶していてもよいし、学習用のDNNモデルを1つ以上記憶していてもよい。また、記憶部140は、推論用のDNNモデルと、学習用のDNNモデルとを1つ以上記憶していてもよい。
また、記憶部140に記憶されているDNNモデルは、それぞれ、モデル情報で区別されている。モデル情報としては、例えば、入力画像サイズ、フィルタサイズ、フィルタ値、フィルタ数、ストライド数、パディング数、バイアス値、活性化関数の種類、DNNの精度、損失関数の値、バッチサイズ、正規化の種類、及び学習率などを挙げることができる。なお、ここで挙げたDNNモデルのモデル情報は例示であり、本開示を限定するものではない。
入力画像サイズは、DNNを実行する画像データのサイズを意味しており、縦画素数×横画素数×チャネル数で定義される。チャネル数は、入力画像の枚数を意味している。
フィルタサイズは、入力画像に適用するフィルタであり、縦画素数×横画素数×チャネル数で定義される。フィルタ値はフィルタの重みであり、学習によって自動的に設定される値である。入力画像にフィルタを適用することで、入力画像の特徴量が抽出される。ここでは、入力画像に対して通常の畳み込み演算(convolution)が実行された場合には、入力画像サイズよりも小さな特徴マップが生成される。また、入力画像に対して転置畳み込み演算(transposed convolution)が実行された場合には、入力画像サイズよりも大きな特徴マップが生成される。
ストライド数は、入力画像にフィルタを適用する際のフィルタの移動量を意味している。パディング数は、フィルタを適用した後の特徴マップの端の領域の大きさを意味している。バイアス値は、入力画像とは独立して入力される値である、バイアス値は、学習によって自動的に設定される。
活性化関数の種類は上述したような、例えば、恒等関数、シグモイド関数、ソフトマックス関数、ステップ関数、ReLU関数、及びTanh関数である。
DNNの精度は、入力画像の認識精度であり、本実施形態では評価部150で評価される。損失関数の値は、最小二乗誤差、交差エントロピー誤差などによって算出される値である。バッチサイズは、学習用データのデータサンプル数を意味している。学習率は、DNNモデルの学習計数を意味している。
また、記憶部140は、例えば、学習用のデータを記憶していてもよい。学習用のデータとしては、例えば、訓練誤差算出用の訓練データや、テスト誤差算出用のテストデータである。記憶部140は、学習データをあらかじめ記憶していてもよいし、学習モードの時に撮像部110が撮像した画像データを学習データとして記憶してもよい。
記憶部140は、例えば、撮像部110が撮像した画像データを学習データとして記憶する場合には、画像データをRawデータで記憶する。この場合、撮像部110が撮像した画像データは、学習前に撮像処理部120によって、「前処理」、「データ拡張」、及び「データの正規化」が行われている。また、記憶部140は、画像データをRawデータで記憶しない場合であっても、あらかじめ「前処理」、「データ拡張」、「データの正規化」をしておいてもよい。
評価部150は、例えば、DNN処理部130のDNNの実行結果に基づいて、DNN処理部130の処理状況を評価し、評価情報を生成する。評価部150は、例えば、推論時においては、DNN処理部130がDNNを実行する際に使用する消費電力や、DNNの認識精度などを計測して評価情報を生成する。DNNの精度を判定するために、評価情報には、DNNの認識精度に関する情報が含まれることが好ましい。評価部150は、例えば、学習時においては、DNNの認識精度や、損失関数の値を計測して評価情報を生成する。評価部150は、DNN処理部130を含む固体撮像装置100の処理状況を評価して評価情報を生成してもよい。評価部150は、評価情報の少なくとも一部を情報処理装置200に送信する。なお、評価情報には、DNNモデルのモデル情報、DNNモデルの識別情報、固体撮像装置100の識別情報、各部の消費電力、各部の動作周波数、フレームレート、クラス分類数及び物体検知数(ROI(Region Of Interest)数)を含む分類数などを含む。ここで挙げた評価情報に含まれる情報は例示であり、本開示を限定するものではない。
DNN制御部160は、情報処理装置200の制御部230から制御情報を取得する。DNN制御部160は、制御情報に基づいて、記憶部140に記憶されているDNNモデルのパラメータを変更する。これにより、DNN制御部160は、記憶部140に記憶されているDNNモデルを別の異なるDNNモデルに変更する。具体的には、DNN制御部160は、例えば、DNNモデルの識別情報や固体撮像装置100の識別情報に基づいて、DNNモデルを検索して読み出す。そして、DNN制御部160は、例えば、制御情報に基づいて、DNNモデルに対して追記や変更などの書き込みを行う。また、DNN制御部160は、例えば、制御情報に基づいて、DNNモデルを新規に作成したり、記憶部140に記憶されているDNNモデルを削除したりする。DNN制御部160は、例えば、DNNモデルの変更が完了したことを、情報処理装置200に送信してもよい。
具体的には、DNN制御部160は、DNNモデルに対して、正規化、ドロップアウト、モメンタム、重みの初期化などを実行する。正規化は、学習時に、過学習を防止するために重みの自由度を制限する処理である。ドロップアウトは、学習時に、多層ネットワークのユニットを決まった確率で選出して重みを更新する処理である。モメンタムは、学習時に、勾配降下法の収束性能を向上させるために、重み計数の修正量を計算する時に、前回の定数倍を加える処理である。重みの初期化は、ガウス分布によるランダム値を初期値にする処理である。
より具体的には、DNN制御部160は、少なくとも、記憶部140が記憶しているDNNモデルの入力画像サイズ及びフィルタサイズのいずれか一方を変更することが好ましい。これにより、種々の画像データに対して、DNNを実行することができる。
DNN制御部160は、例えば、制御情報に基づいて、DNN処理部130を制御して、記憶部140が記憶しているDNNモデルの分類数を変更する。例えば、当初記憶されていたDNNモデルは、屋内での画像データにDNNを実行することを想定していて、分類数が比較的少なかった場合において、分類数を多くすることによって、屋外の画像データにも対応できるDNNモデルに変更することができる。
DNN制御部160は、例えば、制御情報に基づいて、記憶部140が記憶しているDNNモデルの消費電力を変更する。例えば、DNN処理部130がDNNモデルを実行することで過度に電力を消費する場合に、消費電力の少ないDNNモデルに変更することで、消費電力を抑制することができる。
DNN制御部160は、例えば、制御情報に基づいて、記憶部140が記憶しているDNNモデルに認識精度を変更する。例えば、DNN処理部130がDNNモデルを実行した結果、認識精度が低かった場合に、認識精度の高いDNNモデルに変更する。これにより、物体認識の精度を向上させることができる。また、認識精度が必要以上に高かった場合には、認識精度の低いDNNモデルに変更する。これにより、演算速度を向上させたり、消費電力を低減させたりすることができる。
DNN制御部160は、例えば、制御情報に基づいて、実行したDNNモデルを記憶部140が記憶しているDNNモデルに切り替えてもよい。これにより、新たにDNNモデルを作成することなく、記憶部140に記憶されているDNNモデルを使用することができるので、容易にDNNモデルを変更することができる。その結果、異なるDNNの実行結果を容易に得ることができる。
セレクタ170は、例えば、撮像処理部120から種々の処理が施されたデジタルの画像データを受ける。セレクタ170は、例えば、DNN処理部130からDNNの実行結果を受ける。セレクタ170は、例えば、評価部150から評価情報を受ける。セレクタ170は、例えば、図示しないセレクタの制御部からの制御信号に従って撮像処理部120、DNN処理部130、及び評価部150から受けたデータを選択的に通信I/F180に出力する。
通信I/F180は、送信部181と、受信部182とを備える。固体撮像装置100からのデータは送信部181を介して情報処理装置200に送信される。情報処理装置200からのデータは受信部182を介して固体撮像装置100に入力される。
通信制御部190は、通信I/F180を制御する。これにより、通信I/F180は、情報処理装置200にデータを送信したり、情報処理装置200からデータを受信したりする。通信制御部190は、例えば、データを暗号化してもよい。暗号化する場合には、通信制御部190は、例えば、DES(Data Encryption Standard)や、AES(Advanced Encryption Standard)といった共通鍵暗号を用いることができる。また、通信制御部は、例えば、ECB(Electronic Codebook)、CBC(Cipher Block Chaining)、CFB(Cipher Feedback)、OFB(Output Feedback)、及びCTR(Counter)といった暗号モードを利用してもよい。
情報処理装置200は、通信I/F210と、通信制御部220と、制御部230とを備える。第1実施形態において、情報処理装置200は、例えば、アプリケーションプロセッサで実現することができる。
通信I/F210は、受信部211と、送信部212とを備える。固体撮像装置100からのデータは受信部211を介して制御部230に入力される。情報処理装置200からのデータは送信部212を介して固体撮像装置100に送信される。
通信制御部220は、通信I/F210を制御する。これにより、通信I/F210は、情報処理装置200にデータを送信したり、情報処理装置200からデータを受信したりする。通信制御部220は、例えば、データを暗号化して固体撮像装置100と通信してもよい。暗号化する場合には、通信制御部220は、例えば、DESや、AESといった共通鍵暗号を用いることができる。また、通信制御部220は、例えば、ECB、CBC、CFB、OFB、及びCTRといった暗号モードを利用してもよい。
制御部230は、例えば、通信I/F210を介して、固体撮像装置100から評価部150が生成した評価情報を取得する。制御部230は、評価情報に基づいて、DNNモデルを変更するための制御情報を生成する。制御部230は、例えば、制御情報を固体撮像装置100に送信することによって、固体撮像装置100に別のDNNモデルを実行させる。具体的には、制御部230は、例えば、制御情報を固体撮像装置100に送信することで、DNNモデルの分類数、認識精度、消費電力を変更させる。これにより、固体撮像装置100の周囲の環境に応じて、最適なDNNを実行させることができる。また、制御情報には、変更用の、DNNモデルのモデル情報、DNNモデルの識別情報、固体撮像装置100の識別情報、消費電力、動作周波数、フレームレート、分類数に関する情報が含まれる。
制御部230は、例えば、固体撮像装置100の記憶部140に記憶されているDNNモデルに関する情報を取得することが好ましい。これにより、制御部230は、固体撮像装置100の記憶部140に記憶されているDNNモデルに基づいて、制御情報を生成することができる。その結果、固体撮像装置100は、効率的にDNNモデルを変更することができる。
[1-2.第1実施形態に係る固体撮像システムの処理]
図5を用いて、固体撮像装置100と、情報処理装置200との処理について説明する。図5は、固体撮像装置100と、情報処理装置200との処理の流れを示すシーケンス図である。
まず、固体撮像装置100は、入力画像に対してDNNを実行する(ステップS101)。具体的には、固体撮像装置100は、DNN処理部130によって記憶部140からDNNモデルを読み出して入力画像に対してDNNを実行する。
次に、固体撮像装置100は、DNNの評価情報を生成する(ステップS102)。具体的には、固体撮像装置100は、評価部150によって評価情報を生成する。
次に、固体撮像装置100は、評価情報を情報処理装置200に送信する(ステップS103)。具体的には、固体撮像装置100は、評価部150によって、通信I/F180を介して、評価情報を情報処理装置200に送信する。
次に、情報処理装置200は、制御情報を生成する(ステップS104)。具体的には、情報処理装置200は、制御部230によって、評価情報に基づいて制御情報を生成する。
次に、情報処理装置200は、固体撮像装置100に制御情報を送信する(ステップS105)。
次に、固体撮像装置100は、DNNを変更する(ステップS106)。具体的には、固体撮像装置100は、DNN制御部160によって、記憶部140に記憶されているDNNモデルを変更する。
図6を用いて、DNNを用いた学習の動作について説明する。図6は、あらかじめ記憶部に記憶されているデータを利用して、制御信号に基づいたDNNを用いた学習の処理の流れを示すフローチャートである。
まず、固体撮像装置100は、DNNモデルのパラメータを設定する(ステップS201)。具体的には、固体撮像装置100は、情報処理装置200からの制御信号に基づいて、DNN制御部160によって、DNN処理部130を制御し、記憶部140に記憶されているDNNモデルのパラメータを設定する。
次に、固体撮像装置100は、DNNを実行する(ステップS202)。具体的には、固体撮像装置100は、DNN処理部130によって、ステップS201でパラメータが変更されたDNNモデルに基づいてDNNモデルを実行する。
次に、固体撮像装置100は、ステップS202で実行したDNNを評価する(ステップS203)。具体的には、固体撮像装置100は、評価部150によって、損失関数や、DNNの精度の値を算出する。
次に、固体撮像装置100は、損失関数や、DNNの精度の値が目的の値となるまで学習する(ステップS204)。具体的には、固体撮像装置100は、制御信号に基づいて、DNN処理部130によって、損失関数や、DNNの精度の値が目的の値となるまで学習する。
次に、固体撮像装置100は、目的の値となったDNNモデルを記憶部140に保存する(ステップS205)。具体的には、固体撮像装置100は、DNN制御部160によって、DNN処理部130を制御し、DNNモデルを記憶部140に保存する。
図7と、図8とを用いて、撮像部110から逐次撮影しながら学習する処理について説明する。図7は、撮像部110から逐次撮影しながら学習する処理の流れを示すフローチャートである。図8は、画像データに対する処理を説明するための模式図である。
まず、固体撮像装置100は、任意の物体を撮影する(ステップS301)。具体的には、固体撮像装置100は、撮像部110によって任意の物体を撮影する。
次に、固体撮像装置100は、撮影した画像データを処理する(ステップS302)。具体的には、固体撮像装置100は、撮像処理部120によって、画像データに対し、前処理、データ拡張、及びデータの正規化のいずれかを実行する。
次に、固体撮像装置100は、バッチ数を記憶部140に保存する(ステップS303)。具体的には、固体撮像装置100は、DNN処理部130によって、バッチ数を記憶部140に保存する。
次に、固体撮像装置100は、DNNモデルのパラメータを設定する(ステップS304)。具体的には、固体撮像装置100は、DNN制御部160によって、DNN処理部130を制御し、記憶部140に記憶されているDNNモデルのパラメータを設定する。
次に、固体撮像装置100は、DNNを実行する(ステップS305)。具体的には、固体撮像装置100は、DNN処理部130によって、ステップS304でパラメータが変更されたDNNモデルに基づいてDNNモデルを実行する。より具体的には、DNN処理部130は、複数枚の画像データに対してDNNモデルを実行して、複数枚の画像データのそれぞれに対して認識結果を出力する。この時、DNN処理部130は、推論理論モードにしておく。例えば、図8に示すように、DNN処理部130には、第1画像データID1と、第1画像データID1の縦横比が変換された第2画像データID2と、第1画像データID1にノイズが印加された第3画像データID3が入力される。そして、DNN処理部130は、第1画像データID1と、第2画像データID2と、第3画像データID3との認識結果として、それぞれ、第1認識結果RR1と、第2認識結果RR2と、第3認識結果RR3とを出力する。第1認識結果RR1と、第2認識結果RR2と、第3認識結果RR3とでは、顔の位置が認識されている。ここで、第4認識結果RR4として、1認識結果RR1と、第2認識結果RR2と、第3認識結果RR3とで認識された顔の位置を重ねて示している。
次に、固体撮像装置100は、ステップS305で実行したDNNを評価する(ステップS306)。具体的には、固体撮像装置100は、評価部150によって、損失関数や、DNNの精度の値を算出する。また、固体撮像装置100は、評価部150によって、DNNの精度や損失関数の値に基づいて、評価情報を生成する。
次に、固体撮像装置100は、認識結果や評価情報に基づいて、正解データを生成する(ステップS307)。具体的には、固体撮像装置100は、評価部150によって、第1認識結果RR1、第2認識結果RR2、第3認識結果RR3、評価情報などに基づいて、正解データを生成する。例えば、図8に示すように、評価部150は、第1認識結果RR1、第2認識結果RR2、第3認識結果RR3との平均を求めて、正解データを生成する。ここでは、評価部150は、算術平均を用いて正解データを生成しているが、加重平均を用いて正解データを生成してもよい。また、評価部150は、例えば、認識結果のうち、あらかじめ定めた閾値以下の精度の認識結果(精度の悪い認識結果)は、平均化の処理から除いてもよい。また、評価部150は、認識結果の平均を求める際には、元画像データと、認識結果との座標(位置関係)を補正することが好ましい。例えば、撮像処理部120で並行移動した画像データは、DNN処理部130による認識結果も元の画像データから平行移動したものとなっている。そのため、評価部150は、平均化する前に、認識結果を元の画像データと座標が同一となるように、平行移動して補正することが好ましい。
次に、固体撮像装置100は、正解データと画像データとを記憶部140に保存する(ステップS308)。具体的には、固体撮像装置100は、評価部150によって、正解データと画像データとを、学習用データLD1として記憶部140に保存する。すなわち、本実施形態では、固体撮像装置100は、複数の認証結果に基づいて、教師データを自動で生成することができる。言い換えれば、アノテーションの工程を人手によらず、自動化することができる。
次に、固体撮像装置100は、損失関数や、DNNの精度の値が目的の値となるまで学習する(ステップS309)。具体的には、固体撮像装置100は、制御信号に基づいて、DNN処理部130によって、損失関数や、DNNの精度の値が目的の値となるまで学習する。より具体的には、図8に示すように、DNN制御部160がDNN処理部130を制御して、ステップS308で記憶部140に保存した学習用データLD1を用いて、ステップS305で使用したDNNモデルの学習を実行する。この時、DNN処理部130は、学習モードにしておく。なお、DNN処理部130は、学習用データLD1と、あらかじめ記憶部140に保存しておいた学習用データを混合させてDNNモデルの学習を実行してもよい。この場合、ステップS303で保存したバッチ数の中に含まれる、一定数の生成された学習用データを混合させることが好ましい。また、DNN処理部130は、学習用データLD1のみを用いて、学習を行ってもよい。上述したように、本実施形態では、アノテーションの工程が自動化されている。そのため、本実施形態は、固体撮像装置100から画像データを外部に出力させることなく、DNNモデルを自動で学習させることができる。
次に、固体撮像装置100は、学習結果を記憶部140に保存する(ステップS310)。具体的には、固体撮像装置100は、DNN制御部160によって、DNN処理部130を制御し、学習されたDNNモデルを記憶部140に保存する。
なお、評価部150は、ステップS310で記憶部140に保存された、学習されたDNNモデルを用いて、再度、上記の処理を実行して学習用データを生成してもよい。また、固体撮像装置100は、撮像部110が撮像した画像データだけでなく、記憶部140に保存しておいた学習用画像データを用いて、DNNモデルの学習を実行してもよい。
[1-3.第1実施形態に係る固体撮像システムのユースケース]
図9を用いて、DNNモデルを変更する場合のユースケースについて説明する。図9は、DNNモデルを変更する場合のユースケースを示す表である。
ユースケース1は、DNN処理部130の推論時の動作である。ここでは、固体撮像装置100の評価部150は、実行したDNNモデルの評価情報を生成する。情報処理装置200の制御部230は、評価情報に基づいて目標性能を決める。この場合、目標性能を制御情報とする。すなわち、ユースケース1では、制御情報にDNNモデルのパラメータは含まれていない。そして、固体撮像装置100のDNN制御部160は、制御情報に基づいて、DNNモデルのパラメータを決定し、DNNモデルにパラメータを設定する。
ユースケース2は、DNN処理部130の推論時の動作である。ここでは、固体撮像装置100の評価部150は、実行したDNNモデルの評価情報を生成する。情報処理装置200の制御部230は、評価情報に基づいて目標性能を決定し、DNNモデルのパラメータを決定する。この場合、DNNモデルのパラメータを制御情報とする。すなわち、ユースケース2では、制御情報には、目標設定とDNNモデルのパラメータが含まれている。そして、固体撮像装置100のDNN制御部160は、制御情報に基づいて、DNNモデルのパラメータを決定し、DNNモデルにパラメータを設定する。
ユースケース3は、DNN処理部130の学習時の動作である。ここでは、固体撮像装置100の評価部150は、実行したDNNモデルの評価情報を生成する。情報処理装置200の制御部230は、評価情報に基づいて目標性能を決める。この場合、目標性能を制御情報とする。すなわち、ユースケース3では、制御情報にDNNモデルのパラメータは含まれていない。そして、固体撮像装置100のDNN制御部160は、制御情報に基づいて、DNNモデルのパラメータを決定し、DNNモデルにパラメータを設定する。
ユースケース4は、DNN処理部130の学習時の動作である。ここでは、固体撮像装置100の評価部150は、実行したDNNモデルの評価情報を生成する。情報処理装置200の制御部230は、評価情報に基づいて目標性能を決定し、DNNモデルのパラメータを決定する。この場合、DNNモデルのパラメータを制御情報とする。すなわち、ユースケース4では、制御情報には、目標設定とDNNモデルのパラメータが含まれている。そして、固体撮像装置100のDNN制御部160は、制御情報に基づいて、DNNモデルのパラメータを決定し、DNNモデルにパラメータを設定する。
[1-4.第1実施形態に係る固体撮像システムの変形例]
図10を用いて、第1実施形態の変形例に係る固体撮像システムの構成について説明する。図10は、第1実施形態の変形例に係る固体撮像システムの構成を示すブロック図である。
図10に示すように、固体撮像システム1Aは、固体撮像装置100Aと、情報処理装置200とを含んでいる。
固体撮像装置100Aは、撮像部110-1、110-2と、撮像処理部120-1、120-2と、DNN処理部130-1、130-2と、記憶部140-1、140-2と、評価部150-1、150-2と、DNN制御部160-1、160-2と、セレクタ170-1、170-2と、マルチプレクサ171と、デマルチプレクサ172と、通信I/F180と、通信制御部190とを備えている。すなわち、固体撮像装置100Aは、撮像部と、撮像処理部と、DNN処理部と、記憶部と、評価部と、DNN制御部と、セレクタとを、それぞれ、2個ずつ備えている。
この場合、撮像部110-1と、撮像処理部120-1と、DNN処理部130-1と、記憶部140-1と、評価部150-と、DNN制御部160-1と、セレクタ170-1とで1つの固体撮像装置100A-1が構成されている。また、撮像部110-2と、撮像処理部120-2と、DNN処理部130-2と、記憶部140-2と、評価部150-2と、DNN制御部160-2と、セレクタ170-2とで1つの固体撮像装置100A-2が構成されている。固体撮像装置100A-1と、固体撮像装置100A-2とを構成する各部については、固体撮像装置100と同様なので説明は省略する。
固体撮像装置100A-1と、固体撮像装置100A-2とから出力される信号は、マルチプレクサ171に入力される。マルチプレクサ171は、固体撮像装置100A-1と、固体撮像装置100A-2とから出力された信号を1つにまとめて、通信I/F180の送信部181に入力する。これにより、固体撮像装置100A-1と、固体撮像装置100A-2とから出力された信号は、情報処理装置200に送信される。
情報処理装置200から出力された制御情報は、通信I/F180の受信部182を介してデマルチプレクサ172に入力される。デマルチプレクサ172は、入力された制御情報を2つに分けて、DNN制御部160-1と、DNN制御部160-2とに入力する。これにより、固体撮像装置100A-1と、固体撮像装置100A-2とに、制御情報が入力される。
図10では、固体撮像装置100A-1と、固体撮像装置100A-2とが、それぞれ、記憶部と、評価部と、DNN制御部とを備えているが、これは例示であり、本開示を限定するものではない。固体撮像装置100A-1と、固体撮像装置100A-2とは、記憶部と、評価部と、DNN制御部とを共有していてもよい。
(2.第2実施形態)
[2-1.第2実施形態に係る固体撮像システムの構成]
図11と、図12とを用いて、本開示の第2実施形態に係る固体撮像システムの構成について説明する。図11は、本開示の第2実施形態に係る固体撮像システムの構成の一例を示すブロック図である。図12は、本開示の第2実施形態に係る固体撮像システムの接続関係を説明するための図である。
図11に示すように、固体撮像システム1Bは、固体撮像装置100と、情報処理装置200Aとを含む。固体撮像システム1Bを構成する各装置の構成要素や動作については、第1実施形態に係る固体撮像システム1と同様なので、説明は省略する。
図12に示すように、固体撮像装置100と、情報処理装置200Aとは、例えば、インターネット通信網300を介して通信可能に接続されている。この場合、固体撮像装置100の通信I/F180と、情報処理装置200Aの通信I/F210とが、インターネット通信網300を介して通信可能に接続されていればよい。固体撮像装置100の通信I/F180と、情報処理装置200Aの通信I/F210とが、無線通信によって通信可能に接続されていてもよい。第2実施形態において、情報処理装置200Aは、例えば、固体撮像装置100とインターネット通信網300や、無線によって通信可能に接続されたクラウドサーバである。固体撮像システム1Bは、例えば、FA(Factory Automation)や、監視カメラに適用することができる。
[2-2.第2実施形態に係る固体撮像システムの変形例の構成]
図13を用いて、本開示の第2実施形態に係る固体撮像システムの変形例について説明する。図13は、本開示の第2実施形態に係る固体撮像システムの接続関係の変形例を説明するための図である。
固体撮像システム1B-1は、固体撮像装置100-1と、固体撮像装置100-2と、・・・、固体撮像装置100-N(Nは3以上の整数)と、情報処理装置200A-1と、情報処理装置200A-2と、・・・、情報処理装置200-Nとを含む。すなわち、固体撮像システム1B-1は、複数の固体撮像装置と、複数の情報処理装置とが、インターネット通信網300を介して通信可能に接続されている。固体撮像システム1B-1において、固体撮像装置と、情報処理装置との数は同じであってもよいし、異なっていてもよい。
固体撮像システム1B-1は、固体撮像装置と、情報処理装置とのそれぞれを複数含んでいるが、これは例示であり、本開示を限定するものではない。固体撮像システム1B-1は、例えば、1台の固体撮像装置と、複数台の情報処理装置とから構成されていてもよい。また、固体撮像システム1B-1は、例えば、複数台の固体撮像装置と、1台の情報処理装置とから構成されていてもよい。
(3.第3実施形態)
[3-1.第3実施形態に係る固体撮像システムの構成]
図14と、図15とを用いて、本開示の第3実施形態に係る固体撮像システムの構成について説明する。図14は、本開示の第3実施形態に係る固体撮像システムの構成の一例を示すブロック図である。図15は、本開示の第3実施形態に係る固体撮像システムの接続関係を説明するための図である。
図14に示すように、固体撮像システム1Cは、固体撮像装置100と、情報処理装置200Bと、バッテリ400とを含む。固体撮像装置100の構成要素は、第1実施形態に係る固体撮像システム1の固体撮像装置100と同様なので説明を省略する。
図15に示すように、情報処理装置200Bは、固体撮像装置100の内部に配置されている。固体撮像装置100と、情報処理装置200Bとは、SoC、MCM、SIP、SOPなどで実装されている。また、固体撮像システム1Cには、バッテリ400が接続されている。バッテリ400は、固体撮像システム1Cに電力を供給する。固体撮像システム1Cは、例えば、IoT(Internet of Things)カメラに適用することができる。
再び図14を参照する。情報処理装置200Bは、制御部230を備える。第3実施形態では、評価部150は、例えば、評価情報を制御部230に直接出力する。
制御部230は、例えば、評価部150から評価情報を受ける。制御部230は、例えば、バッテリ400と接続されており、バッテリ400の電力残量を測定する。この場合、制御部230は、例えば、評価情報と、バッテリ400の電力残量に基づいて、DNNモデルを変更するための制御情報を生成する。具体的には、バッテリ400の電力残量が少なくなってきた場合には、制御部230は、DNNモデルを消費電力の少ないDNNモデルに変更するための制御情報を生成する。そして、制御部230は、生成した制御情報を、DNN制御部160に直接入力する。これにより、DNN制御部160は、DNN処理部130を制御して、バッテリ400の電力残量に応じたDNNモデルに変更することができる。
(4.ハードウェア構成)
上述してきた各実施形態に係る固体撮像装置及び情報処理装置は、例えば、図16に示すような構成のコンピュータ1000によって実現される。以下、第1の実施形態に係る固体撮像装置100を例に挙げて説明する。図16は、固体撮像装置100の機能を実現するコンピュータ1000の一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス1500、及び入出力インターフェイス1600を有する。コンピュータ1000の各部は、バス1050によって接続される。
CPU1100は、ROM1300又はHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。例えば、CPU1100は、ROM1300又はHDD1400に格納されたプログラムをRAM1200に展開し、各種プログラムに対応した処理を実行する。
ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるBIOS(Basic Input Output System)等のブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を非一時的に記録する、コンピュータが読み取り可能な記録媒体である。具体的には、HDD1400は、プログラムデータ1450の一例である本開示に係るプログラムを記録する記録媒体である。
通信インターフェイス1500は、コンピュータ1000が外部ネットワーク1550(例えばインターネット)と接続するためのインターフェイスである。例えば、CPU1100は、通信インターフェイス1500を介して、他の機器からデータを受信したり、CPU1100が生成したデータを他の機器へ送信したりする。
入出力インターフェイス1600は、入出力デバイス1650とコンピュータ1000とを接続するためのインターフェイスである。例えば、CPU1100は、入出力インターフェイス1600を介して、キーボードやマウス等の入力デバイスからデータを受信する。また、CPU1100は、入出力インターフェイス1600を介して、ディスプレイやスピーカーやプリンタ等の出力デバイスにデータを送信する。また、入出力インターフェイス1600は、所定の記録媒体(メディア)に記録されたプログラム等を読み取るメディアインターフェイスとして機能してもよい。メディアとは、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
例えば、コンピュータ1000が第1の実施形態に係る固体撮像装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、固体撮像装置100を構成する各部の機能を実現する。また、HDD1400には、本開示に係るログラムが格納される。なお、CPU1100は、プログラムデータ1450をHDD1400から読み取って実行するが、他の例として、外部ネットワーク1550を介して、他の装置からこれらのプログラムを取得してもよい。
なお、本明細書に記載された効果はあくまで例示であって限定されるものでは無く、また他の効果があってもよい。
なお、本技術は以下のような構成も取ることができる。
(1)
DNNモデルに基づいて入力画像に対しDNNを実行するDNN処理部と、
前記DNNの実行結果の評価情報に基づいて生成された制御情報を受け、前記制御情報に基づいて前記DNNモデルを変更するDNN制御部と、
を備える固体撮像装置。
(2)
前記DNN制御部は、前記制御情報に基づいて、前記DNNモデルのパラメータを変更する、
前記(1)に記載の固体撮像装置。
(3)
前記DNN制御部は、少なくとも、前記DNNモデルの入力画像サイズ及びフィルタサイズのいずれか一方を変更する、
前記(2)に記載の固体撮像装置。
(4)
前記DNN処理部が実行する前記DNNモデルを少なくとも1つ記憶している記憶部をさらに備える、
前記(1)~(3)のいずれか1つに記載の固体撮像装置。
(5)
前記記憶部は、前記DNN処理部の学習用データを記憶している、
前記(4)に記載の固体撮像装置。
(6)
前記DNN制御部は、前記制御情報に基づいて、実行した前記DNNモデルを前記記憶部が記憶している前記DNNモデルに切り替える、
前記(4)または(5)に記載の固体撮像装置。
(7)
前記DNNの実行結果を評価して評価情報を生成する評価部をさらに備える、
前記(1)~(6)のいずれか1つに記載の固体撮像装置。
(8)
前記評価部は、前記DNN処理部の推論時及び学習時の処理状況を評価して前記評価情報を生成する、
前記(7)に記載の固体撮像装置。
(9)
前記評価部は、前記DNNの認識結果と、前記評価情報とに基づいて正解データを生成する、
前記(7)または(8)に記載の固体撮像装置。
(10)
前記DNN制御部は、前記正解データに基づいて、前記DNNモデルを変更する、
前記(9)に記載の固体撮像装置。
(11)
前記評価情報は、前記DNNの認識結果に関する情報を含む、
前記(1)~(10)のいずれか1つに記載の固体撮像装置。
(12)
外部装置で実行されたDNNモデルの実行結果の評価情報に基づいて、前記DNNモデルを変更するための制御情報を生成する制御部を備える、
情報処理装置。
(13)
前記制御部は、前記外部装置に記憶されている前記DNNモデルに関する情報を取得する、
前記(12)に記載の情報処理装置。
(14)
固体撮像装置と、情報処理装置とを含み、
前記固体撮像装置は、
DNNモデルに基づいて入力画像に対しDNNを実行するDNN処理部と、
前記DNNの実行結果の評価情報に基づいて生成された制御情報を受け、前記制御情報に基づいて前記DNNモデルを変更するDNN制御部と、を備え、
前記情報処理装置は、
前記DNNモデルの実行結果に基づいて、前記DNNモデルを変更するための制御情報を生成する制御部を備える、
情報処理システム。
(15)
DNNモデルに基づいて入力画像に対しDNNを実行し、
前記DNNの実行結果の評価情報に基づいて生成された制御情報を受け、前記制御情報に基づいて前記DNNモデルを変更する、
情報処理方法。
(16)
DNNモデルの実行結果の評価情報に基づいて、前記DNNモデルを変更するための制御情報を生成する、
情報処理方法。
(17)
コンピュータを、
DNNモデルに基づいて入力画像に対しDNNを実行するDNN処理部と、
前記DNNの実行結果の評価情報に基づいて生成された制御情報を受け、前記制御情報に基づいて前記DNNモデルを変更するDNN制御部と、
して機能させるためのプログラム。
(18)
コンピュータを、
DNNモデルの実行結果の評価情報に基づいて、前記DNNモデルを変更するための制御情報を生成する制御部として機能させるためのプログラム。