(57)【要約】【課題】ニューラルネットワークの演算を行うための回路の規模を抑制した固体撮像装置及び電子機器を提供する。【解決手段】本開示の一側面の固体撮像装置は、画素アレイ部と、処理部とを備える。画素アレイ部は、光量に対して対数特性の電気信号を第１画素信号として生成する複数の第１画素を有する。前記処理部は、前記画素アレイ部から読み出された複数の前記第１画素信号に基づく複数の第１入力データと、複数の第１ノード間の結合の強さを対数で表した複数の対数重み係数とに基づいて、第１ニューラルネットワークの演算処理を行う。【選択図】図１
2020188386.tif 000002
【特許請求の範囲】
【請求項１】
光量に対して対数特性の電気信号を第１画素信号として生成する複数の第１画素を有する画素アレイ部と、
前記画素アレイ部から読み出された複数の前記第１画素信号に基づく複数の第１入力データと、複数の第１ノード間の結合の強さを対数で表した複数の対数重み係数とに基づいて、第１ニューラルネットワークの演算処理を行う処理部と、
を備えた固体撮像装置。
【請求項２】
前記第１画素信号は電圧値を表し、前記電圧値は、所定値を底とする電流値の対数に比例する関係にあり、
前記処理部は、前記第１画素信号の値に、前記所定値を真数に含む対数を乗じることにより、前記第１入力データを生成する
請求項１に記載の固体撮像装置。
【請求項３】
前記所定値はネイピア数である
請求項２に記載の固体撮像装置。
【請求項４】
前記所定値を真数に含む前記対数の底は２である
請求項２に記載の固体撮像装置。
【請求項５】
制御部を備え、
前記画素アレイ部は、前記複数の第１画素と異なる種類の複数の第２画素を有し、
前記制御部は、前記複数の第１画素から前記第１画素信号を読み出す第１読出処理と、前記複数の第２画素から複数の第２画素信号を読み出す第２読出処理とを選択的に実行し、
前記処理部は、前記第１読出処理が実行された場合に、前記第１ニューラルネットワークの前記演算処理を行い、
前記処理部は、前記第２読出処理が実行された場合に、複数の前記第２画素信号に基づく複数の第２入力データと、複数の第２ノード間の結合の強さを表す重み係数とに基づいて、第２ニューラルネットワークの演算処理を行う
請求項１に記載の固体撮像装置。
【請求項６】
前記制御部は、前記第１読出処理及び前記第２読出処理のいずれかを指示する指示データに従って、前記第１読出処理及び前記第２読出処理のいずれかを選択する
請求項５に記載の固体撮像装置。
【請求項７】
前記第２画素は、光量に対して線形特性の電気信号を前記第２画素信号として生成する画素である
請求項５に記載の固体撮像装置。
【請求項８】
前記第２画素は、入射されるフォトン数のカウント値を前記第２画素信号として生成する画素である
請求項５に記載の固体撮像装置。
【請求項９】
前記第２画素は、照射した光の反射光の前記光との位相差を表す電荷量を前記第２画素信号として生成する画素である
請求項５に記載の固体撮像装置。
【請求項１０】
制御部を備え、
前記第１画素は、光電変換部と、前記光電変換部から対数特性の電気信号を前記第１画素信号として読み出す第１読出部と、前記光電変換部から線形特性の電気信号を第２画素信号として読み出す第２読出部とを含み、
前記制御部は、前記第１読出部を用いて前記第１画素信号を読み出す第１読出処理と、前記第２読出部を用いて前記第２画素信号を読み出す第２読出処理とを選択的に実行し、
前記処理部は、前記第１読出処理が実行された場合に、前記第１ニューラルネットワークの前記演算処理を行い、
前記処理部は、前記第２読出処理が実行された場合に、複数の前記第２画素信号に基づく複数の第２入力データと、複数の第２ノード間の結合の強さを表す重み係数とに基づいて、第２ニューラルネットワークの演算処理を行う
請求項１に記載の固体撮像装置。
【請求項１１】
前記処理部は、前記第１ニューラルネットワークの前記演算処理により、複数の前記第１画素信号が表す画像の画像認識を行う
請求項１に記載の固体撮像装置。
【請求項１２】
光量に対して対数特性の電気信号を第１画素信号として生成する複数の第１画素を有する画素アレイ部を含む撮像素子と、
前記画素アレイ部から読み出された複数の前記第１画素信号に基づく複数の第１入力データと、複数の第１ノード間の結合の強さを対数で表した複数の対数重み係数とに基づいて、第１ニューラルネットワークの演算処理を行う処理回路と、
を備えた電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、固体撮像装置及び電子機器に関する。
【背景技術】
【０００２】
近年、機械学習の一種としてニューラルネットワークを用いたデータ学習法が広く用いられている。ニューラルネットワークは様々な分野で用いられており、カメラ等の撮像装置で撮像された画像データの画像認識の用途にも用いられている。
【０００３】
ニューラルネットワークを画像認識に用いる場合、入力層のノード（入力ノード）には、画像認識の対象となるデータを与える。入力層の次段の中間層のノード（中間ノード）では、各入力ノードから入力されたデータと、各入力ノードとの結合の強さを表す重み係数とに基づき、演算を行う。すなわち、入力データと重み係数との重み付け合計を計算する。この計算では積和演算が行われるため、演算量が多くなる。また積和演算のために乗算回路を用いると、回路規模が大きくなる問題もある。このことは、当該中間層より後段の各層のノードでも同様である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Daisuke Miyashita, Edward H. Lee, and Boris Murmann, “Convolutional neural networks using logarithmic data representation,” CoRR, vol. abs/1603.01025,2016
【非特許文献２】D.Kim, ”An Enhanced Dynamic-Range CMOS Image Sensor Using a Digital Logarithmic Single-Slope ADC” IEEE Transactions on circuit and systems 2012
【非特許文献３】Alex Omid-Zohoor”Toward Always-On Mobile Object Detection:Energy Versus Performance Tradeoffs for Embedded HOG Feature Extraction” IEEE Transactions on circuit and systems for video technology 2018
【発明の概要】
【発明が解決しようとする課題】
【０００５】
そこで、入力ノードに与えるデータ、及び各ノード間の重み係数を、底を２とする対数に変換（ｌｏｇ２変換）する手法がある（非特許文献１参照）。この手法によれば、各ノードでの演算を対数領域の加算で行うことができるため、各ノードでの乗算演算を不要にできる。すなわち、乗算回路が不要となる。しかしながら、入力ノードに与えるデータをｌｏｇ２変換するための回路が新たに必要になる。これは回路規模の増大又は消費電力の増加につながる。
【０００６】
本開示は、ニューラルネットワークの演算を行うための回路の規模を抑制した固体撮像装置及び電子機器を提供する。
【課題を解決するための手段】
【０００７】
本開示の一側面の固体撮像装置は、画素アレイ部と、処理部とを備える。画素アレイ部は、光量に対して対数特性の電気信号を第１画素信号として生成する複数の第１画素を有する。前記処理部は、前記画素アレイ部から読み出された複数の前記第１画素信号に基づく複数の第１入力データと、複数の第１ノード間の結合の強さを対数で表した複数の対数重み係数とに基づいて、第１ニューラルネットワークの演算処理を行う。
【０００８】
前記第１画素信号は電圧値を表し、前記電圧値は、所定値を底とする電流値の対数に比例する関係にあり、前記処理部は、前記第１画素信号の値に、前記所定値を真数に含む対数を乗じることにより、前記第１入力データを生成してもよい。
【０００９】
前記所定値はネイピア数でもよい。
【００１０】
前記所定値を真数に含む前記対数の底は２でもよい。
【００１１】
前記固体撮像装置は制御部を備え、前記画素アレイ部は、前記複数の第１画素と異なる種類の複数の第２画素を有し、前記制御部は、前記複数の第１画素から前記第１画素信号を読み出す第１読出処理と、前記複数の第２画素から複数の第２画素信号を読み出す第２読出処理とを選択的に実行し、前記処理部は、前記第１読出処理が実行された場合に、前記第１ニューラルネットワークの前記演算処理を行い、前記処理部は、前記第２読出処理が実行された場合に、複数の前記第２画素信号に基づく複数の第２入力データと、複数の第２ノード間の結合の強さを表す重み係数とに基づいて、第２ニューラルネットワークの演算処理を行う。
【００１２】
前記制御部は、前記第１読出処理及び前記第２読出処理のいずれかを指示する指示データに従って、前記第１読出処理及び前記第２読出処理のいずれかを選択してもよい。
【００１３】
前記第２画素は、光量に対して線形特性の電気信号を前記第２画素信号として生成する画素でもよい。
【００１４】
前記第２画素は、入射されるフォトン数のカウント値を前記第２画素信号として生成する画素でもよい。
【００１５】
前記第２画素は、照射した光の反射光の前記光との位相差を表す電荷量を前記第２画素信号として生成する画素でもよい。
【００１６】
前記固体撮像装置は制御部を備え、前記第１画素は、光電変換部と、前記光電変換部から対数特性の電気信号を前記第１画素信号として読み出す第１読出部と、前記光電変換部から線形特性の電気信号を第２画素信号として読み出す第２読出部とを含み、前記制御部は、前記第１読出部を用いて前記第１画素信号を読み出す第１読出処理と、前記第２読出部を用いて前記第２画素信号を読み出す第２読出処理とを選択的に実行し、前記処理部は、前記第１読出処理が実行された場合に、前記第１ニューラルネットワークの前記演算処理を行い、前記処理部は、前記第２読出処理が実行された場合に、複数の前記第２画素信号に基づく複数の第２入力データと、複数の第２ノード間の結合の強さを表す重み係数とに基づいて、第２ニューラルネットワークの演算処理を行ってもよい。
【００１７】
前記処理部は、前記第１ニューラルネットワークの前記演算処理により、複数の前記第１画素信号が表す画像の画像認識を行ってもよい。
【００１８】
本開示の一側面の電子機器は、光量に対して対数特性の電気信号を第１画素信号として生成する複数の第１画素を有する画素アレイ部を含む撮像素子と、前記画素アレイ部から読み出された複数の前記第１画素信号に基づく複数の第１入力データと、複数の第１ノード間の結合の強さを対数で表した複数の対数重み係数とに基づいて、第１ニューラルネットワークの演算処理を行う処理回路とを備える。
【図面の簡単な説明】
【００１９】
【図１】本開示の第１の実施形態に係る固体撮像装置の構成例を示すブロック図。
【図２】対数画素の特性を模式的に表したグラフを示す図。
【図３】対数画素の回路構成の一例を示す図。
【図４】ニューラルネットワークの典型的な構造の例を模式的に示す図。
【図５】ノードにおける演算処理の例を説明するための図。
【図６】ｌｏｇ２加算回路の一例のブロック図。
【図７】本開示の第１の実施形態に係る固体撮像装置の動作の一例のフローチャート。
【図８】対数画素の回路構成の変形例を示す図。
【図９】対数画素の回路構成の他の変形例を示す図。
【図１０】減算器及び量子化器の回路構成の一例を示す図。
【図１１】本開示の第２の実施形態に係る固体撮像装置の構成例を示すブロック図。
【図１２】線形画素の特性を模式的に表したグラフを示す図。
【図１３】線形画素の回路構成の一例を示す図。
【図１４】本開示の第２の実施形態に係る固体撮像装置の動作の一例のフローチャート。
【図１５】図１４に続く動作の一例のフローチャート。
【図１６】第３の実施形態の固体撮像装置の構成例を示すブロック図。
【図１７】ハイブリッド画素の回路構成の一例を示す図。
【図１８】ハイブリッド画素の回路構成の変形例を示す図。
【図１９】ハイブリッド画素の回路構成の変形例を示す図。
【図２０】第３の実施形態に係る固体撮像装置の動作の変形例のフローチャート。
【図２１】第３の実施形態に係る固体撮像装置の動作の他の変形例のフローチャート。
【図２２】本開示に係る電子機器の構成の一例を示すブロック図。
【発明を実施するための形態】
【００２０】
以下、図面を参照して、本開示の実施形態について説明する。本開示において示される１以上の実施形態において、各実施形態が含む要素を互いに組み合わせることができ、かつ、当該組み合わせられた結果物も本開示が示す実施形態の一部をなす。
【００２１】
図１は、本開示の第１の実施形態に係る固体撮像装置の構成例を示すブロック図である。図１の固体撮像装置は、撮像素子１０、信号処理部１６、ＣＰＵ（Central Processing Unit）１７、データ記憶部１８、演算処理部１９及びバス２０を備えている。撮像素子１０は、複数の画素２１を有する画素アレイ部１１と、垂直駆動部１２と、カラム処理部１３と、水平駆動部１４と、制御部１５とを備えている。ＣＰＵ１７と演算処理部１９とにより処理部２６が構成される。
【００２２】
図１の固体撮像装置は、例えばＣＭＯＳ（Complementary Metal Oxide Semiconductor）型の固体撮像装置であり、様々な電子機器に用いることができる。電子機器の例は、スマートフォン、タブレット又は携帯電話などの撮像機能を有する移動体装置、デジタルスチルカメラやビデオカメラ等の撮像機器、監視カメラ又は車載カメラなどを含む。
【００２３】
撮像素子１０の構造は、画素アレイ部１１と論理回路（垂直駆動部１２、カラム処理部１３、水平駆動部１４及び制御部１５）とを同一の支持基板上に配置し、基板の裏面から照射する裏面照射型でもよい。または、撮像素子１０の構造は、画素アレイ部１１と論理回路とを別々に製造して、積層する積層型でもよい。この場合、積層された各層は、ビアなどの接続部を介して電気的に接続される。ビアの他、Ｃｕ−Ｃｕ接合やバンプにより接続することもできる。また、撮像素子の構造は、画素アレイ部１１、垂直駆動部１２、カラム処理部１３、水平駆動部１４、制御部１５、信号処理部１６、ＣＰＵ１７、データ記憶部１８、演算処理部１９及びバス２０を備える積層型でもよい。
【００２４】
画素アレイ部１１は、２次元状（行列状）に配置された複数の画素２１を含む。複数の画素２１が配置された領域は、画素領域に対応する。画素２１は、フォトダイオード（ＰＤ：Photodiode）を含む光電変換部と、複数の画素トランジスタとを含む。フォトダイオードは、入射光を光電変換により電気信号（信号電荷）に変換する素子である。複数の画素トランジスタは、一例としてＭＯＳ（Metal Oxide Semiconductor）トランジスタである。
【００２５】
画素２１の光電変換部は、光学レンズ（図示せず）を介して光を受光し、入射光の光量に対して対数的に変化する電気信号を画素信号として生成する。生成された電気信号（画素信号）は、画素２１の出力電圧を表す電圧信号である。画素２１では、フォトダイオードで発生する電圧に対して電流が指数的に流れるため、電圧と電流とが対数関係となって、対数の電圧信号が出力される。このように、入射光の光量に対して対数特性の電圧信号を画素信号として生成する画素２１を対数画素と呼ぶ。以下では画素２１のことを、対数画素２１と呼ぶ場合がある。対数画素２１は、第１画素の一例に対応し、対数画素２１から読み出される画素信号は、第１画素から読み出される第１画素信号に対応する。対数画素は、光量に対して出力信号が線形に増大する線形特性の画素（線形画素と呼ぶ）に比べてノイズが多いものの、ダイナミックレンジが広いという特性を有している。
【００２６】
図２に、対数画素への入射光の光量と、出力電圧との関係を模式的に表したグラフを示す。入射光の光量が増大するに応じて、出力電圧が、対数的に増加している。
【００２７】
対数画素の電流をｉ、電圧をｖとすると、ｉとｖの関係は、一例として、以下の自然対数の式で近似できる。Ａは予め決められた係数である。対数をｌｏｇａｂと表したとき、ａを底、ｂを真数と呼ぶ。式（１）の右辺に、定数項が含まれてもよい。ここでは自然対数で近似しているが、ネイピア数（ｅ）以外の所定値を底とする対数で近似してもよい。
【数１】
2020188386.tif 000003
【００２８】
図３は、対数画素２１の回路構成の一例を示す。ここでは例示として、１つの対数画素２１の構成を示すが、他の対数画素２１も同様の構成を有する。
【００２９】
対数画素２１は、光電変換部に対応するフォトダイオード３１と、複数の画素トランジスタとを含む。複数の画素トランジスタは、出力トランジスタ３２、増幅トランジスタ３３、バイアストランジスタ３４、増幅トランジスタ３５、及び選択トランジスタ３６である。出力トランジスタ３２、増幅トランジスタ３３、増幅トランジスタ３５及び選択トランジスタ３６は、一例としてＮ型トランジスタにより構成される。バイアストランジスタ３４は、一例としてＰ型トランジスタにより構成される。但し、これらの画素トランジスタの導電型が、ここで例示したものと反対であってもよい。この場合、これらの画素トランジスタの制御信号の論理及び電源線の電圧を変更する必要がある。
【００３０】
出力トランジスタ３２のドレイン端子は電源電圧に接続され、ソース端子はフォトダイオード３１のカソード端子に接続されている。フォトダイオード３１のアノード端子は基準電圧に接続されている。基準電圧は、例えばグランド電圧である。またフォトダイオード３１のカソード端子は、増幅トランジスタ３３のゲート端子に接続されている。フォトダイオード３１と増幅トランジスタ３３の接続ノードＮ１は、出力トランジスタ３２のソース端子に接続されている。
【００３１】
バイアストランジスタ３４と増幅トランジスタ３３は、電源電圧と基準電圧との間において、直列に接続されている。また、バイアストランジスタ３４と増幅トランジスタ３３の接続ノードＮ２は、出力トランジスタ３２のゲート端子と、増幅トランジスタ３５のゲート端子とに接続されている。出力トランジスタ３２と増幅トランジスタ３３は、接続ノードＮ２及び接続ノードＮ１を介して、ループ状に接続されている。
【００３２】
バイアストランジスタ３４のゲート端子にはバイアス電圧Ｖｂｉａｓ１が印加されている。
【００３３】
増幅トランジスタ３５のドレイン端子は電源電圧に接続されており、ソース端子は選択トランジスタ３６のドレイン端子に接続されている。選択トランジスタ３６のソース端子は垂直信号線２３に接続されている。選択トランジスタ３６のゲート端子は画素駆動線２２に接続されており、選択トランジスタ３６は、垂直駆動部１２が供給する選択信号ＳＥＬにより制御される。
【００３４】
フォトダイオード３１は、入射光の光量に対して線形に変化する電流ｉを出力する。この電流ｉに応じた電圧が増幅トランジスタ３３のゲート端子に印加される。出力トランジスタ３２及び増幅トランジスタ３３はそれぞれソースフォロワとしてサブスレッショルド領域で動作する。ループ状に接続された出力トランジスタ３２及び増幅トランジスタ３３により、接続ノードＮ１の電圧が、増幅トランジスタ３３を介して、出力トランジスタ３２のゲート端子にフィードバックされる。これにより、電流ｉの対数の電圧信号が接続ノードＮ２に生成され、生成された電圧信号がバッファ回路４０を介して増幅トランジスタ３５に与えられる。この電圧信号が増幅トランジスタ３５により増幅される。増幅された電圧信号は、選択トランジスタ３６を介して、垂直信号線２３に出力される。このように、入射光の光量に対して対数的に変化する電圧信号が、画素信号として出力される。
【００３５】
図３に示した対数画素の構成は一例であり、対数画素の構成は図３の構成に限定されない。光電流の対数に応じて変化する電圧信号を検出可能である限り、どのような構成でもかまわない。また、図３の構成に特定の機能を有する回路を追加してもよい。例えば輝度変化を検出するセンサ回路を、接続ノードＮ２に、増幅トランジスタ３５と並列に接続してもよい。
【００３６】
図１の垂直駆動部１２は、画素アレイ部１１の画素駆動線２２を垂直方向に順次選択し、選択された画素駆動線２２に共通に接続されている複数の画素２１を駆動するためのパルス（駆動信号）を供給する。例えば、垂直駆動部１２は、画素アレイ部１１の画素２１を行単位で順次垂直方向に選択し、選択した行の画素駆動線２２に選択信号ＳＥＬや後述するリセット信号ＲＳＴなどの駆動信号を供給する。これにより、各画素２１において生成された画素信号が、垂直信号線２３を介して、カラム処理部１３に供給される。垂直駆動部１２は、例えばシフトレジスタなどの回路により構成される。
【００３７】
カラム処理部１３は、１行分の画素２１から出力される信号の信号処理を、画素列ごとに行う。カラム処理部１３は、各画素列に対応する単位回路を備える。各画素列に対応する単位回路が、１行分の画素２１のうち対応する画素から出力される信号を受け取り、信号の信号処理を行う。信号処理の例は、ＡＤ（Analog to Digital）変換を含み、さらにＡＤ変換前のノイズ除去及び信号増幅を含んでもよい。
【００３８】
水平駆動部１４は、水平走査パルスを順次出力することによって、カラム処理部１３における単位回路を順番に選択する。これによりカラム処理部１３における単位回路の各々から画素信号が順番に信号処理部１６に出力される。水平駆動部１４は、例えばシフトレジスタなどの回路により構成される。
【００３９】
制御部１５は、固体撮像装置の各部の動作を制御する回路である。例えば制御部１５は、垂直同期信号、水平同期信号、及びマスタクロックに基づいて、垂直駆動部１２、カラム処理部１３、水平駆動部１４等の動作の基準となる種々の信号、例えばクロック信号や制御信号を生成する。制御部１５は、生成した信号を、垂直駆動部１２、カラム処理部１３、及び水平駆動部１４等に出力する。
【００４０】
信号処理部１６は、カラム処理部１３から供給される画素信号に対して種々の信号処理を行う。信号処理は、画素信号をバッファリングするだけの場合もある。その他、信号処理の例は、黒レベル調整、列ばらつき補正、又は各種デジタル信号処理を含む。信号処理部１６は、一例としてＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）、又はＣＰＵなどの回路で構成される。信号処理部１６は、バス２０に接続されている。
【００４１】
ＣＰＵ１７はバス２０に接続されており、信号処理部１６、データ記憶部１８及び演算処理部１９を制御する。ＣＰＵ１７は、信号処理部１６で処理された画素信号のデータを画素データとして、データ記憶部１８に書き込む制御を行う。
【００４２】
データ記憶部１８は、信号処理部１６で処理された画素データを内部に記憶する。各画素２１に対応する画素データがデータ記憶部１８に格納されることで、１フレーム分の画像データがデータ記憶部１８に格納される。画素データは、所定のビット長のデジタル値であり、ビット長はＡＤ変換の設定分解能に応じて決まる。固体撮像装置で一定の周期で撮像が行われる場合、一定の周期で画像データが取得され、データ記憶部１８に格納される。
【００４３】
データ記憶部１８は、一例として、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）、ＮＡＮＤ型フラッシュメモリ又は磁気抵抗メモリなど、任意の揮発性又は不揮発性のメモリデバイスで構成される。あるいは、データ記憶部１８は、レジスタやデジタル回路など、メモリデバイス以外の記憶媒体で構成されてもよい。データ記憶部１８はバス２０に接続されている。
【００４４】
演算処理部１９は、ＣＰＵ１７の制御の下、データ記憶部１８に格納されている１フレーム分の画像データを入力として、ニューラルネットワークの演算処理を行うことで、画像データの画像認識を行う。すなわち、演算処理部１９は、各画素２１から読み出された画像信号に基づく画像の画像認識を行う。画像認識の例として、画像データ内に所定のオブジェクトが写っているか否かがある。例えば、人の顔が写っているか否かがある。また、画像データ内に写っているオブジェクトの種類を、複数の候補の中から予測することがある。例えば、オブジェクトが、人間か、人間以外の動物か、物かを予測することがある。候補の数はこの例では３だが、２でも、４以上でもよい。画像認識の例は、画像データに基づいて行うことができる限り、これら以外のものでもよい。演算処理部１９は、画像認識の結果を表すデータを、データ記憶部１８に格納する。データ記憶部１８は、演算処理部１９により算出された画像認識の結果を表すデータを記憶する。
【００４５】
演算処理部１９は、一例としてＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）、又はＣＰＵなどの回路により構成される。演算処理部１９は、データを格納するための内部バッファを備えていてもよい。内部バッファはレジスタ、メモリ又はデジタル回路など、任意の回路で構成される。メモリは、揮発性メモリでも、不揮発性メモリでもよい。
【００４６】
演算処理部１９が行う処理の一部をＣＰＵ１７が実行してもよい。
【００４７】
データ記憶部１８は、演算処理部１９がニューラルネットワークの演算処理に用いるニューラルネットワークのパラメータを記憶している。パラメータは、学習済みのニューラルネットワークのノード間の結合（リンク）の強さを表す重み係数を、底を２とする対数に変換した値である。以下、変換した重み係数を、対数重み係数、又はｌｏｇ２重み係数と呼ぶことがある。対数重み係数は、複数のノード間の結合の強さを対数で表したものである。本実施形態ではニューラルネットワークの演算処理において、学習された重み係数の代わりに、対数重み係数を用いる。データ記憶部１８は、対数重み係数を記憶する形態として、ニューラルネットワークの各ノード間のリンクを表す識別子と、対数重み係数とを対応づけた情報を記憶している。この情報は、例えばテーブルでもよいし、与えられた識別子に応じて対数重み係数を返す関数でもよい。
【００４８】
データ記憶部１８に記憶されているとして説明したデータの全部又は一部を、演算処理部１９の内部バッファに格納してもよい。例えば、上述のパラメータを演算処理部１９の内部バッファに格納してもよい。なお、データ記憶部１８は、学習された重み係数を記憶していてもよい。
【００４９】
図４は、ニューラルネットワークの典型的な構造の例を模式的に示す図である。本実施形態ではニューラルネットワークとして各層間で全てのノードが相互結合された全結合型の階層型ニューラルネットワークの例を示すが、畳み込み型ニューラルネットワーク又は相互結合型ニューラルネットワークなど、他の型のニューラルネットワークを用いてもよい。
【００５０】
以下では図４に基づき、まず、一般的なニューラルネットワークについて説明する。ニューラルネットワークは、入力層４１、中間層（隠れ層）４２、及び出力層４３を備えている。ここでは中間層４２が１つの例を示しているが、中間層が複数存在してもよい。複数の中間層が存在する場合、入力層４１に近い側から順に、１段目の中間層、２段目の中間層、・・・、最終段の中間層と呼ぶ。一般に、中間層の個数が多いほど、識別の精度が向上する。
【００５１】
入力層４１は、複数（ｑ個）の入力ユニットＡ１〜Ａｑを有する。中間層４２は、複数（ｊ個）の演算ユニットＢ１〜Ｂｊを有する。出力層４３は、複数（ｎ個）の演算ユニットＣ１〜Ｃｎを有する。以下、入力ユニットＡ１〜Ａｑのことを入力ノードＡ１〜Ａｑと呼び、中間層の演算ユニットＢ１〜Ｂｊのことを中間ノードＢ１〜Ｂｊと呼び、出力層の演算ユニットのことを出力ノードＣ１〜Ｃｎと呼ぶ。
【００５２】
中間層４２の各中間ノードは、入力層４１の複数の入力ノードＡ１〜Ａｑの全てとリンクで結合されている。一般的なニューラルネットワークでは、各リンクには、学習された重み係数が設定される。出力層４３の各出力ノードは、中間層４２の複数の中間ノードＢ１〜Ｂｊの全てとリンクで結合されている。各リンクには、学習された重み係数が設定される。
【００５３】
一般的なニューラルネットワークの演算処理を説明する。入力ノードＡ１〜Ａｑには入力データが与えられる。入力データは、画像データの各画素データであるとする。一例として入力ノードの個数は、画像データの入力の画素数と同数であり、各画素の画素データが入力ノードに与えられる。各入力ノードは、与えられた入力データを、中間ノードＢ１〜Ｂｊに出力する。各中間ノードは、入力ノードＡ１〜Ａｑから入力されたデータに、入力ノードＡ１〜Ａｑに対する重み係数を乗算し、乗算結果を総和する。すなわち、入力されたデータと重み係数との積和演算（重み付け合計）を行う。積和演算の結果を活性化関数の入力変数とし、活性化関数を計算する。各中間ノードは、活性化関数の出力値を、出力ノードＣ１〜Ｃｎに出力する。
【００５４】
例えば、中間ノードＢ１と、入力ノードＡ１〜Ａｑとの間の重み係数を、ｗ１〜ｗｑとし、入力ノードＡ１〜Ａｑから中間ノードＢ１に入力されるデータをｄ１〜ｄｑとする。このとき、中間ノードＢ１における積和演算値（ＸＢ１）、及び活性化関数の出力値（ＹＢ１）は、以下の式で表される。
【数２】
2020188386.tif 000004
【００５５】
関数ｆは、活性化関数を表している。Σは、重み係数ｗ１〜ｗｑと、入力データｄ１〜ｄｑとの積和演算（重み付け合計）を表している。ここでは中間ノードＢ１の演算例を示したが、中間ノードＢ２〜Ｂｊでも同様の演算が行われる。中間ノードＢ１〜Ｂｊの出力値は、出力ノードＣ１〜Ｃｍに入力されるデータとなる。
【００５６】
活性化関数は、例えば、ＲｅＬＵ関数又はステップ関数など、任意の非線形関数が用いられる。但し、線形関数を用いることも排除されない。
【００５７】
ＲｅＬＵ関数は、入力変数が０以下であれば０を出力し、０を超えていれば入力変数の値をそのまま出力する関数である。ＲｅＬＵ関数をＲｅＬｕ（ｘ）、入力変数をｘとすると、ＲｅＬｕ（ｘ）は、以下のように定義される。
【数３】
2020188386.tif 000005
【００５８】
ステップ関数は、入力変数が０以下であれば０を出力し、０を超えていれば１を出力する関数である。ステップ関数をＳｔｅｐ（ｘ）、入力変数をｘとすると、Ｓｔｅｐ（ｘ）は、以下のように定義される。
【数４】
2020188386.tif 000006
【００５９】
中間層における各中間ノードの活性化関数は同じであるとするが、中間ノードによって活性化関数が異なっていてもよい。
【００６０】
各出力ノードの演算は、中間ノードの演算と同様である。より詳細には、各出力ノードは、中間ノードＢ１〜Ｂｊから入力されたデータに、中間ノードＢ１〜Ｂｊに対する重み係数を乗算し、乗算結果を総和する。すなわち、入力されたデータと重み係数との積和演算（重み付け合計）を行う。積和演算の結果を活性化関数の入力変数とし、活性化関数を計算する。各出力ノードにおける活性化関数の出力値が、各出力ノードの出力となる。
【００６１】
出力層の各出力ノードの活性化関数は同じであるとするが、出力ノードによって活性化関数が異なってもよい。また出力層の活性化関数は、中間層の活性化関数と異なっていても、同じであってもよい。
【００６２】
演算処理部１９は、各出力ノードの出力値に基づき、判定処理を行い、判定処理の結果を、画像認識の結果として出力する。
【００６３】
一例として、各出力ノードにクラスが割り当てられており、最も大きい出力値を出力した出力ノードのクラスを識別結果とする。例えば２つの出力ノードが存在し、一方の出力ノード（第１出力ノード）に割り当てられた第１クラスが画像に人の顔が写っていることを表すクラスであるとする。そして、他方の出力ノード（第２出力ノード）に割り当てられた第２クラスが画像に人の顔が写っていないことを表すクラスであるとする。この場合、第１出力ノードの出力値が第２出力ノードの出力値より大きければ、第１クラスを示す信号を出力する。すなわち、ニューラルネットワークに入力として与えられた画像データに人の顔が写っていると判定する。第２出力ノードの出力値が第１出力ノードの出力値より大きければ、第２クラスを示す信号を出力する。すなわち、ニューラルネットワークに入力として与えられた画像データに人の顔は写っていないと判定する。
【００６４】
上述の各出力ノードの出力値に基づく判定処理は一例であり、他の判定処理も可能である。例えば各出力ノードの出力値を閾値と比較し、閾値以上の出力値が得られた出力ノードの個数の割合が一定値以上の場合は、第１の識別結果を決定する（例えば画像に人の顔が写っていると判定）。当該割合が一定値未満の場合は、第２の識別結果を決定する（例えば画像に人の顔が写っていないと判定）。あるいは、出力ノードの出力値のうち最も大きな出力値を特定し、特定した出力値が一定値以上の場合、第１の識別結果を決定し、一定値未満の場合は、第２の識別結果を決定してもよい。閾値は予めデータ記憶部１８又は演算処理部１９の内部バッファに格納しておく。各出力ノードの出力値に基づく判定方法は、ニューラルネットワークの構成や学習方法等に応じて任意に定義することができる。
【００６５】
中間層が複数存在する場合は、初段の中間層の各中間ノードが、入力ノードＡ１〜Ａｑの全てとリンクで結合され、各リンクには重み係数が設定される。また、隣接する中間層同士間で、後段の中間層の各中間ノードが、前段の中間層の全ての中間ノードとリンクで結合され、各リンクには重み係数が設定される。出力層４３の各出力ノードが、最終段の中間層の全ての中間ノードとリンクで結合され、各リンクには重み係数が設定される。２段目以降の中間層の各中間ノードでは、前段の中間層の全ての中間ノードの出力値が、入力されるデータとなる。２段目以降の中間層の各中間ノードの演算は、前述した中間層４２と同様である。
【００６６】
このようなニューラルネットワークの学習は、予め識別結果（正解）が分かっている複数の画像データを学習データとして用意し、画像データを入力層に入力したら、当該識別結果（正しい識別結果）が得られるよう、ノード間の重み係数を調整することで行う。予め分かっている識別結果は教師信号と呼ばれる。このような重み係数の調整は、バックプロパゲーション法（誤差逆伝播法：Back Propagation Method）などの方法を用いて行えばよい。バックプロパゲーション法は、ニューラルネットワークの出力と教師信号のずれが小さくなるよう、出力層側から順番に、重み係数を調整する方法である。
【００６７】
以上は、一般的なニューラルネットワークの説明であるが、以下、図４〜図６を用いて、本実施形態に係るニューラルネットワークについて説明する。図４は一般的なニューラルネットワークの説明で用いたものであるが、ニューラルネットワークの構造を普遍的に示したもので、本実施形態に係るニューラルネットワークの説明も図４をベースに行う。本実施形態に係るニューラルネットワークは、一例として第１ニューラルネットワークに対応し、第１ニューラルネットワークにおける各ノードは一例として第１ノードに対応する。
【００６８】
本実施形態ではニューラルネットワークの各入力ノードに与えるデータとして、演算処理部１９が、画素データをデータ変換し、これを入力データ（第１入力データ）として用いる。より詳細には、各画素２１の画素データが示す値（電圧値）に対して、上述の式（１）の関係にある電流値ｉを底２の対数に変換したデータ（ｌｏｇ２ｉ）を用いる。変換したデータを、対数画素データと呼ぶ。上述の式（１）を、底の変換公式を用いて、式（５−１）のように変換し、さらに式（５−２）のように変換することで、対数画素データ（ｌｏｇ２ｉ）を導出できる。
【００６９】
【数５】
2020188386.tif 000007
【００７０】
Ａ及びｌｏｇ２ｅのいずれも固定値であるから、Ａ’も固定値である。よって、画素データの値（ｖ）にＡ’を乗じることで、ｌｏｇ２ｉを算出できる。Ａ’は固定値であるから、この演算は簡単であり、小規模の演算量又は小規模の回路で実現できる。すなわち、画素データを底が２の対数に変換（ｌｏｇ２変換）するための回路（ｌｏｇ２変換回路）は不要である。ｌｏｇ２ｅは、所定値（ここではネイピア数）を真数に含む対数の一例である。
【００７１】
また、本実施形態に係るニューラルネットワークの演算処理では、各ノード間の重み係数として、学習された重み係数を底２の対数に変換した対数重み係数を用いる。各ノード間とは、入力ノード及び中間ノード間、並びに、中間ノード及び出力ノード間のことである。中間層が複数存在する場合は、異なる中間層間での中間ノード間も含む。このように、本実施形態に係るニューラルネットワークの演算処理は、各入力ノードに与えられる対数画素データと、各ノード間に設定される対数重み係数とに基づき行われる。
【００７２】
以下、中間ノードの演算処理の内容を説明する。まず、中間ノードに接続されている各入力ノードから入力される対数画素データと、各入力ノードに対する対数重み係数とをそれぞれ加算する。加算の対象がいずれも対数であるから、加算結果も対数である。ｌｏｇ２ｉ＋ｌｏｇ２ｗ＝ｌｏｇ２（ｉ＊ｗ）が成立するから、対数画素データ（ｌｏｇ２ｉ）と対数重み係数（ｌｏｇ２ｗ）を加算した値は、電流データｉと重み係数ｗとの乗算値（ｉ＊ｗ）を、底２の対数に変換した値に等しい。ｉ＊ｗを直接計算することなく、入力された対数同士を加算するのみでｌｏｇ２（ｉ＊ｗ）を算出できる。よって、一般的なニューラルネットワークの演算処理における乗算演算を、加算演算に置き換えることができる。
【００７３】
次に、各入力ノードに対する加算結果（対数値）の真数の総和値のｌｏｇ２を算出する。複数の対数値の真数を総和した値のｌｏｇ２を算出することを、“ｌｏｇ２加算”と呼ぶ。また、ｌｏｇ２加算により算出された値をｌｏｇ２加算値と呼ぶ。
【００７４】
例えば、各入力ノードに対する加算結果をｌｏｇ２（ｉ１＊ｗ１），・・・，ｌｏｇ２（ｉｑ−１＊ｗｑ−１），ｌｏｇ２（ｉｑ＊ｗｑ）とすると、これらのｌｏｇ２加算値は、ｌｏｇ２（ｉ１＊ｗ１＋，・・・，＋ｉｑ−１＊ｗｑ−１＋ｉｑ＊ｗｑ）である。ｌｏｇ２加算は、小規模の演算量又は小規模の回路で実現できる。
【００７５】
算出したｌｏｇ２加算値を活性化関数の入力変数として、活性化関数の出力値を計算する。以下、図４の中間ノードＢ１を例に、具体例を説明する。
【００７６】
図５は、中間ノードＢ１の演算処理の例を説明するための図である。中間ノードＢ１と、入力ノードＡ１〜Ａｑとの間に設定された対数重み係数をｌｏｇ２ｗ１〜ｌｏｇ２ｗｑとする。入力ノードＡ１〜Ａｑから中間ノードＢ１に入力されるデータをｌｏｇ２ｉ１〜ｌｏｇ２ｉｑとする。このとき、中間ノードＢ１における演算値（Ｘ’Ｂ１）、活性化関数の出力値（Ｙ’Ｂ１）は、以下の式で表される。図５の例では活性化関数としてＲｅＬＵ関数を用いている。
【数６】
2020188386.tif 000008
【００７７】
中間ノードＢ２〜Ｂｊでも、中間ノードＢ１と同様の演算が行われる。
【００７８】
式（６−１）と式（２−１）とを比較して理解できるように、本実施形態に係るニューラルネットワークにおけるノードの演算値（ｌｏｇ２加算値）は、一般的なニューラルネットワークにおけるノードの演算値（積和演算値）をｌｏｇ２に変換した値に相当する。
【００７９】
出力ノードＣ１〜Ｃｎの演算処理も、前段の層から入力されるデータが、各中間ノードの出力値である以外は、中間ノードと同様である。中間ノードの出力値は底２の対数であるから、出力ノードでも、中間ノードと同様にｌｏｇ２加算の演算を行うことができる。
【００８０】
例えば、中間ノードにおける活性化関数がＲｅＬＵの場合、演算値が０より大きい場合は、当該値がそのまま出力されるため、ＲｅＬＵの出力値は底２の対数である。演算値が０以下の場合、０が出力されるが、０＝ｌｏｇ２１であるから、この場合も出力値は底２の対数で表される。よって、出力ノードでも、中間ノードと同様の演算を行うことができる。
【００８１】
演算処理部１９は、出力ノードＣ１〜Ｃｎの出力値（底が２の対数）に基づき判定処理を行い、判定処理の結果を、画像認識の結果として出力する。判定処理の詳細は、前述した一般的なニューラルネットワークの判定処理と同様である。例えば、各出力ノードにクラスが割り当てられており、最も大きい出力値を出力した出力ノードのクラスを画像認識の結果とする。その他、前述した各出力ノードの出力値を閾値と比較する方法も可能である。閾値と比較する場合、閾値を底２の対数に変換した値（対数閾値）を用いればよい。これにより、対数同士で比較が可能となる。対数閾値は予めデータ記憶部１８又は演算処理部１９の内部バッファに格納しておく。
【００８２】
このように本実施形態に係るニューラルネットワークでは、中間ノード及び出力ノードで乗算演算は不要であるため、乗算回路が不要となり、回路規模も低減される。また、演算量が低減されるため、消費電力も低減される。
【００８３】
ここでｌｏｇ２加算の演算を効率的に行うための回路（ｌｏｇ２加算回路）の構成例について説明する。ここで、ｌｏｇ２（ｉ１＊ｗ１）とｌｏｇ２（ｉ２＊ｗ２）とのｌｏｇ２加算は、以下の式で近似できる（非特許文献１参照）。
【数７】
2020188386.tif 000009
【００８４】
式（７）の最初の項は、ｌｏｇ２（ｉ１＊ｗ１）とｌｏｇ２（ｉ２＊ｗ２）のうちの最大値を意味する。２番目の項は、ｌｏｇ２（ｉ１＊ｗ１）とｌｏｇ２（ｉ２＊ｗ２）の差分の絶対値のマイナスだけ２を累乗している。２番目の項は１を、当該差分の絶対値だけ右側（桁の小さい方向）にビットシフトすることに等しい。つまり、１０進数の１をビットで表記したビット列を、｜ｌｏｇ２（ｉ１＊ｗ２）−ｌｏｇ２（ｉ１＊ｗ１）｜だけ右側にビットシフトする。ビットシフトを右側に行うのは、２のべき乗の指数が負の値であるためである。例えば、１が００００１０００と表される場合に、上述の差分の絶対値が３であれば、３ビットシフトを行うことにより、０００００００１となる。なおビット表記の規則は任意に定めればよく、本例は一例に過ぎない。
【００８５】
このように、最大値の選択と、差分の絶対値の計算と、ビットシフトによりｌｏｇ２加算ができるため、演算が簡単である。なお、｜ｌｏｇ２（ｉ１＊ｗ２）−ｌｏｇ２（ｉ１＊ｗ１）｜の値が整数にならない場合は、丸め処理（切り上げ又は切り捨て）、天井関数又は床関数などにより整数に近似すればよい。あるいは、ｌｏｇ２（ｉ１＊ｗ２）及びｌｏｇ２（ｉ１＊ｗ１）をそれぞれ整数に近似してから、｜ｌｏｇ２（ｉ１＊ｗ２）−ｌｏｇ２（ｉ１＊ｗ１）｜を計算してもよい。
【００８６】
図６は、ｌｏｇ２加算回路の一例のブロック図である。ｌｏｇ２加算回路は演算処理部１９に含まれている。ここでは複数の入力ノードＡ１〜Ａｑに対してそれぞれ対数画素データと対数重みとの加算により計算されたｌｏｇ２（ｉｎ＊ｗｎ）（ｎは１〜ｑの整数）を、累積加算する場合の回路構成の例を示している。図６の回路は、セレクタ５１と、加算器５２と、減算器５３と、絶対値演算器５４と、べき乗演算器５５と、フリップフロップ回路５６とを備えている。
【００８７】
セレクタ５１は第１入力端子と第２入力端子とを有する。第１入力端子には新たに演算対象となるｌｏｇ２（ｉｎ＊ｗｎ）が入力され、これをデータＰｎと表す。第２入力端子には前回まで累積加算された値ｌｏｇ２（ｉ１＊ｗ１＋・・・＋ｉｎ−１＊ｗｎ−１）が入力され、これをデータＳｎ−１と表す。初回は、第１入力端子にｌｏｇ２（ｉ２＊ｗ２）（＝Ｐ２）が入力され、第２入力端子にｌｏｇ２（ｉ１＊ｗ１）（＝Ｓ１）が入力される。
【００８８】
データＰｎとデータＳｎ−１は減算器５３にも入力される。減算器５３は、ＰｎからＳｎ−１を減算する。減算器５３の出力は、セレクタ５１の制御端子に接続されている。減算器５３は、減算結果の符号を示す信号をセレクタ５１の制御端子に出力し、減算結果を表す信号を絶対値演算器５４に出力する。セレクタ５１は、減算結果が正を示す場合はデータＰｎを出力し、負を示す場合は、データＳｎ−１を出力する。すなわち、データＰｎとＳｎ−１のうち大きい方を出力する。減算器５３は、Ｓｎ−１からＰｎを減算する構成でもよく、この場合、セレクタ５１は、減算結果が正を示す場合はデータＳｎ−１を出力し、負を示す場合は、データＰｎを出力すればよい。
【００８９】
絶対値演算器５４は、減算器５３の出力に接続されており、減算器５３の減算結果の絶対値｜Ｐｎ−Ｓｎ−１｜を計算する。
【００９０】
べき乗演算器５５は、絶対値演算器５４の出力に接続されており、２の−｜Ｐｎ−Ｓｎ−１｜乗を計算する。この計算は上述したように、１を｜Ｐｎ−Ｓｎ−１｜だけ、右側にビットシフトすることにより実現できる。
【００９１】
加算器５２は、セレクタ５１の出力とべき乗演算器５５の出力に接続されており、セレクタ５１で選択された値と、べき乗演算器５５でビットシフトされた後の値とを加算する。
【００９２】
フリップフロップ回路５６は、加算器５２の出力に接続されており、加算器５２の加算結果（ｌｏｇ２（ｉ１*ｗ１+ｉ２*ｗ２）の近似値）を内部に記憶する。フリップフロップ回路５６は、セレクタ５１の第２入力端子に接続されており、この値をデータＳ２として第２入力端子及び減算器５３にフィードバックする。セレクタ５１の第１入力端子には次に演算対象となるｌｏｇ２（ｉ３＊ｗ３）がデータＰ３として入力される。以降、同様にして処理を繰り返すことで、ｌｏｇ２（ｉｎ＊ｗｎ）が累積的にｌｏｇ２加算され、最終的に、ｌｏｇ２（ｉ１＊ｗ１＋・・・＋ｉｑ＊ｗｑ）の近似値が、クロックＣＬＫで動作するフリップフロップ回路５６から出力される。フリップフロップ回路５６の出力値は、活性化関数の入力変数となる。
【００９３】
図７は、本実施形態に係る固体撮像装置の動作の一例のフローチャートである。本装置を搭載したデバイスで予め定めたイベントが成立したことにより、本処理の実行のトリガーが発生する。予め定めたイベントは、本装置を搭載したデバイスで発生又は検知するイベントであれば何でもよい。例えば、本装置を搭載したデバイスを操作するユーザが所定の操作を行ったこと、所定の時刻になったこと、一定値以上の振動を検知したことなどがあるが、これらに限定されない。このトリガーにより、制御部１５の制御の元、画素アレイ部１１で１フレームの撮像が行われる。すなわち、各画素２１で光電変換により、入射光の光量に対して対数的に変化する画素信号（電圧信号）が生成され、生成された画素信号を読み出して信号処理部１６に送る（Ｓ１０１）。これらの画素信号をカラム処理部１３でＡＤ変換し（Ｓ１０２）、ＡＤ変換により得られた各画素の画素データの集合を、画像データとしてデータ記憶部１８に格納する（Ｓ１０３）。
【００９４】
演算処理部１９は、データ記憶部１８から画像データを読み出し、画像データに含まれる各画素データに対してデータ変換を行う（Ｓ１０４）。データ変換操作は、一例としてｌｏｇ２ｅ／Ａを乗じることである（式（５−１）と式（５−２）参照）。すなわちネイピア数（所定値）を真数に含む対数を、画素データの値に乗じる。これにより、画素データの値を底２の対数に変換したデータ（ｌｏｇ２ｉ）を、対数画素データとして算出する（同Ｓ１０４）。
【００９５】
演算処理部１９は、データ記憶部１８から、ニューラルネットワークにおける各ノード間に設定された重み係数の対数である対数重み係数（ｌｏｇ２重み係数）を読み出す（Ｓ１０５）。各ノード間とは、入力ノード及び中間ノード間、並びに、中間ノード及び出力ノード間のことである。中間層が複数存在する場合は、異なる中間層間での中間ノード間も含む。対数重み係数は、データ記憶部１８でなく、演算処理部１９の内部バッファに予め記憶させておいてもよい。以下の説明では、中間層が１つのニューラルネットワーク（図４参照）を想定するが、複数の場合も可能である。この場合、２段目以降の中間層では、入力されるデータが入力ノードからではなく、前段の中間層の中間ノードからに変更されるのみで、処理の内容は初段の中間層と同様である。
【００９６】
演算処理部１９は、各画素２１の対数画素データを入力データとしてニューラルネットワークの各入力ノードに割り当てる（Ｓ１０６）。どの入力ノードにどの画素２１が対応付けられるかは学習時に予め定めておく。画素２１と入力ノードとを１対１で対応づけることは一例に過ぎず、他の手法で、各入力ノードに割り当てる入力データを生成してもよい。
【００９７】
例えば、所定個数の画素２１により画素グループを構成し、各画素グループを各入力ノードに対応づける。画素グループで対数画素データの代表値を決定し、代表値を入力データとして入力ノードに割り当てる。代表値は、平均値、最大値又は最小値など任意の統計値でよい。また、今回読み出した対数画素データと、前回読み出した対数画素データとの差分の画素データを入力データとして入力ノードに割り当てることも可能である。
【００９８】
演算処理部１９は、各入力ノードに割り当てた入力データと、各中間ノード及び各入力ノード間に設定された対数重み係数とに基づき、各中間ノードの演算を行う（Ｓ１０７）。すなわち、各入力ノードに対して対数重み係数と入力データとを加算し、加算結果を全てｌｏｇ２加算する。演算処理部１９は、ｌｏｇ２加算値を入力変数として、活性化関数を計算する（同Ｓ１０７）。活性化関数の出力値を、各中間ノードの出力値とする。各中間ノードの出力値は、次段の出力層に入力されるデータとなる。
【００９９】
次に、各中間ノードの出力値と、各中間ノード及び各出力ノード間に設定された対数重み係数とに基づき、各出力ノードの演算を行う（Ｓ１０８）。すなわち、各中間ノードに対して、対数重み係数と入力されるデータとを加算し、加算結果を全てｌｏｇ２加算する。演算処理部１９は、ｌｏｇ２加算値を入力変数として、活性化関数を計算する（同Ｓ１０８）。活性化関数の出力値が、出力ノードの出力値となる。
【０１００】
演算処理部１９は、各出力ノードの出力値に基づき、判定処理を行う（Ｓ１０９）。一例として、最も大きい出力値を算出した出力ノードを特定し、特定した出力ノードに割り当てられているクラスを画像認識の結果として取得する。判定認識は、前述したように、閾値を用いた処理など、その他にも様々なアルゴリズムが可能である。どのようなアルゴリズムを用いてもかまわない。演算処理部１９は、画像認識の結果を示すデータをデータ記憶部１８に格納する。
【０１０１】
ＣＰＵ１７は、画像認識の結果を示すデータをデータ記憶部１８から読み出して、外部に出力する（Ｓ１１０）。例えば、本装置が搭載されたデバイスで実行されているアプリケーションプログラムに出力する。この場合、アプリケーションプログラムは、当該データが示す結果に応じた処理を行う。また、画像認識の結果を示すデータを、本装置が搭載されたデバイスが備える表示装置の画面に表示してもよい。
【０１０２】
上述のステップの順序は一例であり、一部のステップの順序が入れ替わってもよい。例えばステップＳ１０４とステップＳ１０５の順序が逆でもよい。
【０１０３】
以上、本実施形態によれば、対数画素から読み出した画素信号（電圧信号）のデータをデータ変換することにより、底２の対数の入力データを生成する。よって、底２の対数への変換を行う回路（ｌｏｇ２変換回路）は必要がないため、回路規模を低減できるとともに、消費電力を低減できる。
【０１０４】
本実施形態では対数画素から読み出した画素信号のデータを用いるため、対数画素がもつ高ダイナミックレンジの特性を生かした画像認識が可能となる。関連技術では線形画素から読み出した画素信号のデータをｌｏｇ２変換回路で底２の対数に変換するが、この場合、変換後のデータのダイナミックレンジは線形画素のダイナミックレンジに律速される。このため、高ダイナミックレンジの効果は得られない。これに対して、本実施形態では対数画素からの読み出しを行うため、高ダイナミックレンジの効果を得ることができる。
【０１０５】
また本実施形態によれば、画素データを変換した対数画素データ（底２の対数）と、対数重み係数（底２の対数）とを用いるため、各ノードでの演算を加算で行うことができる。よって、各ノードでの乗算（重み係数と入力データとの乗算）が不要となる。よって、演算量が低減し、消費電力を低減できる。また、乗算回路が不要となるため、回路規模を低減できる。
【０１０６】
（変形例１）
第１の実施形態では、底２の対数を用いたが、対数の底は必ずしも２である必要はない。底が２でない場合も、各ノードで対数領域での加算演算を行うことで、演算量を低減することが期待できる。
【０１０７】
（変形例２）
第１の実施形態で示した対数画素の構成（図３）は一例であり、様々な変形が可能である。図８を用いて、対数画素の変形例を説明する。
【０１０８】
図８は、対数画素の変形例を示す回路図である。図３の対数画素に画素トランジスタとして、リセットトランジスタ３７、バッファトランジスタ３８及びバイアストランジスタ３９が追加されている。バッファトランジスタ３８及びバイアストランジスタ３９はバッファ回路４０を構成する。リセットトランジスタ３７は、一例としてＮ型トランジスタにより構成される。バッファトランジスタ３８及びバイアストランジスタ３９は、一例としてＰ型トランジスタにより構成される。
【０１０９】
接続ノードＮ２は、出力トランジスタ３２のゲート端子と、バッファトランジスタ３８のゲート端子とに接続されている。接続ノードＮ２に生成される電圧信号は、バッファ回路４０を介して増幅トランジスタ３５に与えられる。この電圧信号が増幅トランジスタ３５により増幅される。
【０１１０】
電源電圧と基準電圧との間に、バイアストランジスタ３９とバッファトランジスタ３８が直列に接続されている。バイアストランジスタ３９のゲート端子にはバイアス電圧Ｖｂｉａｓ２が印加されている。バイアストランジスタ３９とバッファトランジスタ３８の接続ノード、すなわちバッファ回路４０の出力端子は、リセットトランジスタ３７のソース端子と、増幅トランジスタ３５のゲート端子とに接続されている。リセットトランジスタ３７のドレイン端子は電源電圧に接続されている。リセットトランジスタ３７のゲート端子は画素駆動線２２に接続されている。
【０１１１】
リセットトランジスタ３７は、垂直駆動部１２が供給するリセット信号ＲＳＴにより制御される。リセットトランジスタ３７をオン状態にして、画素信号を含まない信号を検出し、検出した信号を画素信号から除去（減算）するＣＤＳ（Correlated Double Sampling）処理を、信号処理部１６又はカラム処理部１３で行う。これにより、画素トランジスタ等のばらつきにより生じる固定パターンノイズを除去する。なお画素信号の読み出しは、画素信号を含まない信号を読み出す前又は後に行えばよい。ＣＤＳ処理により得られた信号を、対数画素から読み出した画素信号として用いることができる。なお、バッファ回路４０は、リセット時に対数画素の電位（ノードＮ２の電位）が影響を受けることを低減するよう機能する。これにより対数画素の電位を、常時光量に依存した出力にすることができる。なお、図８の回路構成を用いつつも、ＣＤＳ処理を行わないことも可能である。
【０１１２】
本変形例によれば、ＣＤＳ処理を行うことにより、画素信号に含まれる固定パターンノイズを除去することができる。
【０１１３】
（変形例３）
図９は、対数画素の他の変形例を示す回路図である。図８の回路構成に対してイベント検出部８０が追加されている。イベント検出部８０が追加された画素回路をＤＶＳ（Dynamic Vision Sensor）回路と呼ぶ場合もある。なおバッファ回路４０の構成を、ここでは記号により模式的に示している。イベント検出部８０は、フォトダイオード３１からの光電流の変化量が所定の閾値を超えたか否かにより、イベントの有無を検出する。イベントの例として、変化量が上限の閾値を超えたオンイベント、変化量が下限の閾値を下回るイベント、又はこれらの両方がある。オンイベント又はオフイベントの検出は、一例として、コントラストの変化を検出（例えば物体を検出）することに相当する。イベント検出部８０は、イベントの検出有無に応じて検出信号又は非検出信号を制御部１５に出力する。
【０１１４】
イベント検出部８０は、減算器８１と量子化器８２とを含む。バッファ回路４０の出力端子に減算器８１が接続されている。減算器８１の出力端子に量子化器８２が接続されている。なお、イベント検出部８０を図３の回路構成に追加することも可能である。
【０１１５】
減算器８１は、垂直駆動部１２からの駆動信号に従ってバッファ回路４０からの電圧信号のレベルを低下させる。この減算器８１は、低下後の電圧信号を量子化器８２に供給する。
【０１１６】
量子化器８２は、減算器８１からの電圧信号をデジタル信号に量子化する。量子化器８２は、量子化後の信号を閾値電圧Ｖｔｈと比較し、比較結果を示す信号（検出信号又は非検出信号）を生成する。一例として、閾値電圧Ｖｔｈが上限の閾値であれば、量子化後の信号が上限の閾値より大きい場合は、検出信号を生成する。量子化後の信号が上限の閾値以下であれば、非検出信号を生成する。量子化器８２は、生成した検出信号又は非検出信号を、制御部１５に出力する。閾値電圧Ｖｔｈが下限の閾値の場合も同様にして、検出信号又は非検出信号を生成することができる。
【０１１７】
制御部１５は、検出信号が入力された場合は、対数画素２１からの画素信号の読み出しを行うことを決定し、対数画素２１から画素信号の読み出しを行うよう垂直駆動部１２を制御する。一方、制御部１５は、非検出信号が入力された場合は、対数画素２１からの画素信号の読み出しを行わないことを決定する。なお、量子化器８２はイベントが検出されなかった場合に、制御部１５への非検出信号の出力を省略する構成も可能である。
【０１１８】
図１０は、減算器８１および量子化器８２の一構成例を示す回路図である。減算器８１は、コンデンサ８３と、コンデンサ８４と、インバータ８５と、スイッチ８６とを備える。量子化器８２は、コンパレータ８７を備える。
【０１１９】
コンデンサ８３の一端は、バッファ回路４０の出力端子に接続され、他端は、インバータ８５の入力端子に接続される。コンデンサ８４は、インバータ８５に並列に接続される。スイッチ８６は、コンデンサ８４の両端を接続する。スイッチ８６は、垂直駆動部１２からの駆動信号に従って開閉する。
【０１２０】
インバータ８５は、コンデンサ８３を介して入力された電圧信号を反転する。インバータ８５は、反転した信号をコンパレータ８７の非反転入力端子（＋）に出力する。
【０１２１】
スイッチ８６がオンされると、コンデンサ８３のバッファ回路４０側に電圧信号Ｖｉｎｉｔが入力され、その逆側は仮想接地端子となる。この仮想接地端子の電位を便宜上、ゼロとする。このとき、コンデンサ８３の容量をＣ１とすると、コンデンサ８３に蓄積されている電荷Ｑｉｎｉｔは、次の式により表される。一方、コンデンサ８４の両端は、短絡されているため、その蓄積電荷はゼロとなる。
Ｑｉｎｉｔ＝Ｃ１×Ｖｉｎｉｔ      ・・・（８−１）
【０１２２】
次に、スイッチ８６がオフされて、コンデンサ８３のバッファ回路４０側の電圧が変化してＶａｆｔｅｒになる。このときコンデンサ８３に蓄積される電荷Ｑａｆｔｅｒは、次の式により表される。
Ｑａｆｔｅｒ＝Ｃ１×Ｖａｆｔｅｒ      ・・・（８−２）
【０１２３】
一方、コンデンサ８４に蓄積される電荷Ｑ２は、出力電圧をＶｏｕｔとすると、次の式により表される。
Ｑ２＝−Ｃ２×Ｖｏｕｔ      ・・・（８−３）
【０１２４】
コンデンサ８３およびコンデンサ８４の総電荷量は変化しないため、次の式が成立する。
Ｑｉｎｉｔ＝Ｑａｆｔｅｒ＋Ｑ２      ・・・（８−４）
【０１２５】
式（８−４）に、式（８−１）〜式（８−３）を代入して変形すると、次の式が得られる。
Ｖｏｕｔ＝−（Ｃ１／Ｃ２）×（Ｖａｆｔｅｒ−Ｖｉｎｉｔ）  ・・・（８−５）
【０１２６】
式（８−５）は、電圧信号の減算動作を表し、減算結果の利得はＣ１／Ｃ２となる。通常、利得を最大化することが望まれるため、Ｃ１を大きく、Ｃ２を小さく設計することが好ましい。一方、Ｃ２が小さすぎると、ｋＴＣノイズが増大し、ノイズ特性が悪化するおそれがあるため、Ｃ２の容量削減は、ノイズを許容することができる範囲に制限される。
【０１２７】
コンパレータ８７は、減算器８１からの電圧信号と、反転入力端子（−）に印加された閾値電圧Ｖｔｈとを比較する。コンパレータ８７は、比較結果に応じて検出信号又は非検出信号を出力する。
【０１２８】
本変形例によれば、イベント検出部８０によりイベントを検出したときに画素信号の読み出しを行うため、高速な画素データの生成が可能となる。
【０１２９】
（第２の実施形態）
本実施形態では、画素アレイ部１１に配置する画素として、対数画素と線形画素との２種類を用いる。そして、外部から与えられる指示データに従って、画素信号を読み出す画素を、対数画素及び線形画素間で選択する。対数画素から画素信号を読み出す場合は、その後の処理は第１の実施形態と同様である。線形画素から画素信号を読み出す場合は、その後の処理は、一般的なニューラルネットワークの演算処理と同様である。すなわち、各ノード（中間ノード及び出力ノード）で、各画素の画素データと、重み係数とに基づき積和演算を行い、積和演算の結果を入力変数として活性化関数を計算する。以下、本実施形態について詳細に説明する。
【０１３０】
図１１は、本開示の第２の実施形態に係る固体撮像装置の構成例を示すブロック図である。図１の固体撮像装置に対して、入出力端子２４とモード指示部２５が追加されている。図１と同一名称の要素には同一の符号を付して、拡張又は変更された処理を除き、詳細な説明は適宜省略する。
【０１３１】
画素アレイ部１１は、対数画素２１Ａと線形画素２１Ｂとの２種類の画素を含む。線形画素２１Ｂは、対数画素２１Ａと異なる種類の画素である第２画素の一例に対応する。また、線形画素２１Ｂから読み出される画素信号は、第２画素から読み出される第２画素信号に対応する。
【０１３２】
対数画素２１Ａと線形画素２１Ｂは、横及び縦のそれぞれの方向に交互に配置（千鳥格子状に配置）されている。但し、配置の方法はこれに限定されず、どのような方法でもよい。例えば、縦２つ及び横２つの画素からなる正方形状の画素ブロックごとに、画素ブロック内の３つの画素が対数画素であり、残りの１つが線形画素であってもよい。また列ごとに画素の種類を同じとして、行方向（横方向）に交互に異なる種類の画素列が配置されてもよい。
【０１３３】
第１の実施形態の説明で記載したように、線形画素は、入射光に対して線形に変化する電気信号を画素信号として生成する。すなわち、線形画素は、光量に対して線形に増大する出力信号を生成する。線形画素は、対数画素に比べて、ダイナミックレンジが狭いものの、低ノイズ特性を有している。
【０１３４】
図１２に、線形画素への入射光の光量と、出力電圧との関係を模式的に表したグラフを示す。入射光の光量が増大するに応じて、出力電圧が、線形に増加（例えば比例）している。
【０１３５】
図１３は、線形画素２１Ｂの回路構成の一例を示す。ここでは例示として、１つの線形画素２１Ｂの構成を示すが、他の線形画素２１Ｂも同様の構成を有する。
【０１３６】
線形画素２１Ｂは、光電変換部に対応するフォトダイオード６１と、複数の画素トランジスタとを含む。複数の画素トランジスタは、転送トランジスタ６２、増幅トランジスタ６３、選択トランジスタ６４、及びリセットトランジスタ６５である。これらの画素トランジスタは、ＭＯＳ（Metal Oxide Semiconductor）トランジスタであり、一例としてＮ型トランジスタで構成されている。但し、これらのトランジスタがＰ型トランジスタで構成されてもよい。この場合、これらの画素トランジスタの制御信号の論理及び電源線の電圧を変更する必要がある。
【０１３７】
フォトダイオード６１は、入射光を光電変換によりその光量に比例した電気信号（信号電荷）に変換して蓄積する素子である。フォトダイオード６１のアノード端子が基準電圧に接続されており、カソード端子が転送トランジスタ６２のソース端子に接続されている。
【０１３８】
転送トランジスタ６２は、フォトダイオード６１のカソード端子とＦＤノード６６との間に接続されている。転送トランジスタ６２のゲート端子は、垂直駆動部１２に接続されている。転送トランジスタ６２は、垂直駆動部１２からの転送信号ＴＲＧによって制御される。転送トランジスタ６２がオン状態になると、フォトダイオード６１に蓄積されている信号電荷がＦＤノード６６に転送される。
【０１３９】
ＦＤノード６６は、転送トランジスタ６２のドレイン端子と増幅トランジスタ６３のゲート端子との間に接続された浮遊拡散領域である。これにより、ＦＤノード６６は、フォトダイオード６１から転送される信号電荷を蓄積することがきる。また、ＦＤノード６６は、リセットトランジスタ６５のソース端子にも接続されている。
【０１４０】
増幅トランジスタ６３は、電源電圧と選択トランジスタ６４との間に接続されている。増幅トランジスタ６３のゲート端子は、ＦＤノード６６に接続されている。増幅トランジスタ６３は、ＦＤノード６６に蓄積された信号電荷に応じた導通状態となる。
【０１４１】
選択トランジスタ６４は、増幅トランジスタ６３と垂直信号線２３との間に接続されている。選択トランジスタ６４のゲート端子は、垂直駆動部１２に接続されている。選択トランジスタ６４は、垂直駆動部１２からの選択信号ＳＥＬによって制御される。選択トランジスタ６４は、線形画素２１Ｂを垂直信号線２３に接続しあるいは切断する。選択トランジスタ６４がオン状態になると、増幅トランジスタ６３に電流を流すことが可能となり、増幅トランジスタ６３の導通状態に応じた電流が、電源電圧から流れる。垂直信号線２３は、増幅トランジスタ６３のゲート電圧の信号レベルに応じた電圧にされる。
【０１４２】
リセットトランジスタ６５は、電源電圧とＦＤノード６６との間に接続されている。リセットトランジスタ６５のゲート端子は、垂直駆動部１２に接続されている。リセットトランジスタ６５は、垂直駆動部１２からのリセット信号ＲＳＴによって制御される。リセットトランジスタ６５がオン状態になると、ＦＤノード６６に蓄積されていた信号電荷は電源電圧に排出される。これにより、線形画素２１ＢのＦＤノード６６がリセット状態となる。
【０１４３】
このように線形画素では、入射光の光量に比例する電圧信号が、画素信号として出力される。図１３に示した線形画素の構成は一例であり、線形画素の構成は図１３の構成に限定されない。光量（電荷）に比例する電圧信号を検出可能である限り、どのような構成でもかまわない。
【０１４４】
入出力端子２４は、外部の装置との信号の送受信を行うための端子である。入出力端子２４は、例えばシリアル通信などの任意の通信方式により、外部の装置と信号を送受信する。外部の装置は、一例として、固体撮像装置を搭載したデバイスの内部設定をデバイスの外部から行う装置でもよいし、ユーザが各種設定を行うための操作手段（例えばボタンなど）でもよい。
【０１４５】
モード指示部２５は、入出力端子２４を介して、画素の読み出し処理のモードを指示したモードデータを受信する。画素読み出しモードには、対数読出モードと、線形読出モードがある。対数読出モードは、対数画素からの読み出しを行う第１読出処理を行う。線形読出モードは、線形画素からの読み出しを行う第２読出処理を行う。モードデータはこれらのいずれかのモードを指示している。モード指示部２５は、一例としてレジスタなどの記憶素子により構成される。モード指示部２５へのモードデータの提供をＣＰＵ１７が行う構成も可能である。
【０１４６】
制御部１５は、モード指示部２５からモードデータを読み出し、モードデータが対数読出モードを示す場合は、画素アレイ部１１における各対数画素２１Ａから画素信号の読み出しを行うよう各部を制御する。制御部１５は、モードデータが線形読出モードを示す場合は、画素アレイ部１１における各線形画素２１Ｂから画素信号の読み出しを行うよう各部を制御する。すなわち、制御部１５は、各対数画素２１Ａから画素信号を読み出す処理と、各線形画素２１Ｂから画素信号を読み出す処理とを選択的に実行する。
【０１４７】
カラム処理部１３は、第１の実施形態と同様、１行分の画素２１から出力される信号の信号処理を、画素列ごとに行う。信号処理の例は、ＡＤ変換を含み、さらにＡＤ変換前の信号のノイズ除去及び信号増幅の少なくとも一方を含んでもよい。
【０１４８】
データ記憶部１８は、演算処理部１９がニューラルネットワークの演算処理で用いるニューラルネットワークのパラメータを、対数読出モード及び線形読出モードのそれぞれ用に記憶している。対数読出モード及び線形読出モードのニューラルネットワークはそれぞれ異なり、学習もそれぞれ別に行われる。
【０１４９】
データ記憶部１８は、対数読出モード用のニューラルネットワークのパラメータとして、第１の実施形態と同様に、各ノード間の結合の強さを表す重み係数を、底を２とする対数に変換した値（対数重み係数）を記憶している。対数重み係数をデータ記憶部１８ではなく、演算処理部１９の内部バッファに記憶してもよい。対数読出モード用のニューラルネットワークは、一例として第１ニューラルネットワークに対応し、第１ニューラルネットワークにおける各ノードは一例として第１ノードに対応する。
【０１５０】
データ記憶部１８は、線形読出モード用のニューラルネットワークのパラメータとして、各ノード間の結合の強さを表す重み係数を記憶している。重み係数をデータ記憶部１８ではなく、演算処理部１９の内部バッファに記憶してもよい。線形読出モード用のニューラルネットワークは、一例として第２ニューラルネットワークに対応し、第２ニューラルネットワークにおける各ノードは一例として第１ノードに対応する。
【０１５１】
ＣＰＵ１７は、モード指示部２５からモードデータを読み出し、モードデータが対数読出モードを示す場合は、第１の実施形態と同様に、演算処理部１９の制御を行う。すなわち、演算処理部１９は、各画素の画素データを対数画素データに変換し（式（５−２）参照）、対数画素データと、各ノード間の対数重み係数とを用いて、ニューラルネットワークの演算処理を行う。各中間ノード及び各出力ノードでは、第１の実施形態の説明で記載したように、前段の層から入力されるデータと対数重み係数とを加算し、これらの加算結果をｌｏｇ２加算する（式（６−１）参照）。ｌｏｇ２加算の結果を活性化関数の入力変数として、活性化関数の出力値を計算する（式（６−２）参照）。
【０１５２】
ＣＰＵ１７は、モードデータが線形読出モードを示す場合は、第１の実施形態の説明で記載した一般的なニューラルネットワークと同様の演算を行うように、演算処理部１９を制御する。すなわち、演算処理部１９は、各画素の画素データをニューラルネットワークの入力データ（第２入力データ）とし、当該入力データと、各ノード間の重み係数とを用いて、ニューラルネットワークの演算処理を行う。各中間ノード及び出力ノードでは、前段の層から入力されるデータと重み係数とを乗算し（式（２−１）参照）、これらの乗算結果を加算する。すなわち、当該入力されるデータと重み係数との積和演算を行う。積和演算の結果を活性化関数の入力変数として、活性化関数の出力値を計算する（式（２−２）参照）。
【０１５３】
このように演算処理部１９は、対数読出モード用のニューラルネットワークの演算処理を行う回路と、線形読出モード用のニューラルネットワークの演算処理を行う回路との両方を備えている。
【０１５４】
ここでは両モードのニューラルネットワークが別々に学習されたものであったが、これに限定されるものではない。例えば、両モードで行う画像認識の内容が同じ場合には、共通に学習されたニューラルネットワークを用いてもよい。但し、この場合も、対数読出モードでは、対数画素データと対数重み係数を用い、線形読出モードでは、画素データと重み係数とを用いる。各中間ノード及び各出力ノードでの演算も、上述のように各モードで異なる。
【０１５５】
図１４は、本実施形態に係る固体撮像装置の動作の一例のフローチャートである。制御部１５がモード指示部２５からモードデータを読み出す（Ｓ２０１）。モードデータが対数読出モード及び線形読出モードのいずれを指示しているかを確認する（Ｓ２０２）。対数読出モードが指示されている場合は、制御部１５は画素アレイ部１１の各対数画素２１Ａから画素信号を読み出すように各部を制御する（Ｓ２０３）。この後の処理は、図７のステップＳ１０２〜Ｓ１１０と同様である（Ｓ２０４）。
【０１５６】
線形読出モードが指示されている場合は、制御部１５は画素アレイ部１１の各線形画素２１Ｂから画素信号を読み出すように各部を制御する（Ｓ２０５）。この後の処理は図１５に示される。
【０１５７】
図１５は、図１４のステップＳ２０５に続く動作の一例のフローチャートである。図７のフローチャートと同様のステップの処理については適宜説明を省略する。
【０１５８】
各線形画素２１Ｂから読み出された画素信号をカラム処理部１３でＡＤ変換し（Ｓ２０６）、ＡＤ変換により得られた各画素の画素データの集合を、画像データとしてデータ記憶部１８に格納する（Ｓ２０７）。
【０１５９】
演算処理部１９は、データ記憶部１８から画像データを読み出し（Ｓ２０８）、データ記憶部１８から、線形読出モード用のニューラルネットワークにおける各ノード間の重み係数を読み出す（Ｓ２０９）。
【０１６０】
演算処理部１９は、各画素２１の画素データを入力データとしてニューラルネットワークの各入力ノードに割り当てる（Ｓ２１０）。どの入力ノードにどの画素２１が対応付けられるかは学習時に予め定めておく。画素２１と入力ノードとを１対１で対応づけることは一例に過ぎず、他の手法で、各入力ノードに割り当てる入力データを生成してもよい。
【０１６１】
演算処理部１９は、各入力ノードに割り当てた入力データと、各中間ノード及び各入力ノード間の重み係数とに基づき、各中間ノードの演算を行う（Ｓ２１１）。すなわち、各入力ノードに対する重み係数と入力データとを乗算し、乗算結果の総和を計算する。つまり、重み係数と入力データとの積和演算を行う。演算処理部１９は、積和演算の結果を入力変数として、活性化関数を計算する（同Ｓ２１１）。活性化関数の出力値を、各中間ノードの出力値とする。各中間ノードの出力値は、次段の出力層に入力されるデータとなる。
【０１６２】
各中間ノードの出力値と、各中間ノード及び各出力ノード間の重み係数とに基づき、各出力ノードの演算を行う（Ｓ２１２）。すなわち、各中間ノードに対する重み係数と入力されるデータとを乗算し、乗算結果の総和を計算する。つまり、重み係数と入力されるデータとの積和演算を行う。演算処理部１９は、積和演算の結果を入力変数として、活性化関数を計算する（同Ｓ２１２）。活性化関数の出力値を、各出力ノードの出力値とする。
【０１６３】
演算処理部１９は、各出力ノードの出力値に基づき、判定処理を行う（Ｓ２１３）。一例として、最も大きい出力値を算出した出力ノードを特定し、特定した出力ノードに割り当てられているクラスを画像認識の結果として取得する。演算処理部１９は、画像認識の結果を示すデータをデータ記憶部１８に格納する。
【０１６４】
ＣＰＵ１７は、画像認識の結果を示すデータをデータ記憶部１８から読み出して、外部の装置に出力する（Ｓ２１４）。外部の装置は、一例として、本装置が搭載されたデバイスで実行されているアプリケーションプログラムを実行するプロセッサ等の装置である。外部の装置では、画像認識の結果に応じて、読出モードを切り替えることを決定してもよい。例えば対数読出モードから線形読出モードに切り替える。外部の装置は、切り替え先のモードを指定したモードデータを、入出力端子２４又はＣＰＵ１７を介してモード指示部２５に書き込む。以下、モードの切り替えについて詳細に説明する。
【０１６５】
上述したように、対数画素は、線形画素に比べてノイズが多いものの、ダイナミックレンジが広いという特性を有しており、線形画素は、対数画素に比べて、ダイナミックレンジが狭いものの、低ノイズ特性を有している。このような特性の違いを利用して、対数読出モードと線形読出モードを切り替えることで、目的に応じた画像認識を行うことができる。例えば、センシングを低消費電力で行う目的で対数読出モードを利用し、センシングで検出されたオブジェクトを高精度に識別するために線形読出モードを利用する。
【０１６６】
具体例として、人の顔が写っているか否かの検出を対数読出モードを用いて行い、人の顔が写っていることが検出されたら、線形読出モードに切り替え、当該人の識別（例えば事前に登録された複数の人のいずれかに該当するかなど）を行う。別の例として、自動車のナンバープレートが写っているか否かの検出を対数読出モードで行い、ナンバープレートが写っていることが検出されたら、線形読出モードに切り替え、ナンバープレートの番号を識別する。
【０１６７】
（変形例１）
対数読出モードか線形読出モードかに応じて、ＡＤ変換の設定分解能（ビット数）を変更してもよい。一例として、線形読出モードのビット数を、対数読出モードのビット数より大きくしてもよい。具体例として、線形画素のビット数が１０〜１２ビット、対数読出モードのビット数が８ビットである。ビット数を少なくすることで、演算量が低減するため、対数読出モードでの消費電力をより一層低減できる。これらの数値の例は一例であり、それぞれどのような値のビット数でもよい。両モードでＡＤ変換のビット数が同じでもよい。
【０１６８】
（変形例２）
第２の実施形態では２種類の画素として対数画素と線形画素を用いる例を示したが、線形画素の代わりに、他の種類の画素を用いてもよい。
【０１６９】
例えば、入射されるフォトン数をカウントし、画素信号として出力するフォトカウント型画素（デジタル画素）を用いてもよい。フォトカウント型画素では、単一のフォトンの入射を検出できるＳＰＡＤ（Single Photon Avalanche Diode）を用いる。フォトンが入射されたＳＰＡＤから出力されるパルスをカウントすることで画素信号を生成する。
【０１７０】
また、他の画素例として、被写体との距離を測定する測距画素を用いてもよい。測距画素の具体例として、ＩＴＯＦ（Indirect Time Of Flight）技術を用いた画素がある。この画素では、フォトダイオードを用いて変調したパルス光が反射してくるときの位相差を電荷量として検出し、これを画素信号とする。
【０１７１】
ここに例示した画素は、対数画素（第１画素）と異なる種類の画素である第２画素の一例に対応する。これらの画素を用いた場合、読み出した画素信号の処理は、線形画素の場合と同様である。すなわち、ここに例示した画素を用いる場合、第２の実施形態の説明において線形読出モード用として記載した箇所を、当該画素の読出モード用として読み替えればよい。例えば線形読出モード用のニューラルネットワークは、当該画素の読出モード用のニューラルネットワークと読み替えればよい。
【０１７２】
（第３の実施形態）
上述した第２の実施形態では対数画素と線形画素が別々の画素として独立に存在したが、第３の実施形態では対数画素と線形画素との両方の機能を有する画素（以下、ハイブリッド画素と呼ぶ）を用いる。
【０１７３】
図１６は、第３の実施形態に係る固体撮像装置の構成例を示すブロック図である。図１１の画素アレイ部１１における対数画素２１Ａ及び線形画素２１Ｂが、ハイブリッド画素２１Ｃに置換されている。ハイブリッド画素２１Ｃは、対数画素２１Ａと異なる種類の画素である第２画素の一例に対応する。
【０１７４】
図１７は、ハイブリッド画素２１Ｃの回路構成の一例を示す。ハイブリッド画素２１Ｃの構成は、基本的には図３に示した対数画素の構成と、図１３に示した線形画素の構成とを１つ画素内に組み込んだものである。図１７において、図３及び図１３と同一の要素には同一の符号を付してある。但し、図３のＳＥＬはＳＥＬ１に変更され、図１３のＳＥＬ、ＴＲＧはＳＥＬ２、ＴＲＧ２に変更されている。以下、図３及び図１３の構成との差分を中心に説明する。
【０１７５】
ハイブリッド画素２１Ｃは、フォトダイオード７１と、対数画素読出部（第１読出部）７５と、線形画素読出部（第２読出部）７６とを備えている。対数画素読出部７５は、図３の対数画素の構成（フォトダイオード７１を除く）に対応し、線形画素読出部７６は、図１３の線形画素の構成（フォトダイオード７１を除く）に対応する。但し、対数画素読出部７５は転送トランジスタ７２を新たに含む。転送トランジスタ７２はフォトダイオード７１と接続ノードＮ１との間に配置されている。
【０１７６】
ハイブリッド画素２１Ｃにおいて、フォトダイオード７１は、対数画素読出部７５と線形画素読出部７６とに共通に接続されている。フォトダイオード７１は、対数読出モードと線形読出モードとの両方で共通に用いられる。本実施形態の対数読出モードでは対数画素読出部７５を用いて読み出しを行い（第１読出処理）、線形読出モードでは線形画素読出部７６を用いて読み出しを行う（第２読出処理）。フォトダイオード７１のカソード端子は、転送トランジスタ６２のソース端子と、転送トランジスタ７２のソース端子とに接続されている。転送トランジスタ７２のドレイン端子は接続ノードＮ１に接続されている。転送トランジスタ７２のゲート端子は、垂直駆動部１２に接続されている。転送トランジスタ７２は、垂直駆動部１２からの転送信号ＴＲＧ１によって制御される。対数読出モードを実行する場合は、転送トランジスタ７２はオン状態にされる。
【０１７７】
制御部１５は、対数読出モードを実行する場合は、転送トランジスタ７２をオン状態にし続け、転送トランジスタ６２をオフ状態にし続ける。この状態で、対数画素読出部７５を用いて画素信号の読み出しを行う。この動作は、第１の実施形態の説明で記載した対数画素の読み出しと同様である。
【０１７８】
一方、制御部１５は、線形読出モードを実行する場合は、転送トランジスタ７２をオフにし続ける。この状態で、線形画素読出部７６を用いて画素信号の読み出しを行う。この動作は、第２の実施形態の説明で記載した線形画素の読み出しと同様である。
【０１７９】
以上、本実施形態によれば、ハイブリッド画素を用いたことにより画素領域を有効に活用できるため、同じ面積内により多くの画素を配置することができる。
【０１８０】
（変形例１）
図１７に示したハイブリッド画素２１Ｃの構成は一例であり、様々な変形が可能である。
例えば、図１７の対数画素読出部７５に、図８のバッファ回路４０とリセットトランジスタ３７を追加することも可能である。
【０１８１】
図１８に、図１７の対数画素読出部７５に、バッファ回路４０とリセットトランジスタ３７を追加した回路構成の例を示す。バッファ回路４０とリセットトランジスタ３７の構成及び動作は図８を用いて行った説明と同様である。また、バッファ回路４０とリセットトランジスタ３７を用いて行うＣＤＳ処理も、図８を用いて行った説明と同様である。
【０１８２】
（変形例２）
図１７の対数画素読出部７５に、図９のイベント検出部８０を追加することも可能である。
【０１８３】
図１９に、図１８の対数画素読出部７５にイベント検出部８０を追加した回路構成の例を示す。イベント検出部８０の構成及び動作は図９及び図１０を用いて行った説明と同様である。イベント検出部８０を図１７の対数画素読出部７５に追加することも可能である。
【０１８４】
（変形例３）
図２０は、図１６の固体撮像装置の動作例を示すフローチャートである。ここではハイブリッド画素２１Ｃの構成として、図１９のイベント検出部８０を備えた回路構成を用いる場合を想定する。
【０１８５】
制御部１５は、各ハイブリッド画素２１Ｃのイベント検出部８０を制御してイベントの検出有無を判定する（Ｓ３０１）。イベントの検出は、一例として、コントラストの変化を検出（例えば物体を検出）することに相当する。各ハイブリッド画素２１Ｃから検出信号を受信した場合は、各ハイブリッド画素２１Ｃにおいてイベントの検出有りを判定し、非検出信号を受信した場合あるいは検出信号を受信しない場合は、各ハイブリッド画素２１Ｃにおいてイベントの検出無しを判定する。
【０１８６】
全てのハイブリッド画素２１Ｃでイベントの検出無しと判定された場合（ＮＯ）、一定時間後に本ステップを再度繰り返す。イベントの検出有りと判定と判定されたハイブリッド画素２１Ｃが存在する場合（ＹＥＳ）、モード指示部２５からモードデータを読み出し（Ｓ３０２）。モードデータの値を確認する（Ｓ３０３）。
【０１８７】
モードデータの値が対数読出モードを示す場合は、イベントの検出有りと判定と判定されたハイブリッド画素２１Ｃについて、対数読出モードの処理を実行する（Ｓ３０４）。この処理は図１４のステップＳ２０３、Ｓ２０４と同様である。この際、リセットトランジスタ３７を用いてＣＤＳ処理を行ってもよいし、ＣＤＳ処理を行わずに、画素信号の読み出しを行う構成も可能である。また、ニューラルネットワークの各入力ノードに画素データを割り当てる際、イベントが検出されなかったハイブリッド画素については、前回と同じ画素データ（対数画素読出部７５から読み出した画素信号のデータ）を用いればよい。
【０１８８】
一方、モードデータの値が線形読出モードを示す場合は、イベントの検出有りと判定と判定されたハイブリッド画素２１Ｃについて、線形読出モードの処理を実行する（Ｓ３０５）。この処理は図１４のステップＳ２０５及び図１５のＳ２０６〜Ｓ２１４と同様である。なお、線形画素読出部７６からの読み出しにおいても、対数画素読出部７５と同様にＣＤＳ処理を行うことも可能である（このことは第２の実施形態でも同様である）。また、ニューラルネットワークの各入力ノードに画素データを割り当てる際、イベントが検出されなかったハイブリッド画素については、前回と同じ画素データ（線形画素読出部７６から読み出した画素信号のデータ）を用いればよい。なお、データ記憶部１８又は演算処理部１９の内部バッファには、線形読出モード及び対数読出モード別に、画素データを保存するものとする。本スローチャートの処理を一定時間毎に繰り返してもよい。
【０１８９】
図２１は、図１６の固体撮像装置の動作の他の変形例を示すフローチャートである。図２０のフローチャートのステップＳ３０４の後に、ステップＳ３０６、Ｓ３０７が追加されている。ステップＳ３０６では、ステップＳ３０４の対数読出モードによる画像認識の結果がモード切替条件を満たしたかを判断する。モード切替条件は、一例として所定のオブジェクトを検出することであるが、これに限られず、何でもよい。モード切替条件を満たしていない場合（ＮＯ）、本フローチャートの処理を終了する。モード切替条件を満たしている場合は、モード指示部２５のモードデータの値を線形読出モードを示すように変更する。モードデータの値を変更する主体は、ＣＰＵ１７でもよいし、外部の装置でもよいし、それ以外の装置でもよい。これにより次回以降は、線形読出しモードの処理（Ｓ３０５）が実行される。これにより、モード切替条件が満たされるまでは対数読出モードで低消費電力の画像認識を行い、モード切替条件が満たされた後は、線形読出モードに切り替えて高精度の画像認識を行うといったことが可能になる。
【０１９０】
図２０及び図２１のフローチャートと同様の処理は、第２の実施形態に係る固体撮像装置（図１１参照）でも実施可能である。例えば、予め対数画素２１Ａと線形画素２１Ｂとの対応づけを行っておき、対応付けの情報を、制御部１５の内部バッファ、又は制御部１５がアクセス可能な記憶部に格納しておく。制御部１５は、各対数画素２１Ａのイベント検出部８０を用いてイベント検出の判定を行う。イベントが検出された場合、モードデータの値を確認する。モードデータの値が対数読出モードを示すならば、対数画素２１Ａから読み出しを行う。モードデータの値が線形読出モードを示すならば、対数画素２１Ａに対応付けられた線形画素２１Ｂから読み出しを行う。それ以外の動作は本変形例３の説明と同様である。
【０１９１】
（電子機器の構成）
第１〜第３の固体撮像装置は、例えばスマートフォン、タブレット又は携帯電話などの撮像機能を有する移動体装置、デジタルスチルカメラやビデオカメラ等の撮像機器、監視カメラ又は車載カメラなど、様々な電子機器に用いることができる。
【０１９２】
図２２は、本技術に係る電子機器の構成の一例を示すブロック図である。図２２の電子機器１００は、レンズ群１０１等を含む光学系、撮像素子１０２、ＤＳＰ１０３、ＣＰＵ１０４、表示部１０５、ＤＳＰ１０６、操作部１０７、電源部１０８及びメモリ１１０等を有する。ＣＰＵ１０４及びＤＳＰ１０６により処理回路１１１が構成される。ＤＳＰ１０３、ＣＰＵ１０４、表示部１０５、ＤＳＰ１０６、操作部１０７、電源部１０８及びメモリ１１０がバス１０９を介して相互に接続されている。撮像素子１０２は一例として第１〜第３の実施形態に係る撮像素子１０に対応し、ＤＳＰ１０３は信号処理部１６に対応し、ＤＳＰ１０６は演算処理部１９に対応し、メモリ１１０はデータ記憶部１８に対応する。また、処理回路１１１は、一例として第１〜第３の実施形態に係る処理部２６に対応する。
【０１９３】
レンズ群１０１は、被写体からの入射光を取り込んで撮像素子１０２の撮像面上に結像する。撮像素子１０２は、レンズ群１０１によって撮像面上に結像された入射光の光量を画素単位で電気信号に変換して画素信号として出力する。
【０１９４】
表示部１０５は、液晶表示装置、有機ＥＬ（electro luminescence）表示装置等のパネル型表示装置である。撮像素子１０２で撮像された動画又は静止画を表示する。また表示部１０５は、第１〜第３の実施形態に係る固体撮像装置による画像認識の結果を表示する。
【０１９５】
操作部１０７は、ユーザによる操作の下に、電子機器１００が持つ様々な機能について操作指令を発する。電源部１０８は、ＤＳＰ１０３、メモリ１１０、表示部１０５、ＤＳＰ１０６、及び操作部１０７の動作電源となる各種の電源を、これら供給対象に対して適宜供給する。操作部１０７又はＣＰＵ１０４等から撮像素子１０２の入出力端子２４を介してモード指示部２５にモードデータを提供するように構成されてもよい。
【０１９６】
なお、上述の実施形態は本開示を具現化するための一例を示したものであり、その他の様々な形態で本開示を実施することが可能である。例えば、本開示の要旨を逸脱しない範囲で、種々の変形、置換、省略又はこれらの組み合わせが可能である。そのような変形、置換、省略等を行った形態も、本開示の範囲に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【０１９７】
また、本明細書に記載された本開示の効果は例示に過ぎず、その他の効果があってもよい。
【０１９８】
なお、本開示は以下のような構成を取ることもできる。
［１］光量に対して対数特性の電気信号を第１画素信号として生成する複数の第１画素を有する画素アレイ部と、
前記画素アレイ部から読み出された複数の前記第１画素信号に基づく複数の第１入力データと、複数の第１ノード間の結合の強さを対数で表した複数の対数重み係数とに基づいて、第１ニューラルネットワークの演算処理を行う処理部と、
を備えた固体撮像装置。
［２］前記第１画素信号は電圧値を表し、前記電圧値は、所定値を底とする電流値の対数に比例する関係にあり、
前記処理部は、前記第１画素信号の値に、前記所定値を真数に含む対数を乗じることにより、前記第１入力データを生成する
［１］に記載の固体撮像装置。
［３］前記所定値はネイピア数である
［２］に記載の固体撮像装置。
［４］前記所定値を真数に含む前記対数の底は２である
［２］又は［３］に記載の固体撮像装置。
［５］制御部を備え、
前記画素アレイ部は、前記複数の第１画素と異なる種類の複数の第２画素を有し、
前記制御部は、前記複数の第１画素から前記第１画素信号を読み出す第１読出処理と、前記複数の第２画素から複数の第２画素信号を読み出す第２読出処理とを選択的に実行し、
前記処理部は、前記第１読出処理が実行された場合に、前記第１ニューラルネットワークの前記演算処理を行い、
前記処理部は、前記第２読出処理が実行された場合に、複数の前記第２画素信号に基づく複数の第２入力データと、複数の第２ノード間の結合の強さを表す重み係数とに基づいて、第２ニューラルネットワークの演算処理を行う
［１］〜［４］のいずれか一項に記載の固体撮像装置。
［６］前記制御部は、前記第１読出処理及び前記第２読出処理のいずれかを指示する指示データに従って、前記第１読出処理及び前記第２読出処理のいずれかを選択する
［５］に記載の固体撮像装置。
［７］前記第２画素は、光量に対して線形特性の電気信号を前記第２画素信号として生成する画素である
［５］に記載の固体撮像装置。
［８］前記第２画素は、入射されるフォトン数のカウント値を前記第２画素信号として生成する画素である
［５］に記載の固体撮像装置。
［９］前記第２画素は、照射した光の反射光の前記光との位相差を表す電荷量を前記第２画素信号として生成する画素である
［５］に記載の固体撮像装置。
［１０］前記第１画素は、光電変換部と、前記光電変換部から対数特性の電気信号を前記画素信号として読み出す第１読出部と、前記光電変換部から線形特性の電気信号を第２画素信号として読み出す第２読出部とを含み、
前記制御部は、前記第１読出部を用いて前記第１画素信号を読み出す第１読出処理と、前記第２読出部を用いて前記第２画素信号を読み出す第２読出処理とを選択的に実行し、
前記処理部は、前記第１読出処理が実行された場合に、前記第１ニューラルネットワークの前記演算処理を行い、
前記処理部は、前記第２読出処理が実行された場合に、複数の前記第２画素信号に基づく複数の第２入力データと、複数の第２ノード間の結合の強さを表す重み係数とに基づいて、第２ニューラルネットワークの演算処理を行う
［１］〜［９］のいずれか一項に記載の固体撮像装置。
［１１］前記第１ニューラルネットワークの前記演算処理により、複数の前記第１画素信号が表す画像の画像認識を行う
［１］〜［１０］のいずれか一項に記載の固体撮像装置。
［１２］
光量に対して対数特性の電気信号を第１画素信号として生成する複数の第１画素を有する画素アレイ部を含む撮像素子と、
前記画素アレイ部から読み出された複数の前記第１画素信号に基づく複数の第１入力データと、複数の第１ノード間の結合の強さを対数で表した複数の対数重み係数とに基づいて、第１ニューラルネットワークの演算処理を行う処理回路と、
を備えた電子機器。
【符号の説明】
【０１９９】
１０：撮像素子、１１：画素アレイ部、１２：垂直駆動部、１３：カラム処理部、１４：水平駆動部、１５：制御部、１６：信号処理部、１７：ＣＰＵ、１８：データ記憶部、１９：演算処理部、２１：対数画素、２１Ａ：対数画素、２１Ｂ：線形画素、２１Ｃ：ハイブリッド画素、２２：画素駆動線、２３：垂直信号線、２４：入出力端子、２５：モード指示部、２６：処理部、３１、６１、７１：フォトダイオード、３２、３３、３４、３５、３６、３７、３８、３９、６２、６３、６４、６５、７２：ＭＯＳトランジスタ、Ｎ１、Ｎ２：接続ノード、Ｎ３：リセットノード、４０：バッファ回路、６６：ＦＤノード、４１：入力層、４２：中間層、４３：出力層、５１：セレクタ、５２：加算器、５３：減算器、５４：絶対値演算器、５５：べき乗演算器、５６：フリップフロップ回路、８０：イベント検出部、８１：減算器、８２：量子化器、８３、８４：コンデンサ、８５：インバータ、８６：スイッチ、８７：コンパレータ、１００：電子機器、１０１：レンズ群、１０２：撮像素子、１０３、１０６：ＤＳＰ、１０４：ＣＰＵ、１０５：表示部、１０７：操作部、１０８：電源部、１０９：バス、１１０：メモリ、Ａ１〜Ａｑ：入力ノード（入力ユニット）、Ｂ１〜Ｂｊ：中間ノード（演算ユニット）、Ｃ１〜Ｃｎ：出力ノード（演算ユニット）
【図１】
2020188386.tif 000010
【図２】
2020188386.tif 000011
【図３】
2020188386.tif 000012
【図４】
2020188386.tif 000013
【図５】
2020188386.tif 000014
【図６】
2020188386.tif 000015
【図７】
2020188386.tif 000016
【図８】
2020188386.tif 000017
【図９】
2020188386.tif 000018
【図１０】
2020188386.tif 000019
【図１１】
2020188386.tif 000020
【図１２】
2020188386.tif 000021
【図１３】
2020188386.tif 000022
【図１４】
2020188386.tif 000023
【図１５】
2020188386.tif 000024
【図１６】
2020188386.tif 000025
【図１７】
2020188386.tif 000026
【図１８】
2020188386.tif 000027
【図１９】
2020188386.tif 000028
【図２０】
2020188386.tif 000029
【図２１】
2020188386.tif 000030
【図２２】
2020188386.tif 000031