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

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

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

<>
  • 特開-演算装置、演算方法 図1
  • 特開-演算装置、演算方法 図2
  • 特開-演算装置、演算方法 図3
  • 特開-演算装置、演算方法 図4
  • 特開-演算装置、演算方法 図5
  • 特開-演算装置、演算方法 図6
  • 特開-演算装置、演算方法 図7
  • 特開-演算装置、演算方法 図8
  • 特開-演算装置、演算方法 図9
  • 特開-演算装置、演算方法 図10
  • 特開-演算装置、演算方法 図11
  • 特開-演算装置、演算方法 図12
  • 特開-演算装置、演算方法 図13
  • 特開-演算装置、演算方法 図14
  • 特開-演算装置、演算方法 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024172950
(43)【公開日】2024-12-12
(54)【発明の名称】演算装置、演算方法
(51)【国際特許分類】
   G06N 3/08 20230101AFI20241205BHJP
【FI】
G06N3/08
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2023091032
(22)【出願日】2023-06-01
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】美馬 和大
(72)【発明者】
【氏名】吉永 幹
(57)【要約】
【課題】 ニューラルネットワークの演算とオンライン学習とを並列に実行可能な技術を提供すること。
【解決手段】 ニューラルネットワークのオンライン学習において更新対象ではない第1係数を用いて、該ニューラルネットワークの演算を行って第1特徴を取得する(第1処理)。第1特徴と、オンライン学習において更新対象となる第2係数と、を用いてニューラルネットワークの演算を行って第2特徴を取得する。第2係数と過去に取得した第2特徴とを用いてオンライン学習を行うことで該第2係数を更新する。第1処理と更新とは並列に実行される。
【選択図】 図5
【特許請求の範囲】
【請求項1】
ニューラルネットワークのオンライン学習において更新対象ではない第1係数を用いて、該ニューラルネットワークの演算を行って第1特徴を取得する第1処理手段と、
前記第1特徴と、前記オンライン学習において更新対象となる第2係数と、を用いて前記ニューラルネットワークの演算を行って第2特徴を取得する第2処理手段と、
前記第2係数と、前記第2処理手段が過去に取得した第2特徴と、を用いて前記オンライン学習を行うことで該第2係数を更新する更新手段と
を備え、
前記第1処理手段による処理と前記更新手段による処理とは並列に実行される
ことを特徴とする演算装置。
【請求項2】
前記第1処理手段は、フレームと前記第1係数とを用いて該フレームの第1特徴を取得し、
前記第2処理手段は、前記フレームの第1特徴と、前記第2係数と、を用いて前記フレームの第2特徴を取得する
ことを特徴とする請求項1に記載の演算装置。
【請求項3】
前記第1処理手段は、第2フレームの第1特徴を取得し、
前記更新手段は、前記第2係数と、前記第2フレームよりも過去に入力された第1フレームの第2特徴と、を用いて前記オンライン学習を行うことで該第2係数を更新し、
前記第2処理手段は、前記第2フレームの第1特徴と、前記更新手段により更新された第2係数と、を用いて前記第2フレームの第2特徴を取得する
ことを特徴とする請求項2に記載の演算装置。
【請求項4】
さらに、
前記第1係数を保持する第1メモリと、
前記第2係数を保持する第2メモリと
を備え、
前記第1処理手段は、前記第1特徴を前記第1メモリに格納し、
前記第2処理手段は、前記第2特徴を前記第2メモリに格納する
ことを特徴とする請求項1に記載の演算装置。
【請求項5】
さらに、
前記第2特徴と、前記ニューラルネットワークにおける第3係数と、を用いて前記ニューラルネットワークの演算を行って第3特徴を取得する第3処理手段を備えることを特徴とする請求項1に記載の演算装置。
【請求項6】
ニューラルネットワークのオンライン学習において更新対象ではない第1係数を用いて、該ニューラルネットワークの演算を行って第1特徴を取得する第1処理手段と、
前記第1特徴と、前記オンライン学習において更新対象となる第2係数と、を用いて前記ニューラルネットワークの演算を行って第2特徴を取得する第2処理手段と、
前記第2特徴と、前記ニューラルネットワークにおける第3係数と、を用いて前記ニューラルネットワークの演算を行って第3特徴を取得する第3処理手段と、
前記第2係数と前記第1特徴とに基づいて前記オンライン学習を行うことで該第2係数を更新する更新手段と
を備え、
前記第3処理手段による処理と前記更新手段による処理とは並列に実行される
ことを特徴とする演算装置。
【請求項7】
前記更新手段は、
前記第2係数と前記第1特徴とを用いて前記第2処理手段による演算と等価の演算を行って得られる特徴と、該第2係数と、を用いて該第2係数を更新する
ことを特徴とする請求項6に記載の演算装置。
【請求項8】
前記演算装置は組み込み機器であることを特徴とする請求項1に記載の演算装置。
【請求項9】
演算装置による演算方法であって、
前記演算装置の第1処理手段が、ニューラルネットワークのオンライン学習において更新対象ではない第1係数を用いて、該ニューラルネットワークの演算を行って第1特徴を取得する第1処理工程と、
前記演算装置の第2処理手段が、前記第1特徴と、前記オンライン学習において更新対象となる第2係数と、を用いて前記ニューラルネットワークの演算を行って第2特徴を取得する第2処理工程と、
前記演算装置の更新手段が、前記第2係数と、前記第2処理工程で過去に取得した第2特徴と、を用いて前記オンライン学習を行うことで該第2係数を更新する更新工程と
を備え、
前記第1処理工程と前記更新工程とは並列に実行される
ことを特徴とする演算方法。
【請求項10】
演算装置による演算方法であって、
前記演算装置の第1処理手段が、ニューラルネットワークのオンライン学習において更新対象ではない第1係数を用いて、該ニューラルネットワークの演算を行って第1特徴を取得する第1処理工程と、
前記演算装置の第2処理手段が、前記第1特徴と、前記オンライン学習において更新対象となる第2係数と、を用いて前記ニューラルネットワークの演算を行って第2特徴を取得する第2処理工程と、
前記演算装置の第3処理手段が、前記第2特徴と、前記ニューラルネットワークにおける第3係数と、を用いて前記ニューラルネットワークの演算を行って第3特徴を取得する第3処理工程と、
前記演算装置の更新手段が、前記第2係数と前記第1特徴とに基づいて前記オンライン学習を行うことで該第2係数を更新する更新工程と
を備え、
前記第3処理工程と前記更新工程とは並列に実行される
ことを特徴とする演算方法。
【請求項11】
コンピュータを、請求項1ないし8のいずれか1項に記載の演算装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークの演算とオンライン学習を実行するための技術に関する。
【背景技術】
【0002】
画像中の物体を検出する手法として、ニューラルネットワークを用いた物体検出処理がある。また、動画像において、ある時刻の画像(フレーム)中の検出された物体を、以降その物体が動画像中に存在する間検出し続ける技術である、物体追跡を必要とするシステムがある。検出された追跡対象の物体は、同じ種類の物体でも撮影環境や、物体そのものにより特徴が少しずつ異なる。特徴の差異が物体追跡の精度低下を招く場合がある。
【0003】
物体追跡の精度向上のために、オンライン学習が用いられる。非特許文献1では、ニューラルネットワークを用いた物体追跡の手法が開示されている。オンライン学習は、ニューラルネットワークによる推論結果を用いて、その重み係数の一部を更新する処理である。
【0004】
一方、デジタルカメラなどの組み込み撮像機器は、限られた演算性能とメモリ容量で必要とされる処理を実現しなければならない。特許文献1に開示の演算装置は、畳み込み演算部とCPU(Central Processing Unit)によってニューラルネットワーク演算とその後の後処理を効率的に実行している。これに加えて、オンライン学習処理を加えた場合においても、ニューラルネットワーク演算の性能低下を抑制しつつオンライン学習処理を実行できる演算装置が要望される。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2021-9566号公報
【非特許文献】
【0006】
【非特許文献1】“Discriminative and Robust Online Learning for Siamese Visual Tracking”, J. Zhou et al., Vol 34 No 07: AAAI-20 Technical Tracks 7(2020)
【発明の概要】
【発明が解決しようとする課題】
【0007】
オンライン学習では、ニューラルネットワークの重み係数を更新するために推論結果を利用する。したがって、オンライン学習では、推論の結果を取得後、該結果を利用してニューラルネットワークの重み係数の更新処理を実行しなければならない。この場合、1フレームあたりの処理時間は、推論時間とオンライン学習の処理時間の総和となる。オンライン学習を適用することで、適用しない場合と比較して1フレームあたりの処理時間が増加し、物体追跡のフレームレートが悪化する。よって、処理時間の増大を抑制しつつ推論とオンライン学習を実行可能な演算技術が望まれる。本発明は、ニューラルネットワークの演算とオンライン学習とを並列に実行可能な技術を提供する。
【課題を解決するための手段】
【0008】
本発明の一様態は、ニューラルネットワークのオンライン学習において更新対象ではない第1係数を用いて、該ニューラルネットワークの演算を行って第1特徴を取得する第1処理手段と、前記第1特徴と、前記オンライン学習において更新対象となる第2係数と、を用いて前記ニューラルネットワークの演算を行って第2特徴を取得する第2処理手段と、前記第2係数と、前記第2処理手段が過去に取得した第2特徴と、を用いて前記オンライン学習を行うことで該第2係数を更新する更新手段とを備え、前記第1処理手段による処理と前記更新手段による処理とは並列に実行されることを特徴とする。
【発明の効果】
【0009】
本発明によれば、ニューラルネットワークの演算とオンライン学習とを並列に実行可能な技術を提供することができる。
【図面の簡単な説明】
【0010】
図1】ニューラルネットワークの演算とオンライン学習の概要を示すブロック図。
図2】ニューラルネットワークタスクとオンライン学習タスクを実行するための従来の演算装置の構成例を示すブロック図。
図3】ニューラルネットワークタスクおよびオンライン学習タスクを実行する場合におけるCPU203およびCNN処理部201のそれぞれの動作の一例を示す図。
図4】演算装置の構成例を示すブロック図。
図5】CNN処理部401およびCPU403により実行される処理構成を示すブロック図。
図6】メモリ402およびメモリ406に格納するデータを示す図。
図7】演算装置により実行されるニューラルネットワークタスクおよびオンライン学習タスクを説明するための図。
図8】CPU403の動作を示すフローチャート。
図9】CNN処理部401およびCPU403により実行される処理構成を示すブロック図。
図10】メモリ402およびメモリ406に格納するデータを示す図。
図11】演算装置により実行されるニューラルネットワークタスクおよびオンライン学習タスクを説明するための図。
図12】CNN処理部401およびCPU403により実行される処理構成を示すブロック図。
図13】メモリ402およびメモリ406に格納するデータを示す図。
図14】演算装置により実行されるニューラルネットワークタスクおよびオンライン学習タスクを説明するための図。
図15】CPU403の動作を示すフローチャート。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0012】
[第1の実施形態]
本実施形態の要点を明確にするために、一般的な演算装置によるニューラルネットワークの演算とオンライン学習の実行方法について説明し、その後、本実施形態について説明する。
【0013】
ニューラルネットワークの演算とオンライン学習の概要を図1のブロック図に示す。ニューラルネットワークタスク102では、画像101と、ニューラルネットワークの係数104と、を用いて該ニューラルネットワークの演算(ニューラルネットワーク演算)を行って特徴103を生成する、または係数104と前回のニューラルネットワーク演算で生成された特徴103とを用いてニューラルネットワーク演算を行って新たな特徴103を生成する。ニューラルネットワークには、たとえば、畳み込みニューラルネットワーク(Convolutional Neural Network、以下CNNと称する)などの階層型ニューラルネットワークを適用することができる。
【0014】
一方、オンライン学習タスク105では、ニューラルネットワークタスク102で生成された特徴103の一部106を用いて、その特徴の生成に利用した係数104の一部107を更新する。
【0015】
オンライン学習タスク105では、ニューラルネットワークタスク102が参照する係数104と、該ニューラルネットワークタスク102によって生成される特徴103と、を利用する。然るに、オンライン学習タスク105は、ニューラルネットワークタスク102の完了後に実行する必要がある。
【0016】
ニューラルネットワークタスクとオンライン学習タスクを実行するための従来の演算装置の構成例について、図2のブロック図を用いて説明する。メモリ202には、ニューラルネットワークタスクやオンライン学習タスクで用いられる画像、係数、特徴が格納される。
【0017】
CNN処理部201は、メモリ202から画像と係数を読み出し、該読み出した画像と係数とを用いた畳み込み演算を行うことで特徴を生成し、該生成した特徴をメモリ202に格納する。
【0018】
CPU203は、メモリ202から学習対象の係数とそれに関連する特徴とを読み出し、該読み出した係数および特徴を用いてオンライン学習を実行することで該係数を更新し、該更新した係数をメモリ202に格納する。
【0019】
メモリ202は同時に1つのアクセス要求を受け付けるシングルポートメモリである。メモリ202へのアクセスは、不図示の選択機能によりCNN処理部201またはCPU203のアクセス要求を選択してメモリ202へ伝達される。
【0020】
CPU203は、CNN処理部201の動作開始を示す開始信号204をCNN処理部201へ通知する。開始信号204は、不図示のシステムバスに接続されている開始制御レジスタにCPU203から開始を示す値を書き込むことで発生させる。CNN処理部201は、該開始信号204の通知を受けるとニューラルネットワークタスク102を実行する。CNN処理部201は、ニューラルネットワークタスク102が完了すると、該ニューラルネットワークタスク102が完了したことを示す割り込み信号205をCPU203へ通知する。
【0021】
CPU203は、割り込み信号205の通知を受けるとオンライン学習タスク105を実行する。そしてCPU203は、オンライン学習タスク105が完了すると、上記の開始信号204をCNN処理部201へ通知する。
【0022】
このように、割り込み信号205と開始信号204によって、CPU203とCNN処理部201との間で処理タイミングの協調制御を行う。次に、このような従来の演算装置におけるCNN処理部201およびCPU203のそれぞれの実行タイミング、メモリ202へのアクセスに相当するメモリ活性状態について、図3を用いて説明する。
【0023】
図3は、フレーム1、該フレーム1に後続するフレーム2、のそれぞれ対してニューラルネットワークタスクおよびオンライン学習タスクを実行する場合におけるCPU203およびCNN処理部201のそれぞれの動作の一例を示している。フレーム1およびフレーム2のいずれに対しても、同様のニューラルネットワークタスクおよびオンライン学習タスクを実行する。
【0024】
CPU203はCNN処理部201に対して、該CNN処理部201の動作開始を示す開始信号204を通知する。CNN処理部201は、開始信号204を検出すると、フレーム1のニューラルネットワークタスク102の実行を開始する。ニューラルネットワークタスク102実行中のメモリ活性状態308は、ニューラルネットワークタスク102の実行に必要な画像101(フレーム1)および係数104のメモリ202からの読み出し、ニューラルネットワークタスク102の実行により生成される特徴103のメモリ202への書き込み、を含む。ニューラルネットワークタスク102が完了すると、CNN処理部201はCPU203に対して割り込み信号205を通知する。CPU203は、割り込み信号205を検出すると、フレーム1のオンライン学習タスク105の実行を開始する。オンライン学習タスク105実行中のメモリ活性状態309は、オンライン学習タスク105の実行に必要な一部106及び一部107のメモリ202からの読み出し、オンライン学習タスク105により更新した一部107のメモリ202への書き込み、を含む。オンライン学習タスク105が完了すると、CPU203はCNN処理部201に対して開始信号を通知する。CNN処理部201は、該開始信号を検出すると、フレーム2のニューラルネットワークタスク102の実行を開始する。フレーム2のニューラルネットワークタスク102では、フレーム1のオンライン学習タスク105で更新された係数を用いる。
【0025】
ニューラルネットワークタスクに利用する係数をオンライン学習によって更新することで、推論精度の向上が期待できる。しかしながら、ニューラルネットワークタスクの実行後にオンライン学習タスクを実行する図3の方式の場合、1フレームあたりの処理時間がオンライン学習の処理時間分増加し、フレームレートの低下を招くおそれがある。
【0026】
フレームレート低下を抑制するために、演算装置の動作周波数を高くすることが考えられる。しかし、演算装置の動作周波数を高くすると、消費電力を増大させることになり、その場合、バッテリ駆動の組み込み機器(撮像機器など)の場合、稼働時間の低下が懸念される。
【0027】
本実施形態では、ニューラルネットワークタスクとオンライン学習タスクを部分的に重複させて並列に実行することで、1フレームあたりの処理時間を抑制する。しかし、ここまでに説明した一般的な演算装置を用いてニューラルネットワークタスクとオンライン学習タスクを部分的に重複させて並列に実行する場合、次に示す課題が生じる。まず、メモリ202に対して、ニューラルネットワークタスクを処理するCNN処理部201からのアクセスとオンライン学習タスクを実行するCPU203からのアクセスとが同時に発生することがある。メモリ202はシングルポート構成のため、調停機能によって一方のアクセスを処理し、他方のアクセスを待機させる必要がある。この待機時間が生じることによって、CNN処理部201とCPU203による並列実行を妨げることがある。これを解決する方法の一つとして、メモリ202をシングルポートからCNN処理部201とCPU203それぞれの専用のアクセスポートを持つデュアルポートメモリにすることが考えられる。これにより、CNN処理部201とCPU203がメモリ202に同時にアクセスすることができるため、同時アクセスによる待機時間を抑制することができる。しかしながら、オンライン学習タスクでは、同一フレームのニューラルネットワークタスクにより得られる特徴をメモリ202から読み出し、係数の更新を行う必要がある。このようにCNN処理部201とCPU203のように複数の処理部で共有するデータには、データアクセスの排他制御を行う必要がある。この排他制御には、CPU203により実行されるソフトウェアや専用のハードウェアによる管理がなされることがあり、排他制御にはCPU203の処理負荷やハードウェアリソース増加のおそれが考えられる。
【0028】
ここまでの説明のとおり、一般的な演算装置を利用してニューラルネットワークタスクとオンライン学習タスクとを逐次実行することは可能であるが、並列実行は困難である。ニューラルネットワークタスクとオンライン学習タスクとを並列実行するためには、メモリアクセス競合を抑制するためのメモリ構成、データ配置およびオンライン学習タスクの実行タイミングの制御方法を工夫する必要がある。
【0029】
本実施形態に係る演算装置の構成例について、図4のブロック図を用いて説明する。CNN処理部401は、メモリ402およびメモリ406の両方にアクセス(データの読み書き)可能であり、メモリ402やメモリ406に格納されているデータを用いてニューラルネットワークタスクを実行する。
【0030】
CPU403は、メモリ402にはアクセス(データの読み書き)できず、メモリ406にアクセス(データの読み書き)可能であり、メモリ406に格納されているデータを用いてオンライン学習タスクを実行する。
【0031】
CPU403はCNN処理部401に対して、該CNN処理部401の動作開始を示す開始信号404を通知する。開始信号404は、不図示のシステムバスに接続されている開始制御レジスタにCPU403から開始を示す値を書き込むことで発生させる。CNN処理部401は、開始信号404を検出すると、ニューラルネットワークタスクの実行を開始する。ニューラルネットワークタスクが完了すると、CNN処理部401はCPU403に対して割り込み信号405を通知する。このようにして、割り込み信号405と開始信号404によって、CPU403とCNN処理部401との間で処理タイミングの協調制御を行う。
【0032】
メモリ402は、CNN処理部401が占有できるメモリであり、メモリ406はCNN処理部401とCPU403が共有するメモリである。メモリ402およびメモリ406は、1つのアクセス要求(メモリ内のデータを読み出す読み出し要求/メモリにデータを書き込む書き込み要求)を受け付けるシングルポートメモリである。メモリ406へのアクセスは、不図示の選択機能によりCNN処理部401またはCPU403からのアクセス要求を選択してメモリ406へ伝達される。
【0033】
次に、CNN処理部401およびCPU403により実行される処理構成について、図5のブロック図を用いて説明する。本実施形態では、CNN処理部401が実行するニューラルネットワークタスクは、オフライン層タスク502、オンライン層タスク506、の2つのタスクに分けられており、この順で実行される。
【0034】
オフライン層タスク502は、ニューラルネットワークタスクの中で「オンライン学習タスク505によって更新されないニューラルネットワークの係数を利用するニューラルネットワークタスク」であり、静的ネットワーク演算タスクである。この場合、オフライン層タスク502では、画像501と、オンライン学習タスク505によって更新されないニューラルネットワークの第1係数504と、を用いて該ニューラルネットワークの演算(ニューラルネットワーク演算)を行って第1特徴503を生成する。
【0035】
オンライン層タスク506は、ニューラルネットワークタスクの中で「オンライン学習タスク505によって更新されるニューラルネットワークの係数(更新対象)を利用するニューラルネットワークタスク」であり、動的ネットワーク演算タスクである。この場合、オンライン層タスク506では、オフライン層タスク502で生成された第1特徴503と、オンライン学習タスク505によって更新されるニューラルネットワークの第2係数508と、を用いて該ニューラルネットワークの演算(ニューラルネットワーク演算)を行って第2特徴507を生成する。
【0036】
一方、CPU403はオンライン学習タスク505を実行する。オンライン層タスク506では、CPU403は、CNN処理部401がニューラルネットワークタスク(オフライン層タスク502およびオンライン層タスク506)を実行することで生成された第2特徴507を利用して第2係数508を更新する。
【0037】
ニューラルネットワークタスクをオフライン層タスクとオンライン層タスクに分割することは、以下に示す2つの優位点がある。第1に、オンライン学習タスクに関連する係数および特徴と、それ以外の係数および特徴に明示的に分割する。これにより、以降で述べる、メモリにおけるデータ配置方法によって、ニューラルネットワークタスクとオンライン学習タスクを一部並列に動作させるときのメモリアクセス競合を抑制することができる。
【0038】
第2に、ニューラルネットワークタスクを分割することで、オンライン学習タスクによる係数更新と、更新される係数を利用するニューラルネットワーク演算と、が同時に実行されることがないように容易に管理できることである。
【0039】
CPU403によるオンライン学習タスクを、CNN処理部401によるオフライン層タスク実行中に処理すると、CNN処理部401によるニューラルネットワークタスクとCPU403によるオンライン学習タスクとを、メモリアクセス競合による性能低下を抑制しつつ並列に実行させることが可能となる。
【0040】
次に、上記のメモリ402およびメモリ406に格納するデータについて、図6を用いて説明する。メモリ406は、CNN処理部401とCPU403の両方からアクセス可能なメモリであるため、メモリ406には、ニューラルネットワークタスクとオンライン学習タスクとで共有するデータ(第2係数508、第2特徴507)が格納される。
【0041】
一方、メモリ402は、CNN処理部401が占有できるメモリであるため、メモリ402には、CNN処理部401のみが利用するデータ(画像501、第1係数504、第1特徴503)が格納される。
【0042】
このような構成における、本実施形態に係る演算装置により実行されるニューラルネットワークタスクおよびオンライン学習タスクについて、図7を用いて説明する。図7(a)には、1枚目の入力画像である第1フレームに対する処理期間(第1フレーム期間701)におけるCNN処理部401、CPU403、メモリ402、メモリ406、の動作状況を示している。
【0043】
図7(a)に示す如く、第1フレームが入力されたタイミングなど、第1フレームに対する処理を開始するタイミングにおいて、CPU403はCNN処理部401に対して開始信号404を通知する。
【0044】
CNN処理部401は、該開始信号404を検出すると、オフライン層タスク502を実行する。オフライン層タスク502の実行において、CNN処理部401は先ず、メモリ402から画像501(第1フレーム)および第1係数504を読み出す。そしてCNN処理部401は、該読み出した第1フレームおよび第1係数504を用いてニューラルネットワーク演算を行って第1フレームの第1特徴503を生成し、該第1フレームの第1特徴503をメモリ402に格納する。メモリ402の活性状態707は、メモリ402からの第1フレームおよび第1係数504の読み出し、メモリ402への第1特徴503の格納、のためのメモリ402へのアクセスの期間を示している。
【0045】
CNN処理部401は、オフライン層タスク502が完了すると、続いてオンライン層タスク506を実行する。オンライン層タスク506の実行において、CNN処理部401は先ず、オフライン層タスク502によってメモリ402に格納された第1フレームの第1特徴503を該メモリ402から読み出すと共に、メモリ406に保持されている第2係数508を該メモリ406から読み出す。そしてCNN処理部401は、第1フレームの第1特徴503および第2係数508を用いてニューラルネットワーク演算を行って第1フレームの第2特徴507を生成し、該第1フレームの第2特徴507をメモリ406に格納する。メモリ402の活性状態708は、メモリ402からの第1特徴503の読み出しのためのメモリ402へのアクセスの期間を示している。メモリ406の活性状態709は、メモリ406からの第2係数508の読み出し、メモリ406への第2特徴507の格納、のためのメモリ406へのアクセスの期間を示している。CNN処理部401は、オンライン層タスク506が完了すると、CPU403に対して割り込み信号405を通知する。
【0046】
図7(b)は、図7(a)で示した第1フレームに対するニューラルネットワークタスクの後、該第1フレームに後続する第2フレームに対する処理期間(第2フレーム期間711)におけるCNN処理部401、CPU403、メモリ402、メモリ406、の動作状況を示している。
【0047】
CPU403は、上記の割り込み信号405をCNN処理部401から受けると、オンライン学習タスク505を実行する。この時点でメモリ406には、第2係数508、第1フレーム(過去のフレーム)の第2特徴507、が格納されている。よってオンライン学習タスク105の実行において、CPU403は、メモリ406から第2係数508と第1フレームの第2特徴507とを読み出し、該第1フレームの第2特徴507を用いて該第2係数508を更新する。そしてCPU403は、メモリ406に格納されている第2係数に対し、該更新した第2係数508を上書きして格納する。
【0048】
また、CPU403は、上記の割り込み信号405をCNN処理部401から受けると、CNN処理部401に対して開始信号404を通知する。CNN処理部401は、CPU403からの該開始信号404を検出すると、オフライン層タスク502を実行する。オフライン層タスク502の実行において、CNN処理部401は、メモリ402から画像501(第2フレーム)および第1係数504を読み出す。そしてCNN処理部401は、該読み出した第2フレームおよび第1係数504を用いてニューラルネットワーク演算を行って第2フレームの第1特徴503を生成し、該第2フレームの第1特徴503をメモリ402に格納する。
【0049】
つまり、本実施形態では、CPU403によるオンライン学習タスク505と、CNN処理部401によるオフライン層タスク502と、が並列に実行される。メモリ402の活性状態717は、メモリ402からの第2フレームおよび第1係数504の読み出し、メモリ402への第1特徴503の格納、のためのメモリ402へのアクセスの期間を示している。
【0050】
メモリ406の活性状態720は、メモリ406からの第2係数508および第1フレームの第2特徴507の読み出し、メモリ406への第2係数の格納、のためのメモリ406へのアクセスの期間を示している。
【0051】
CNN処理部401は、オフライン層タスク502が完了すると、続いてオンライン層タスク506を実行する。オンライン層タスク506の実行において、CNN処理部401は、オフライン層タスク502にてメモリ402に格納された第2フレームの第1特徴503を該メモリ402から読み出すと共に、オンライン学習タスク505によって更新された第2係数508をメモリ406から読み出す。そしてCNN処理部401は、該読み出した第1特徴503および第2係数508を用いてニューラルネットワーク演算を行って第2フレームの第2特徴507を生成し、該第2フレームの第2特徴507をメモリ406に格納する。
【0052】
メモリ402の活性状態718は、メモリ402からの第1特徴503の読み出しのためのメモリ402へのアクセスの期間を示している。メモリ406の活性状態719は、メモリ406からの第2係数508の読み出し、メモリ406への第2フレームの第2特徴507の格納、のためのメモリ406へのアクセスの期間を示している。CNN処理部401はオンライン層タスク506が完了すると、CPU403に対して割り込み信号405を通知する。
【0053】
このように、CNN処理部401によるオフライン層タスクとCPU403によるオンライン学習タスクが並列に動作している期間では、CNN処理部401はメモリ402にアクセスしており、CPU403はメモリ406にアクセスしている。そのため、CNN処理部401とCPU403のメモリアクセス競合が抑制され、CNN処理部401のメモリアクセス待ちによる性能低下を抑制しつつ、CPU403がオンライン学習タスクを並列に実行可能になる。
【0054】
CPU403の動作について、図8のフローチャートに従って説明する。先ずは、CPU403のメイン処理の処理ステップであるステップS801について、図8(a)のフローチャートに従って説明する。
【0055】
ステップS802では、CPU403は、フレームの開始条件が満たされたか否かを判断する。たとえば、CPU403は、ニューラルネットワークタスクの対象となる画像(フレーム)がメモリ402に格納された場合に、「フレームの開始条件」が満たされた、と判断しても良い。
【0056】
このような判断の結果、フレームの開始条件が満たされた場合には、処理はステップS803に進み、フレームの開始条件が満たされていない場合には、処理はステップS802で待機する。
【0057】
ステップS803では、CPU403は、CNN処理部401に対して動作の開始を指示するべく、該CNN処理部401に対して開始信号を通知する。開始信号を検出したCNN処理部401は上記の通り、オフライン層タスクおよびオンライン層タスクを実行する。
【0058】
ステップS804では、CPU403は、現在処理対象としている画像が1フレーム目の画像であるか否かを判断する。この判断の結果、現在処理対象としている画像が1フレーム目の画像である場合には、処理はステップS807に進み、現在処理対象としている画像が2フレーム目以降の画像である場合には、処理はステップS805に進む。
【0059】
ステップS805では、CPU403は、CNN処理部401からの割り込み信号を検出したか否かを判断する。この判断の結果、CNN処理部401からの割り込み信号を検出した場合には、処理はステップS806に進み、CNN処理部401からの割り込み信号を検出していない場合には、処理はステップS805で待機する。
【0060】
ステップS806では、CPU403は、オンライン学習タスクを実行する。ステップS806の詳細については後述する。ステップS807では、CPU403は、メイン処理の終了条件が満たされたか否かを判断する。たとえば、CPU403は、演算装置を搭載する上位システムからの終了指示がある場合、メイン処理の終了条件が満たされたと判断する。
【0061】
このような判断の結果、メイン処理の終了条件が満たされた場合には、ステップS801の処理は終了し、メイン処理の終了条件が満たされていない場合には、処理はステップS802に進む。
【0062】
次に、上記のステップS806における処理の詳細について、図8(b)のフローチャートに従って説明する。ステップS8062では、CPU403は、メモリ406から第2係数508と第2特徴507とを読み出す。そしてステップS8063では、CPU403は、第2特徴507を用いて第2係数508を更新する。より詳しくは、CPU403は、検出対象の検出位置の第2特徴507がより活性化し、未検出位置の第2特徴507がより非活性化するように第2係数508を更新する。検出対象の検出位置と未検出位置は、第2特徴507のうち予め定められた閾値を超えるものを検出位置、閾値以下のものを未検出位置と定めたり、CNN処理部401や他の演算装置から取得した検出位置を用いてもよい。そしてステップS8064では、CPU403は、メモリ406に格納されている第2係数508に対し、該更新した第2係数508を上書きして格納する。
【0063】
なお、本実施形態において第2フレームとして説明した画像は、3フレーム目以降の画像であっても良く、その場合、第2フレームに係る処理の説明において「第1フレーム」は「第2フレームの直前に入力されたフレーム」とすれば良い。
【0064】
[第2の実施形態]
本実施形態では、第1の実施形態との差分について説明し、以下で特に触れない限りは、第1の実施形態と同様であるものとする。第1の実施形態では、オンライン層タスクで生成される特徴は、CNN処理部で参照されるニューラルネットワークタスクの構成とはなっていない。本実施形態では、オンライン層タスクで生成される特徴が、直後の新たなオフライン層タスクで参照される場合のニューラルネットワークタスクとオンライン学習タスクの並列実行について説明する。先ず、CNN処理部401およびCPU403により実行される処理構成について、図9のブロック図を用いて説明する。
【0065】
CNN処理部401が実行するニューラルネットワークタスクは、オフライン層タスク902、オンライン層タスク906、オフライン層タスク911、の3つのタスクに分けられており、この順で実行される。
【0066】
オフライン層タスク902はオフライン層タスク502と同様のタスクである。オフライン層タスク902では、画像901と、オンライン学習タスク905によって更新されないニューラルネットワークの第1係数904と、を用いて該ニューラルネットワークの演算(ニューラルネットワーク演算)を行って第1特徴903を生成する。
【0067】
オンライン層タスク906はオンライン層タスク506と同様のタスクである。オンライン層タスク906では、オフライン層タスク902で生成された第1特徴903と、オンライン学習タスク905によって更新されるニューラルネットワークの第2係数908と、を用いて該ニューラルネットワークの演算(ニューラルネットワーク演算)を行って第2特徴907を生成する。
【0068】
オフライン層タスク911は、第2特徴907と、ニューラルネットワークの第3係数910と、を用いて該ニューラルネットワークの演算(ニューラルネットワーク演算)を行って第3特徴909を生成する。
【0069】
一方、CPU403はオンライン学習タスク905を実行する。これによりCPU403は、CNN処理部401により生成された第2特徴907を利用して第2係数908を更新する。更新された第2係数908は、CNN処理部401が次のフレームについてニューラルネットワーク演算を行う際に利用される。
【0070】
このようなタスク構成において、第2特徴907はCNN処理部401とCPU403の双方から参照される。この場合でも、CNN処理部401がニューラルネットワークタスクを実行中にCPU403がオンライン学習タスクを並列実行可能であることを示す。
【0071】
次に、メモリ402およびメモリ406に格納するデータについて、図10を用いて説明する。メモリ406には第1の実施形態と同様、ニューラルネットワークタスクとオンライン学習タスクで共有するデータ(第2係数908、第2特徴907)が格納される。一方、メモリ402には、CNN処理部401のみが利用するデータ(画像901、第1係数904、第1特徴903、第3係数910、第3特徴909)が格納される。
【0072】
このような構成における、本実施形態に係る演算装置により実行されるニューラルネットワークタスクおよびオンライン学習タスクについて、図11を用いて説明する。図11には、第1フレームに対する処理期間(第1フレーム期間1101)におけるCNN処理部401、CPU403、メモリ402、メモリ406、の動作状況、第2フレームに対する処理期間(第2フレーム期間1121)におけるCNN処理部401、CPU403、メモリ402、メモリ406、の動作状況を示している。
【0073】
第1フレームが入力されたタイミングなど、第1フレームに対する処理を開始するタイミングにおいて、CPU403はCNN処理部401に対して開始信号404を通知する。
【0074】
CNN処理部401は、該開始信号404を検出すると、オフライン層タスク902を実行する。オフライン層タスク902の実行において、CNN処理部401は先ず、メモリ402から画像901(第1フレーム)および第1係数904を読み出す。そしてCNN処理部401は、該第1フレームおよび第1係数904を用いてニューラルネットワーク演算を行って第1フレームの第1特徴903を生成し、該第1フレームの第1特徴903をメモリ402に格納する。メモリ402の活性状態1107は、メモリ402からの第1フレームおよび第1係数904の読み出し、メモリ402への第1フレームの第1特徴903の格納、のためのメモリ402へのアクセスの期間を示している。
【0075】
CNN処理部401は、オフライン層タスク902が完了すると、続いてオンライン層タスク906を実行する。オンライン層タスク906の実行において、CNN処理部401は、オフライン層タスク902にてメモリ402に格納された第1フレームの第1特徴903を該メモリ402から読み出すと共に、メモリ406から第2係数908を読み出す。そしてCNN処理部401は、該第1特徴903および第2係数908を用いてニューラルネットワーク演算を行って第1フレームの第2特徴907を生成し、該第1フレームの第2特徴907をメモリ406に格納する。メモリ402の活性状態1108は、メモリ402からの第1特徴903の読み出しのためのメモリ402へのアクセスの期間を示している。メモリ406の活性状態1109は、メモリ406からの第2係数908の読み出し、メモリ406への第1フレームの第2特徴907の格納、のためのメモリ406へのアクセスの期間を示している。
【0076】
CNN処理部401は、オンライン層タスク906が完了すると、オフライン層タスク911を実行する。オフライン層タスク911の実行において、CNN処理部401は、メモリ406から第1フレームの第2特徴907を読み出すと共に、メモリ402から第3係数910を読み出す。そしてCNN処理部401は、該第1フレームの第2特徴907および第3係数910を用いてニューラルネットワーク演算を行って第1フレームの第3特徴909を生成し、該第1フレームの第3特徴909をメモリ402に格納する。メモリ402の活性状態1110は、メモリ402からの第3係数910の読み出し、メモリ402への第3特徴909の格納、のためのメモリ402へのアクセスの期間を示している。メモリ406の活性状態1111は、メモリ406からの第1フレームの第2特徴907の読み出しのためのメモリ406へのアクセスの期間を示している。CNN処理部401は、オフライン層タスク911が完了すると、CPU403に対して割り込み信号405を通知する。
【0077】
CPU403は、上記の割り込み信号405をCNN処理部401から受けると、オンライン学習タスク1133を実行する。この時点でメモリ406には、第2係数908、第1フレームの第2特徴907、が格納されている。よってオンライン学習タスク1133の実行において、CPU403は、メモリ406から第2係数908と第1フレームの第2特徴907とを読み出し、該第1フレームの第2特徴907を用いて該第2係数908を更新する。そしてCPU403は、メモリ406に格納されている第2係数に対し、該更新した第2係数908を上書きして格納する。
【0078】
また、CPU403は、上記の割り込み信号405をCNN処理部401から受けると、CNN処理部401に対して開始信号404を通知する。CNN処理部401はCPU403からの該開始信号404を検出すると、オフライン層タスク902を実行する。オフライン層タスク902は上記のオフライン層タスク502と同様のタスクであり、オフライン層タスク902の実行によりCNN処理部401は、第2フレームの第1特徴903を生成し、該第2フレームの第1特徴903をメモリ402に格納する。つまり、本実施形態では、CPU403によるオンライン学習タスク1133と、CNN処理部401によるオフライン層タスク902と、が並列に実行される。
【0079】
メモリ402の活性状態1127は、メモリ402からの第2フレームおよび第1係数904の読み出し、メモリ402への第1特徴903の格納、のためのメモリ402へのアクセスの期間を示している。
【0080】
メモリ406の活性状態1132は、メモリ406からの第2係数908および第1フレームの第2特徴907の読み出し、メモリ406への第2係数908の格納、のためのメモリ406へのアクセスの期間を示している。
【0081】
CNN処理部401は、オフライン層タスク902が完了すると、続いてオンライン層タスク906を実行する。オンライン層タスク906の実行において、CNN処理部401は、オフライン層タスク902にてメモリ402に格納された第1特徴903を該メモリ402から読み出すと共に、オンライン学習タスク1133によって更新された第2係数908をメモリ406から読み出す。そしてCNN処理部401は、該読み出した第1特徴903および第2係数908を用いてニューラルネットワーク演算を行って第2フレームの第2特徴907を生成し、該第2フレームの第2特徴907をメモリ406に格納する。
【0082】
メモリ402の活性状態1128は、メモリ402からの第1特徴903の読み出しのためのメモリ402へのアクセスの期間を示している。メモリ406の活性状態1129は、メモリ406からの第2係数908の読み出し、メモリ406への第2フレームの第2特徴907の格納、のためのメモリ406へのアクセスの期間を示している。
【0083】
CNN処理部401は、オンライン層タスク906が完了すると、続いてオフライン層タスク911を実行する。オフライン層タスク911の実行において、CNN処理部401は、オンライン層タスク906にてメモリ406に格納された第2特徴907を該メモリ406から読み出すと共に、第3係数910をメモリ402から読み出す。そしてCNN処理部401は、該読み出した第2特徴907および第3係数910を用いてニューラルネットワーク演算を行って第2フレームの第3特徴909を生成し、該第2フレームの第3特徴909をメモリ402に格納する。
【0084】
メモリ402の活性状態1130は、メモリ402からの第3係数910の読み出し、メモリ402への第3特徴909の格納、のためのメモリ402へのアクセスの期間を示している。メモリ406の活性状態1131は、メモリ406からの第2特徴907の読み出しのためのメモリ406へのアクセスの期間を示している。CNN処理部401はオフライン層タスク911が完了すると、CPU403に対して割り込み信号405を通知する。
【0085】
オフライン層タスク902とオンライン学習タスク1133が並列に実行されている期間においてCNN処理部401はメモリ402にアクセスし、CPU403はメモリ406にアクセスしている。そのためCNN処理部401とCPU403のメモリアクセス競合が抑制され、CNN処理部401のメモリアクセス待ちによる性能低下を抑制しつつ、CPU403がオンライン学習タスクを並列に実行することが可能になる。
【0086】
本実施形態では、オンライン層タスクが2つのオフライン層タスクの間に位置するニューラルネットワークタスクと、オンライン学習タスクと、が並列実行可能であることを示した。
【0087】
[第3の実施形態]
本実施形態では、第2の実施形態との差分について説明し、以下で特に触れない限りは、第2の実施形態と同様であるものとする。本実施形態では、第2の実施形態とは異なるオフライン層タスクの実行中にオンライン学習タスクを実行するケースについて説明する。
【0088】
第2の実施形態では、オンライン層タスク906で利用する第2係数の更新は、オフライン層タスク902と並列に実行されるオンライン学習タスク1133の実行によって行われる。
【0089】
これに対し、本実施形態では、図11の例では、オンライン層タスク906で利用する第2係数の更新を、オフライン層タスク911と並列に実行されるオンライン学習タスクの実行によって行う。
【0090】
オンライン学習タスクをオフライン層タスクと並列に実行するためには、オフライン層タスクとオンライン学習タスクの双方が利用する第2特徴のアクセス競合を解消しなければならない。本実施形態に係る、CNN処理部401およびCPU403により実行される処理構成について、図12のブロック図を用いて説明する。
【0091】
CNN処理部401が実行するニューラルネットワークタスクは、オフライン層タスク1202、オンライン層タスク1206、オフライン層タスク1215に分かれており、この順で実行される。
【0092】
一方、CPU403はオンライン学習タスク1211を実行する。これによりCPU403は、CNN処理部401により生成された第1特徴1203を利用して第2係数908を更新する。オンライン学習タスク1211は、畳み込み演算1212とオンライン学習1213とを含む。
【0093】
畳み込み演算1212では、第1特徴1203と第2係数1208とを用いてオンライン層タスク1206と等価の処理を行って第2特徴1214を取得する。オンライン学習1213では、第2係数1208と第2特徴1214とを用いて、第2の実施形態に係るオンライン学習タスクと同様の処理を行って、該第2係数1208を更新する。
【0094】
本実施形態では、CNN処理部401とCPU403の双方で利用するデータを、それぞれの処理部で生成することによってメモリアクセスの競合を抑制し、その結果、ニューラルネットワークタスクとオンライン学習タスクとを並列に実行可能にする。
【0095】
次に、メモリ402およびメモリ406に格納するデータについて、図13を用いて説明する。メモリ406には、ニューラルネットワークタスクとオンライン学習タスクで共有するデータ(第2係数1208、第1特徴1203)が格納される。一方、メモリ402には、CNN処理部401のみが利用するデータ(画像1201、第1係数1204、第2特徴1207、第3係数1210、第3特徴1209)が格納される。
【0096】
このような構成における、本実施形態に係る演算装置により実行されるニューラルネットワークタスクおよびオンライン学習タスクについて、図14を用いて説明する。図14には、第1フレームに対する処理期間(第1フレーム期間1401)におけるCNN処理部401、CPU403、メモリ402、メモリ406、の動作状況を示している。なお、本実施形態では、CNN処理部401、CPU403、メモリ402、メモリ406、の動作状況は、第1フレームに後続する各フレームにおいても同様である。
【0097】
第1フレームが入力されたタイミングなど、第1フレームに対する処理を開始するタイミングにおいて、CPU403はCNN処理部401に対して開始信号404を通知する。
【0098】
CNN処理部401は該開始信号404を検出すると、オフライン層タスク1202を実行する。オフライン層タスク1202の実行において、CNN処理部401は先ず、メモリ402から、画像1201(第1フレーム)と、オンライン学習タスク1211によって更新されないニューラルネットワークの第1係数1204と、を読み出す。そしてCNN処理部401は、該第1フレームおよび第1係数1204を用いてニューラルネットワーク演算を行って第1フレームの第1特徴1203を生成し、該第1フレームの第1特徴1203をメモリ406に格納する。メモリ402の活性状態1407は、メモリ402からの第1フレームおよび第1係数1204の読み出しのためのメモリ402へのアクセスの期間を示している。メモリ406の活性状態1408は、メモリ406への第1特徴1203の格納のためのメモリ406へのアクセスの期間を示している。
【0099】
CNN処理部401は、オフライン層タスク1202が完了すると、続いてオンライン層タスク1206を実行する。オンライン層タスク1206の実行にてCNN処理部401は、オフライン層タスク1202にてメモリ406に格納された第1フレームの第1特徴1203、オンライン学習タスク1211によって更新される第2係数1208、をメモリ406から読み出す。そしてCNN処理部401は、該第1フレームの第1特徴1203および第2係数1208を用いてニューラルネットワーク演算を行って第1フレームの第2特徴1207を生成し、該第2特徴1207をメモリ402に格納する。メモリ402の活性状態1410は、メモリ402への第2特徴1207の格納のためのメモリ402へのアクセスの期間を示している。メモリ406の活性状態1409は、メモリ406からの第1特徴1203および第2係数1208の読み出しのためのメモリ406へのアクセスの期間を示している。
【0100】
CNN処理部401は、オンライン層タスク1206が完了すると、割り込み信号405をCPU403に対して通知する。割り込み信号405を検出したCPU403はオンライン学習タスク1211を実行する。オンライン学習タスク1211の実行においてCPU403は、メモリ406から第2係数1208、第1フレームの第1特徴1203、を読み出す。そしてCPU403は、第1フレームの第1特徴1203と第2係数1208とを用いてオンライン層タスク1206と等価の処理を行って第2特徴1214を取得する。そしてCPU403は、第2係数1208と第2特徴1214とを用いて、第2の実施形態に係るオンライン学習タスクと同様の処理を行って、該第2係数1208を更新する。そしてCPU403は、メモリ406に格納されている第2係数1208に対し、該更新した第2係数1208を上書きして格納する。
【0101】
また、CNN処理部401は、オンライン層タスク1206が完了すると、オフライン層タスク1215を実行する。オフライン層タスク1215の実行において、CNN処理部401は、メモリ402から第1フレームの第2特徴1207を読み出すと共に、メモリ402から第3係数1210を読み出す。そしてCNN処理部401は、該第1フレームの第2特徴1207および第3係数1210を用いてニューラルネットワーク演算を行って第1フレームの第3特徴1209を生成し、該第1フレームの第3特徴1209をメモリ402に格納する。メモリ402の活性状態1411は、メモリ402からの第2特徴1207および第3係数1210の読み出し、メモリ402への第3特徴1209の格納、のためのメモリ402へのアクセスの期間を示している。メモリ406の活性状態1412は、メモリ406からの第2係数1208および第1特徴1203の読み出し、メモリ406への第2係数1208の格納、のためのメモリ406へのアクセスの期間を示している。CNN処理部401はオフライン層タスク1215が完了すると、CPU403に対して割り込み信号405を通知する。つまり、本実施形態では、CPU403によるオンライン学習タスク1211と、CNN処理部401によるオフライン層タスク1215と、が並列に実行される。
【0102】
オフライン層タスク1215とオンライン学習タスク1211が並列に実行されている期間において、CNN処理部401はメモリ402にアクセスし、CPU403はメモリ406にアクセスしている。そのためCNN処理部401とCPU403のメモリアクセス競合が抑制され、CNN処理部401のメモリアクセス待ちによる性能低下を抑制しつつ、CPU403がオンライン学習タスクを並列に実行することが可能になる。
【0103】
本実施形態では、オンライン学習タスクと、該オンライン学習タスクと並列に動作するニューラルネットワークタスクと、の双方で利用するデータが存在する場合でも、CPUで該データを別途生成することでメモリアクセス競合を抑制して並列実行を可能にすることが示された。
【0104】
CPU403の動作について、図15のフローチャートに従って説明する。先ずは、CPU403のメイン処理の処理ステップであるステップS1501について、図15(a)のフローチャートに従って説明する。
【0105】
ステップS1502では、CPU403は、上記のステップS802と同様にして、フレームの開始条件が満たされたか否かを判断する。このような判断の結果、フレームの開始条件が満たされた場合には、処理はステップS1503に進み、フレームの開始条件が満たされていない場合には、処理はステップS1502で待機する。
【0106】
ステップS1503では、CPU403は、CNN処理部401に対して動作の開始を指示するべく、該CNN処理部401に対して開始信号を通知する。開始信号を検出したCNN処理部401は上記の通り、オフライン層タスクおよびオンライン層タスクを実行する。
【0107】
ステップS1504では、CPU403は、CNN処理部401からの割り込み信号を検出したか否かを判断する。この判断の結果、CNN処理部401からの割り込み信号を検出した場合には、処理はステップS1505に進み、CNN処理部401からの割り込み信号を検出していない場合には、処理はステップS1504で待機する。
【0108】
ステップS1505では、CPU403は、オンライン学習タスクを実行する。ステップS1505の詳細については後述する。ステップS1506では、CPU403は、上記のステップS807と同様にして、メイン処理の終了条件が満たされたか否かを判断する。このような判断の結果、メイン処理の終了条件が満たされた場合には、ステップS1501の処理は終了し、メイン処理の終了条件が満たされていない場合には、処理はステップS1502に進む。
【0109】
次に、上記のステップS1505における処理の詳細について、図15(b)のフローチャートに従って説明する。ステップS15052では、CPU403は、メモリ406に格納されている第1特徴1203のうち、検出対象の検出位置の第1特徴1203と、検出対象の未検出位置の第1特徴1203と、を読み出す。そしてステップS15053では、CPU403は、第2係数1208をメモリ406から読み出す。
【0110】
ステップS15054では、CPU403は、第1特徴1203と第2係数1208とを用いてオンライン層タスク1206と等価の処理を行って第2特徴1214(検出対象の検出位置の特徴出力と未検出位置の特徴出力)を取得する。
【0111】
ステップS15055では、CPU403は、第2係数1208と第2特徴1214とを用いて、第2の実施形態に係るオンライン学習タスクと同様の処理を行って、該第2係数1208を更新する。CPU403は、検出対象の検出位置の第2特徴1214がより活性化し、未検出位置の第2特徴1214がより非活性化するように第2係数1208を更新する。
【0112】
ステップS15056では、CPU403は、第2係数1208の更新回数が閾値以上となったか否かを判断する。閾値は予め定められた値であっても良いし、動的に決定した値であっても良い。
【0113】
この判断の結果、第2係数1208の更新回数が閾値以上となった場合には、処理はステップS15057に進み、第2係数1208の更新回数が閾値未満である場合には、処理はステップS15054に進む。ステップS15057では、CPU403は、メモリ406に格納されている第2係数1208に対し、上記の処理で更新した第2係数1208を上書きして格納する。
【0114】
[第4の実施形態]
オンライン層タスクが複数ある形態でも、上記の実施形態と同様に、オンライン層タスクで利用するデータをメモリ406に格納することで、ニューラルネットワーク演算とオンライン学習とを並列に実行することができる。
【0115】
また、上記の実施形態では、CNNによる認識処理を例に取り説明したが、これに限らず、様々な認識アルゴリズムを用いてもよい。例えば、CNN以外のマルチレイヤパーセプトロンやトランスフォーマー等による認識アルゴリズムを用いても良い。また、上記の実施形態は、エコーステートネットワークやエクストリームラーニングマシンなどのランダムネットワークの最終層に対しての学習にも適用可能である。
【0116】
また、メモリ402やメモリ406を、複数のメモリで構成しても良い。たとえば、画像、係数、特徴をそれぞれ独立したメモリに格納してそれぞれのメモリに並列にアクセスするようにしても良い。
【0117】
また、上記の実施形態では、畳み込み演算をハードウェアで処理する場合について説明した。しかし、畳み込み演算をCPU/GPU(Graphics Processing Unit)/DSP(Digital Signal Processing Unit)等のプロセッサがコンピュータプログラムを実行することで実現させても良い。
【0118】
また、上記の実施形態において説明した演算装置は、入力された画像を処理して出力する装置(デジタルカメラ、スマートフォン、タブレット端末装置などの装置)に組み込まれる組み込み機器であっても良い。上記の如く、上記の実施形態において説明した演算装置は、ニューラルネットワーク演算とオンライン学習とを並列実行することで、上記の従来技術と比べてフレームごとに要する処理時間の短縮を可能にする。よって、上記の実施形態において説明した演算装置によれば、フレームレート低下を抑制するために演算装置の動作周波数を高くする必要はない。
【0119】
上記の各実施形態で使用した数値、処理タイミング、処理順、処理の主体、データ(情報)の取得方法/送信先/送信元/格納場所などは、具体的な説明を行うために一例として挙げたもので、このような一例に限定することを意図したものではない。
【0120】
また、以上説明した各実施形態の一部若しくは全部を適宜組み合わせて使用しても構わない。また、以上説明した各実施形態の一部若しくは全部を選択的に使用しても構わない。
【0121】
(その他の実施形態)
本開示は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0122】
本明細書の発明は、以下の演算装置、演算方法、コンピュータプログラムを含む。
(項目1)
ニューラルネットワークのオンライン学習において更新対象ではない第1係数を用いて、該ニューラルネットワークの演算を行って第1特徴を取得する第1処理手段と、
前記第1特徴と、前記オンライン学習において更新対象となる第2係数と、を用いて前記ニューラルネットワークの演算を行って第2特徴を取得する第2処理手段と、
前記第2係数と、前記第2処理手段が過去に取得した第2特徴と、を用いて前記オンライン学習を行うことで該第2係数を更新する更新手段と
を備え、
前記第1処理手段による処理と前記更新手段による処理とは並列に実行される
ことを特徴とする演算装置。
(項目2)
前記第1処理手段は、フレームと前記第1係数とを用いて該フレームの第1特徴を取得し、
前記第2処理手段は、前記フレームの第1特徴と、前記第2係数と、を用いて前記フレームの第2特徴を取得する
ことを特徴とする項目1に記載の演算装置。
(項目3)
前記第1処理手段は、第2フレームの第1特徴を取得し、
前記更新手段は、前記第2係数と、前記第2フレームよりも過去に入力された第1フレームの第2特徴と、を用いて前記オンライン学習を行うことで該第2係数を更新し、
前記第2処理手段は、前記第2フレームの第1特徴と、前記更新手段により更新された第2係数と、を用いて前記第2フレームの第2特徴を取得する
ことを特徴とする項目2に記載の演算装置。
(項目4)
さらに、
前記第1係数を保持する第1メモリと、
前記第2係数を保持する第2メモリと
を備え、
前記第1処理手段は、前記第1特徴を前記第1メモリに格納し、
前記第2処理手段は、前記第2特徴を前記第2メモリに格納する
ことを特徴とする項目1ないし3のいずれか1項目に記載の演算装置。
(項目5)
さらに、
前記第2特徴と、前記ニューラルネットワークにおける第3係数と、を用いて前記ニューラルネットワークの演算を行って第3特徴を取得する第3処理手段を備えることを特徴とする項目1ないし4のいずれか1項目に記載の演算装置。
(項目6)
ニューラルネットワークのオンライン学習において更新対象ではない第1係数を用いて、該ニューラルネットワークの演算を行って第1特徴を取得する第1処理手段と、
前記第1特徴と、前記オンライン学習において更新対象となる第2係数と、を用いて前記ニューラルネットワークの演算を行って第2特徴を取得する第2処理手段と、
前記第2特徴と、前記ニューラルネットワークにおける第3係数と、を用いて前記ニューラルネットワークの演算を行って第3特徴を取得する第3処理手段と、
前記第2係数と前記第1特徴とに基づいて前記オンライン学習を行うことで該第2係数を更新する更新手段と
を備え、
前記第3処理手段による処理と前記更新手段による処理とは並列に実行される
ことを特徴とする演算装置。
(項目7)
前記更新手段は、
前記第2係数と前記第1特徴とを用いて前記第2処理手段による演算と等価の演算を行って得られる特徴と、該第2係数と、を用いて該第2係数を更新する
ことを特徴とする項目6に記載の演算装置。
(項目8)
前記演算装置は組み込み機器であることを特徴とする項目1ないし7のいずれか1項目に記載の演算装置。
(項目9)
演算装置による演算方法であって、
前記演算装置の第1処理手段が、ニューラルネットワークのオンライン学習において更新対象ではない第1係数を用いて、該ニューラルネットワークの演算を行って第1特徴を取得する第1処理工程と、
前記演算装置の第2処理手段が、前記第1特徴と、前記オンライン学習において更新対象となる第2係数と、を用いて前記ニューラルネットワークの演算を行って第2特徴を取得する第2処理工程と、
前記演算装置の更新手段が、前記第2係数と、前記第2処理工程で過去に取得した第2特徴と、を用いて前記オンライン学習を行うことで該第2係数を更新する更新工程と
を備え、
前記第1処理工程と前記更新工程とは並列に実行される
ことを特徴とする演算方法。
(項目10)
演算装置による演算方法であって、
前記演算装置の第1処理手段が、ニューラルネットワークのオンライン学習において更新対象ではない第1係数を用いて、該ニューラルネットワークの演算を行って第1特徴を取得する第1処理工程と、
前記演算装置の第2処理手段が、前記第1特徴と、前記オンライン学習において更新対象となる第2係数と、を用いて前記ニューラルネットワークの演算を行って第2特徴を取得する第2処理工程と、
前記演算装置の第3処理手段が、前記第2特徴と、前記ニューラルネットワークにおける第3係数と、を用いて前記ニューラルネットワークの演算を行って第3特徴を取得する第3処理工程と、
前記演算装置の更新手段が、前記第2係数と前記第1特徴とに基づいて前記オンライン学習を行うことで該第2係数を更新する更新工程と
を備え、
前記第3処理工程と前記更新工程とは並列に実行される
ことを特徴とする演算方法。
(項目11)
コンピュータを、項目1ないし8のいずれか1項目に記載の演算装置の各手段として機能させるためのコンピュータプログラム。
【0123】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0124】
501:画像 502:オフライン層タスク 503:第1特徴 504:第1係数 505:オンライン学習タスク 506:オンライン層タスク 507:第2特徴 508:第2係数
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15