A.実施例
A-1.採点システム1000の構成
次に、実施の形態を実施例に基づき説明する。図1は、本実施例の採点システム1000の構成を示すブロック図である。採点システム1000は、本実施例の画像処理装置としてのサーバ100と、複合機200と、を備えている。
サーバ100は、インターネットITに接続された計算機である。サーバ100は、サーバ100のコントローラとしてのCPU110と、RAMなどの揮発性記憶装置120と、ハードディスクドライブやフラッシュメモリなどの不揮発性記憶装置130と、通信インタフェース(IF)140と、を備えている。通信インタフェース140は、インターネットITと接続するためのインタフェースである。
揮発性記憶装置120は、CPU110が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置130には、コンピュータプログラムPGgと、シートデータSDと、シートデータSDと対応づけられた属性データADと、成績データベースDBと、が格納されている。
コンピュータプログラムPGgとシートデータSDとシートデータSDと属性データADと成績データベースDBとは、複合機200の製造者によって提供され、サーバ100にアップロードされる。CPU110は、コンピュータプログラムPGgを実行することにより、複合機200と協働して、後述する採点処理を実行する。
コンピュータプログラムPGgは、後述する生成ネットワーク(generator)GNと識別ネットワーク(discriminator)DNとの機能をCPU110に実現させるコンピュータプログラムをモジュールとして含んでいる。
複合機200は、CPUやメモリを含む制御部210と、読取部220と、印刷部230と、を備えている。読取部220は、光電変換素子(例えば、CCD、CMOS)を備える一次元イメージセンサを用いて光学的に原稿を読み取ることによってスキャンデータを生成する。印刷部230は、インクジェット方式や電子写真方式などの印刷方式に従って印刷材としてのインクやトナーを用いて用紙などの印刷媒体上に画像を印刷する。複合機200は、ネットワークNWとインターネットITとを介して、サーバ100と通信可能に接続されている。
A-2.ネットワークシステムの構成
図2は、ネットワークシステムNSの構成を示すブロック図である。ネットワークシステムNSは、CPU110がコンピュータプログラムPGgを実行することによって実現される。ネットワークシステムNSは、生成ネットワークGNと識別ネットワークDNとを含んでいる。生成ネットワークGNと識別ネットワークDNとは、後述するトレーニング処理によってトレーニングされた学習済みの機械学習モデルである。
A-2-1.生成ネットワークGN
生成ネットワークGNには、入力データとして、入力画像データIDとラベルデータLDとからなるデータペアが入力される。入力画像データIDは、入力画像IIを示す画像データである。本実施例の入力画像IIは、後述するように手書き文字を示す画像データである。ラベルデータLDは、対応する入力画像データIDによって示される手書き文字を識別する識別情報であり、文字ごとに割り当てられた情報である。例えば、対応する入力画像データIDによって示される手書き文字が「花」の文字であれば、該入力画像データIDに対応付けられるラベルデータLDは、「花」を示す識別情報である。
生成ネットワークGNは、オートエンコーダともよばれるニューラルネットワークである。生成ネットワークGNは、入力画像データIDの特徴(入力画像IIの特徴)を抽出し、抽出された特徴に基づいて入力画像IIを再構成することによって、出力画像OIを示す出力画像データODを生成する。このために、出力画像OIは、入力画像IIに類似した手書き文字を示す。
本実施例では、入力画像データIDおよび出力画像データODは、複数個の画素を含む画像を示すビットマップデータであり、具体的には、RGB値によって画素ごとの色を表すRGB画像データである。RGB値は、3個の色成分の階調値(以下、成分値とも呼ぶ)、すなわち、R値、G値、B値を含むRGB表色系の色値である。R値、G値、B値は、例えば、所定の階調数(例えば、256)の階調値である。
図3は、入力画像IIと出力画像OIとの一例を示す図である。図3(A)には、入力画像II1~II6が図示されている。入力画像II1~II6は、それぞれ、手書き文字を示している。入力画像II1~II6の手書き文字は、誤りを含む場合がある。これは、入力画像IIに示される手書き文字が、後述するように、受験者(例えば、小学生)が記入した文字に基づくためである。例えば、入力画像II2は、符号E2で示すように、文字を構成する一つの字画(ストロークとも呼ぶ)の終端が「はらい」になっていない誤りを含む。また、入力画像II3は、符号E3で示すように、文字を構成する一つの字画の終端が「はね」になっていない誤りを含む。
図3(B)には、出力画像OI1~OI6が図示されている。出力画像OI1~OI6は、誤りを含んでいない。より詳しくは、各出力画像OIの文字は、対応する入力画像IIのうちの正しい部分をそのまま含むとともに、入力画像IIに含まれる誤りが修正された部分を含む。例えば、入力画像II1の文字(花)は、誤りを含んでいないので、出力画像OI1の文字は、入力画像II1の文字とほぼ同じである。入力画像II2の文字(火)は、字画の誤りE2を含んでいるので、出力画像OI2の文字は、入力画像II1の文字の字画の誤りE2が修正された文字である。これは、後述するトレーニング処理において、生成ネットワークGNが入力画像IIの文字を正しく再構成して出力するようにトレーニングされているためである。
図4は、生成ネットワークGNの構成を示すブロック図である。図2、図4に示すように、生成ネットワークGNは、エンコーダECとデコーダDCとを含んでいる。
エンコーダECは、入力画像データIDとラベルデータLDとからなる入力データに対して、複数個の演算パラメータPeを用いて、次元削減処理を実行して、入力画像データIDの特徴(すなわち、入力画像IIの特徴)を示す特徴データCDを生成する。本実施例では、入力画像データIDは、(256×256)個の画素のそれぞれの3個の成分値(R値、G値、B値)を含むので、(256×256×3)個の値を含むデータ、すなわち、(256×256×3)次元のデータである。また、ラベルデータLD(文字の識別情報)は、(256×256×1)個の値を含むデータ、すなわち、(256×256×1)次元のデータである。である。したがって、本実施例の入力データは、(256×256×4)次元のデータである。特徴データCDは、本実施例では、(16×16×128)次元のデータである。このように、次元削減処理では、入力画像データIDの次元数が削減される。
図4の左側には、エンコーダECの構成が示されている。エンコーダECは、入力層EL_0と、複数個の畳込層EL_1~畳込層EL_4を有するニューラルネットワークである。
入力層EL_0は、入力データ(入力画像データIDとラベルデータLD)が入力される層である。1番目の畳込層EL_1には、入力層EL_0に入力された入力データがそのまま入力される。畳込層EL_1は、(256×256×4)次元の入力データに対して、後述する演算処理を実行して(A1×B1×C1)次元のデータを生成する(A1、B1、C1は正の整数)。
k番目(kは、2~4の整数)の畳込層EL_kには、(k-1)番目の畳込層EL_(k-1)によって生成される(Ak-1×Bk-1×Ck-1)次元のデータに対して、所定の後処理(後述)を実行して得られる(Ak-1、Bk-1、Ck-1)次元の処理済データが入力される。畳込層EL_kは、(Ak-1×Bk-1×Ck-1)次元の処理済データに対して、後述する演算処理を実行して(Ak×Bk×Ck)次元のデータを生成する(Ak、Bk、Ckは正の整数)。
各畳込層EL_1~EL_4が実行する演算処理は、畳込処理(convolution)とバイアスの加算処理とを含む。畳込処理は、入力されたデータに対して、(p×q×r)次元のs個のフィルタを順次に適用して入力されたデータとフィルタとの相関を示す相関値を算出する処理である。各フィルタを適用する処理では、フィルタをスライドさせながら複数個の相関値が順次に算出される。1個のフィルタは、(p×q×r)個の重みを含んでいる。バイアスの加算処理は、算出された相関値に、1個のフィルタに対して1個ずつ準備されたバイアスを加算する処理である。s個のフィルタに含まれる(p×q×r×s)個の重みと、s個のフィルタに対応するs個のバイアスと、は、上述した複数個の演算パラメータPeであり、後述するトレーニング処理において調整される値である。
各畳込層EL_1~EL_4によって生成されるデータの各値は、上述した相関値にバイアスを加えた値である。各畳込層EL_1~EL_4によって生成されるデータに含まれるデータの個数(例えば、畳込層EL_1の場合は(A1×B1×C1))は、畳込処理におけるストライド(フィルタをスライドさせる量)と、フィルタの個数sと、によって決定される。
畳込層EL_1によって生成されるデータの各値は、上述した後処理として、活性化関数に入力されて変換される。本実施例では、活性化関数には、いわゆるLeakyReLU(Leaky Rectified Linear Unit)が用いられる。
畳込層EL_2~畳込層EL_4によって生成されるデータの各値は、上述した後処理として、バッチノーマライゼーション(Batch Normalization)によって変換された後に、さらに、活性化関数に入力されて変換される。バッチノーマライゼーションは、後述するトレーニング処理では、用いられる入力データの集合(バッチ)分について、各値の平均と分散を計算して、各値を正規化する処理である。使用時(後述する採点処理時)には、トレーニング処理時にバッチごとに算出された平均と分散の移動平均値を用いて、各値が正規化される。
畳込層EL_4によって生成されるデータに対して、上述した後処理を実行して得られる処理済データが、上述した特徴データCDである。
なお、本実施例にて、各畳込層EL_1~EL_4によって生成されるデータの次元数(A1×B1×C1)~(A4×B4×C4)は、以下の通りである。
(A1×B1×C1)=(128×128×32)
(A2×B2×C2)=(64×64×64)
(A3×B3×C3)=(32×32×128)
(A4×B4×C4)=(16×16×128)
A-3-2.デコーダDCの構成
デコーダDCは、エンコーダECによって生成された特徴データCDに対して、複数個の演算パラメータPdを用いて、次元復元処理を実行して、上述した出力画像データODを生成する。本実施例では、特徴データCDは、上述したように(16×16×128)次元のデータである。本実施例では、出力画像データODは、入力画像データIDと同様に、(256×256×3)個の値を含むデータ、すなわち、(256×256×3)次元のデータである。本実施例では、このように、本実施例の次元復元処理では、特徴データCDの次元数が復元される。
図4の右側には、デコーダDCの構成が示されている。デコーダDCは、複数個の転置畳込層DL_1~転置畳込層DL_4を有するニューラルネットワークである。
1番目の転置畳込層DL_1には、特徴データCDが入力される。転置畳込層DL_1は、特徴データCDに対して、後述する演算処理を実行して(D1×E1×F1)次元のデータを生成する(D1、E1、F1は正の整数)。
m番目(mは、2~4の整数)の転置畳込層DL_mには、(m-1)番目の転置畳込層DL_(m-1)によって生成される(Dm-1、Em-1、Fm-1)次元のデータに対して所定の後処理(後述)を実行して得られる(Dm-1、Em-1、Fm-1)次元の処理済データが入力される。転置畳込層DL_mは、入力される処理済データに対して、後述する演算処理を実行して(Dm×Em×Fm)次元のデータを生成する(Dm、Em、Fmは正の整数)。
各転置畳込層DL_1~DL_4が実行する演算処理は、転置畳込処理(transposed convolution)とバイアスの加算処理とを含む。転置畳込処理は、入力されたデータに対して、ストライドに応じて適宜に値(例えばゼロの値)を追加して次元数を増加させた後に、上述した畳込処理と同様に(p×q×r)次元のフィルタを用いた畳み込み演算を行う処理である。バイアスの加算処理は、転置畳込演算で算出された相関値に、1個のフィルタに対して1個ずつ準備されたバイアスを加算する処理である。s個のフィルタに含まれる(p×q×r×s)個の重みと、s個のフィルタに対応するs個のバイアスと、は、上述した複数個の演算パラメータPdであり、後述するトレーニング処理において調整される値である。
各転置畳込層DL_1~DL_4によって生成されるデータの各値は、上述した相関値にバイアスを加えた値である。各転置畳込層DL_1~DL_4によって生成されるデータに含まれるデータの個数(例えば、転置畳込層DL_1の場合は(D1×E1×F1))は、転置畳込処理におけるストライド(ゼロ等の値を追加する量)と、フィルタの個数sと、によって決定される。
転置畳込層DL_1によって生成されるデータの各値は、上述した後処理として、上述したバッチノーマライゼーションによって変換される。そして、バッチノーマライゼーションによって変換された各値は、さらに後処理として、活性化関数に入力されて変換される。活性化関数には、いわゆるReLU(Rectified Linear Unit)が用いられる。
転置畳込層DL_2、DL_3によって生成されるデータの各値は、上述した後処理として、上述したバッチノーマライゼーションによって変換される。そして、トレーニング処理では、バッチノーマライゼーションによって変換された各値は、さらに後処理として、ドロップアウトによって変換された後に、活性化関数に入力されて変換される。ドロップアウトは、過学習を抑制するために、ランダムに選択された一部の値を無効化(0にする)する処理である。活性化関数には、上述のReLUが用いられる。使用時(後述の採点処理)では、ドロップアウトは行われず、バッチノーマライゼーションによって変換された各値は、活性化関数に入力されて変換される。
転置畳込層DL_4によって生成されるデータの各値は、上述した後処理として活性化関数に入力されて変換される。活性化関数には、いわゆるシグモイドが用いられる。後処理後の(D4×E4×F4)次元のデータは、上述した出力画像データODである。したがって、転置畳込層DL_4によって生成されるデータの次元数(D4×E4×F4)は、出力画像データODの次元数(256×256×3)と等しい。
なお、本実施例にて、各転置畳込層DL_1~DL_4によって生成されるデータの次元数(D1×E1×F1)~(D4×E4×F4)は、以下の通りである。
(D1×E1×F1)=(32×32×32)
(D2×E2×F2)=(64×64×32)
(D3×E3×F3)=(128×128×32)
(D4×E4×F4)=(256×256×3)
A-2-2.識別ネットワークDN
識別ネットワークDNには、差分データDDが入力される。差分データDDによって示される差分画像DIは、入力画像データIDによって示される入力画像IIと、出力画像データODによって示される出力画像データODの差分を示す。具体的には、入力画像IIの各画素の値をIV(i)とし、出力画像OIの各画素の値をOV(i)とすると、差分画像DIの各画素の値DV(i)は、(IV(i)-OV(i))で表される。iは、入力画像II、出力画像OI、差分画像DIの各画素を識別する識別子である。差分画像DIの画素の値DV(i)が正の値をとる場合には、当該画素によって示される要素は、入力画像IIに示される文字に含まれる構成要素であって、かつ、出力画像OIに示される文字には含まれない構成要素(余分要素OEとも呼ぶ)である。差分画像DIの画素の値DV(i)が負の値をとる場合には、当該画素によって示される要素は、出力画像OIに示される文字に含まれる構成要素であって、かつ、入力画像IIに示される文字には含まれない構成要素(不足要素MEとも呼ぶ)である。余分要素OEと不足要素MEは、いずれも入力画像IIに示される文字の誤りを示す。
図3(C)には、入力画像II1~II6と出力画像OI1~OI6との差分を示す差分画像DI1~DI6が図示されている。例えば、入力画像II1は、「花」の文字として正しい文字であるので、差分画像DI1には、余分要素も不足要素も現れていない。また、入力画像II2は、「火」の文字として、字画の終端が「はらい」になっていない誤りE2を含むので、差分画像DI2には、「はらい」が不足していることを示す不足要素ME2が現れている。余分要素も不足要素も現れていない。入力画像II3は、「子」の文字として、字画の終端が「はね」になっていない誤りE3を含むので、差分画像DI3には、「はね」が不足していることを示す不足要素ME3が現れている。入力画像II4は、「犬」の文字として、字画の一つが不足している誤りE4を含むので、差分画像DI4には、当該字画が不足していることを示す不足要素ME4が現れている。入力画像II5は、「木」の文字として、字画の終端が「とめ」でなく「はね」になっている誤りE5を含むので、差分画像DI5には、「はね」が余分であること(「とめ」となっていないこと)を示す余分要素OE5が現れている。入力画像II6は、「大」の文字として、字画が余分に存在する誤りE6を含むので、差分画像DI6には、字画が余分であることを示す余分要素OE6が現れている。このように、差分データDDは、対応する入力画像IIに示される文字に誤りが含まれるか否かを示すとともに、誤りが含まれる場合には該誤りの種類を示していると言うことができる。
識別ネットワークDNは、差分データDDが入力されると、対応する入力画像IIが正しい文字であるか否か、および、差分データDDによって示される誤りの種類(換言すれば、対応する入力画像IIに示される文字の誤りの種類)を識別する。すなわち、識別ネットワークDNは、入力された差分データDDに対して、複数個の演算パラメータを用いた演算処理を実行して、差分データDDによって示される誤りの有無および誤りの種類を識別した結果を示す識別データKDを出力する。
図3(D)には、差分画像DI1~DI6に対応する識別結果(1)~(6)が示されている。本実施例では、識別データKDは、以下の6種類の識別結果(1)~(6)を示す。
(1)誤りが無い(「正解)とも呼ぶ)。
(2)「はらい」であるべき字画の終端が「はらい」でない(「はらいの誤り」とも呼ぶ)。
(3)「はね」であるべき字画の終端が「はね」でない(「はねの誤り」とも呼ぶ)。
(4)字画が不足している(「画数不足」とも呼ぶ)。
(5)「止め」であるべき字画の終端が「止め」でない(「止めの誤り」とも呼ぶ)。
(6)字画が余分である(「画数余分」とも呼ぶ)。
具体的には、識別データKDは、6種類の識別結果(1)~(6)と一対一で対応する6個の値を含む6次元のデータである。生成ネットワークGNは、後述するトレーニング処理によって、入力される差分データDDによって示される正解または誤りの種類に対応する一の値が1に近づき、対応しない残りの値が0に近づくようにトレーニングされている。このために、生成ネットワークGNは、差分データDDによって示される正解または誤りの種類を適切に示す識別データKDを出力することができる。
図5は、識別ネットワークDNの構成を示すブロック図である。識別ネットワークDNは、特徴抽出部CEXと、クラス分類部CLSと、を備えている。
特徴抽出部CEXは、入力される差分データDDの特徴を抽出する。特徴抽出部CEXは、複数個の層L_0~L_18を有するコンボリューションニューラルネットワークである。入力層L_0は、差分データDDが入力される層である。1番目の畳込層L_1には、入力層L_0に入力された差分データDDがそのまま入力される。
畳込層L_1、L_2、L_4、L_5、L_7~L_9、L_11~L_13、L_15~L_17は、上述したエンコーダECの畳込層の演算処理と同様に、畳込処理(convolution)とバイアスの加算処理と、を実行する。畳込層によって生成されるデータは、後処理として、活性化関数に入力されて変換された後に、次の層(畳込層またはプーリング層)に入力される。本実施例では、活性化関数には、ReLUが用いられる。
プーリング層L_3、L_6、L_10、L_14、L_18は、マックスプーリング(MaxPooling)を行って、入力されたデータの次元数を削減する。マックスプーリングは、いわゆるダウンサンプリングによって次元数を削減する処理であり、所定サイズ(例えば、2×2)のウィンドウを所定のストライド(例えば、2)でスライドさせつつ、ウィンドウ内の最大値を選択することによって次元数を削減する。プーリング層によって生成されるデータは、そのまま、次の層(畳込層または後述する全体平均プーリング層L_19)に入力される。
特徴抽出部CEXのn番目の層(nは、1~18の整数)は、上述した演算処理を実行して(Gn×Hn×In)次元のデータを生成する(Gn、Hn、Inは正の整数)。なお、本実施例にて、各層L_1~L_18によって生成されるデータの次元数(G1×H1×I1)~(G18×H18×I18)は、以下の通りである。
(G1×H1×I1)=(256×256×64)
(G2×H2×I2)=(256×256×64)
(G3×H3×I3)=(128×128×64)
(G4×H4×I4)=(128×128×128)
(G5×H5×I5)=(128×128×128)
(G6×H6×I6)=(64×64×128)
(G7×H7×I7)=(64×64×256)
(G8×H8×I8)=(64×64×256)
(G9×H9×I9)=(64×64×256)
(G10×H10×I10)=(32×32×256)
(G11×H11×I11)=(32×32×512)
(G12×H12×I12)=(32×32×512)
(G13×H13×I13)=(32×32×512)
(G14×H14×I14)=(16×16×512)
(G15×H15×I15)=(16×16×512)
(G16×H16×I16)=(16×16×512)
(G17×H17×I17)=(16×16×512)
(G18×H18×I18)=(8×8×512)
本実施例では、特徴抽出部CEXには、VGG16と呼ばれる16層のニューラルネットワークのうちの全結合層を除いた部分がそのまま用いられる。VGG16は、ImageNetと呼ばれる画像データベースに登録された画像データを用いてトレーニングされた学習済みのニューラルネットワークであり、その学習済みの演算パラメータは一般公開されている。本実施例では、特徴抽出部CEXの演算パラメータには、公開された学習済みの演算パラメータが用いられる。このために、本実施例では、特徴抽出部CEXに含まれる複数個の演算パラメータは、後述するトレーニング処理では調整されない。
クラス分類部CLSには、特徴抽出部CEXによって生成されるデータ、すなわち、特徴抽出部CEXのプーリング層L_18によって生成される(8×8×512)次元のデータが入力される。クラス分類部CLSは、該データに対して複数個の演算パラメータPdnを用いた演算処理を実行して、識別データKDを生成する。
クラス分類部CLSは、全体平均プーリング層L_19と、全結合層L_20、L21を有するニューラルネットワークである。
(8×8×512)次元のデータは、(8×8)個の値を有する512チャネル分のデータである。全体平均プーリング層L_19は、各チャネルの(8×8)個の値の平均値をとることで、各チャネルの次元数を1個にする。これによって、(8×8×512)次元のデータは、512次元のデータに変換される。
全体平均プーリング層L_19によって生成される512次元のデータは、全結合層L_20に入力される。全結合層L_20は、一般的なニューラルネットワークで用いられる全結合層と同様の層であり、256次元のデータ(256個の値)を生成する。入力された512個の値から成るベクトルと256個の重みから成るベクトルとの内積に、バイアスを加えた値(内積+バイアス)が全結合層L_20によって生成される1個の値である。これらの(512×256)個の重みと256個のバイアスは、上述した演算パラメータPdnであり、後述するトレーニング処理によって調整される値である。
全結合層L_20によって生成された各値は、後処理として、活性化関数に入力されて変換される。活性化関数には、ReLUが用いられる。なお、トレーニング処理では、さらに、後処理として、ドロップアウトが行われる。使用時(推論時とも呼ぶ。具体的には、後述する採点処理時)には、ドロップアウトは行われない。
全結合層L_20によって生成される256次元のデータは、全結合層L_21に入力される。全結合層L_21は、全結合層L_20と同様の処理によって、6次元のデータ(6個の値)を生成する。入力された256個の値から成るベクトルと6個の重みから成るベクトルとの内積に、バイアスを加えた値(内積+バイアス)が全結合層L_21によって生成される1個の値である。これらの(256×6)個の重みと6個のバイアスは、上述した演算パラメータPdnであり、後述するトレーニング処理によって調整される値である。
全結合層L_21によって生成された6個の値は、後処理として、活性化関数に入力されて変換される。活性化関数には、SoftMaxが用いられる。活性化関数によって変換済みの6個の値は、上述した識別データKDである。
A-3.採点処理
A-3-1.複合機の処理
図6は、採点処理のうち、複合機200が実行する処理のフローチャートである。この処理は、例えば、複合機200のユーザの開始指示に基づいて開始される。複合機200のユーザは、例えば、小学校の教師である。
S10では、複合機200の制御部210は、シートデータSDをサーバ100から受信する。具体的には、制御部210は、サーバ100にシートデータSDの要求を送信する。サーバ100は、該要求に対する応答としてシートデータSDを複合機200に送信する。これによって、制御部210は、シートデータSDを受信する。
S20では、制御部210は、シートデータSDを用いて、印刷部230に、シートデータSDによって示されるテスト画像TIを用紙に印刷させる。これによって、テスト画像TIが印刷されたテストシートTSが作成される。テストシートTSは、例えば、受験者の人数分だけ作成される。
図7は、テスト画像TIの一例を示す図である。テスト画像TIは、例えば、小学生向けの漢字の書き取りテスト用のテストシートTSを作成するための画像である。テスト画像TIは、書き取りテストの受験者が漢字を記入するための複数個の記入領域EN1~EN6を含む。テスト画像TIは、記入領域EN1~EN6に記入すべき漢字を示唆する情報、例えば、ふりがなKNを含む。
ユーザは、テスト画像TIが印刷されたテストシートTSを用いて、漢字の書き取りテストを実施して、受験者によって漢字が記入されたテストシートTSを取得する。図8は、テストシートTSの一例を示す図である。
図8(A)の記入済みのテストシートTSには、記入領域EN1~EN6に手書きで漢字が記入されている。これらの手書き文字は、誤り(例えば、上述した5種類の誤り)を含み得る。
S30では、制御部210は、読取部220に記入済みのテストシートTSを読み取らせることによって、読取部220に記入済みのテストシートTSを示すスキャンデータを生成させる。図8(A)は、該スキャンデータによって示されるスキャン画像SIを示す図とも言うことができる。スキャンデータは、例えば、RGB画像データである。例えば、受験者の人数分の記入済みのテストシートTSが読み取られて、受験者の人数分のスキャンデータが生成される。
S40では、制御部210は、生成されたスキャンデータ、例えば、受験者の人数分のスキャンデータをサーバ100に送信する。S50では、制御部210は、採点済シートデータを、サーバ100から受信する。例えば、制御部210は、S40にてサーバ100に送信した受験者の人数分のスキャンデータに対する応答として、受験者の人数分の採点済シートデータを受信する。採点済シートデータは、サーバ100のCPU110が後述する処理(図9)を実行することによって、生成される。
図8(B)には、採点済シートデータによって示される採点済テスト画像RIの一例が図示されている。図8(B)の採点済テスト画像RIは、図8(A)のスキャン画像SIに、採点結果に関する付加画像Aa1~Aa6、Ab2~Ab6、Ac2~Ac6が付加された画像である。これらの付加画像については、後述する。
S60では、制御部210は、採点済シートデータを用いて、印刷部230に、採点済みシートデータSDによって示される採点済テスト画像RIを用紙に印刷させる。これによって、採点済テスト画像RIが印刷された採点済みのテストシートが作成される。例えば、採点済みのテストシートは、例えば、受験者の人数分だけ作成される。採点済みのテストシートは、ユーザや受験者の利用に供される。
A-3-2.サーバの処理
図9は、採点処理のうち、サーバ100が実行する処理のフローチャートである。S100では、サーバ100のCPU110は、図6のS40にて複合機200から送信されるスキャンデータを受信する。例えば、受験者の人数分のスキャンデータが受信される。図9のS105~S155の処理は、S100で受信されるスキャンデータのそれぞれについて実行される。以下では、一つのスキャンデータ、具体的には、図8(A)に示すスキャン画像SIを示すスキャンデータに対してS105~S155の処理を説明する。
S105では、CPU110は、スキャンデータを用いて、スキャン画像SIに含まれる複数個の記入領域EN1~EN6を特定する。記入領域EN1~EN6の特定は、シートデータSDに対応する属性データAD(図1)を用いて実行される。属性データADは、図7に示す属性情報AD1~AD6を含んでいる。属性情報AD1~AD6は、シートデータSDによって示されるテスト画像TIに含まれる記入領域EN1~EN6に対応する情報である。各属性情報は、対応する記入領域を特定するための領域情報を含んでいる。領域情報は、例えば、矩形の記入領域の左上と右下の頂点の位置(座標)を、テスト画像TIの特定位置(例えば、左上の頂点)を基準とする座標系で示す座標情報である。テスト画像TI上における記入領域EN1~EN6の位置は、スキャン画像SI上における記入領域EN1~EN6の位置と等しいので、CPU110は、これらの領域情報に基づいてスキャン画像SI上における記入領域EN1~EN6を特定できる。
S110では、CPU110は、スキャンデータから、複数個の記入領域EN1~EN6のそれぞれに対応する部分画像データを、入力画像データIDとして取得する。これによって、例えば、図3(A)に示す6個の入力画像II1~II6を示す6個の入力画像データIDが取得される。なお、入力画像データIDは、取得された部分画像データに対して、所定の処理(例えば、ノイズの除去処理や二値化処理やスムージング処理)が実行された後の画像データであっても良い。
S112では、CPU110は、取得された複数個の入力画像データIDの中から、1個の注目入力画像データを選択する。例えば、図3(A)に示す6個の入力画像II1~II6を示す6個の入力画像データIDの中から、1個の注目入力画像データが選択される。
S115では、CPU110は、注目入力画像データに対応するラベルデータLDを取得する。本実施例では、ラベルデータLDは、図7に示すように、属性データADに含まれる属性情報AD1~AD6に含まれている。各属性情報のラベルデータLDは、その属性情報に対応する記入領域に記入されるべき文字に割り当てられたラベルデータLDである。例えば、記入領域EN2に対応する入力画像データIDが注目入力画像データである場合には、当該記入領域EN2に対応する属性情報AD2に含まれるラベルデータLDが取得される(図7)。図7の例では、属性情報AD2に含まれるラベルデータLDは、「火」の文字に割り当てられたラベルデータLDである。
S120では、CPU110は、注目入力画像データと、対応するラベルデータLDと、のペアを、入力データとして、生成ネットワークGNに入力する。これによって、入力された入力画像データIDに対応する出力画像データODが生成される。例えば、図3(A)に示す入力画像II2を示す入力画像データIDが注目入力画像データである場合には、図3(B)の出力画像OI2を示す出力画像データODが生成される。
S125では、CPU110は、注目入力画像データと、注目入力画像データに対応する出力画像データODと、を用いて、差分データDDを生成する。例えば、図3(A)に示す入力画像II2を示す入力画像データIDが注目入力画像データである場合には、図3(C)の差分画像DI2を示す差分データDDが生成される。
S130では、CPU110は、生成された差分データDDを、識別ネットワークDNに入力する。これによって、入力された差分データDDに対応する識別データKDが生成される。例えば、図3(A)の入力画像II2を示す入力画像データIDが注目入力画像データである場合には、図3(D)の「はらいの誤り」を識別結果として示す識別データKDが生成される。
S135では、CPU110は、生成された識別データに基づいて、注目入力画像に示される手書き文字の採点結果を決定する。注目入力画像は、注目入力画像データによって示される入力画像IIである。採点結果は、例えば、評価値を含む。本実施例では、評価値は、3段階であり、「0点」、「1点」、「2点」のいずれか中から選択される。例えば、差分データDDによって示される識別結果が「正解」である場合には、評価値は、「2点」に決定される。差分データDDによって示される識別結果が字画の終端に関する誤り、すなわち、「はらいの誤り」、「はねの誤り」、「止めの誤り」のうちのいずれかである場合には、評価値は、「1点」に決定される。差分データDDによって示される識別結果が字画の全体に関する誤り、すなわち、「字画不足」、「字画余分」のうちのいずれかである場合には、評価値は、「0点」に決定される。採点結果は、差分データDDが「誤り」を示す場合には、さらに、誤りの種類を含む。誤りの種類は、本実施例では、「はらいの誤り」、「はねの誤り」、「止めの誤り」、「字画不足」、「字画余分」のうちのいずれかである。
S140では、CPU110は、S110にて取得された全ての入力画像データを、注目入力画像データとして処理したか否かを判断する。未処理の入力画像データがある場合には(S140:NO)、CPU110は、S112に戻る。全ての入力画像データが処理された場合には(S140:YES)、CPU110は、S145にて、採点結果を、成績データベースDB(図1)に記録する。記録される採点結果は、各入力画像データに対応する評価値および誤りの種類を含む。記録される採点結果は、さらに、スキャンデータごと、すなわち、記入済みのテストシートTSごとの合計の評価値(テストの得点)を含んでも良い。
S150では、CPU110は、採点結果に基づき、採点済テスト画像RI(図8(B))を示す採点済シートデータを生成する。例えば、CPU110は、S100にて取得されたスキャンデータを用いて、図8(A)のスキャン画像SIに、採点結果に関する付加画像Aa1~Aa6、Ab2~Ab6、Ac2~Ac6を付加する。
第1付加画像Aa1~Aa6は、それぞれ、記入領域EN1~EN6に対応している。第1付加画像Aa1~Aa6は、それぞれ、対応する記入領域を観察者が認識できるように、対応する記入領域と重なる位置や記入領域の近傍に配置される。
第1付加画像Aa1~Aa6は、それぞれ、対応する記入領域の手書き文字の採点結果のうち、上述した評価値を示す。丸印を示す付加画像Aa1は、記入領域EN1の手書き文字の評価値が「2点」であることを示す。また、丸印を示す付加画像Aa1は、記入領域EN1の手書き文字が「正解」であること、すなわち、対応するラベルデータLDによって識別される文字として正しい文字であることを示す。三角印を示す付加画像Aa2、Aa3、Aa6は、記入領域EN2、EN3、EN6の手書き文字の評価値が「1点」であることを示す。バツ印を示す付加画像Aa4、Aa5は、記入領域EN4、EN5の手書き文字の評価値が「0点」であることを示す。また、三角印やバツ印を示す付加画像は、記入領域の手書き文字が誤りを含むこと、すなわち、対応するラベルデータLDによって識別される文字として正しい文字でないことを示す。
第2付加画像Ab2~Ab6は、それぞれ、対応する記入領域の手書き文字が誤りを含む場合に、当該誤りを含む部位を示す画像(図8(B)の例では丸印の画像)である。CPU110は、記入領域に対応する差分データDDに基づいて、記入領域において誤りを含む部位を特定し、特定された部位に第2付加画像を配置する。例えば、差分データDDによって示される差分画像DIにおいて、誤りを示す要素(不足要素MEまたは余分要素OE)が存在する位置が特定される。そして、差分画像DIにおける誤りを示す要素の位置に対応する記入領域における位置に、第2付加画像が配置される。
第3付加画像Ac2~Ac6は、それぞれ、対応する記入領域の手書き文字が誤りを含む場合に、当該誤りの種類を示す画像である。図8(B)の例では、第3付加画像Ac2~Ac6は、それぞれ、上述した5種類の誤りを文字で示す画像である。具体的には、「はらいの誤り」、「はねの誤り」、「画数不足」、「画数余分」、「止めの誤り」を示す第3付加画像は、それぞれ、「はらう」、「はねる」、「ふそく」、「よぶん」、「とめる」を示す画像である。
S155では、CPU110は、生成された採点済シートデータをスキャンデータの送信元である複合機200に送信して、処理を終了する。
A-4.生成ネットワークGNおよび識別ネットワークDNのトレーニング
上述した生成ネットワークGNは、入力画像データIDとラベルデータLDとからなる入力データが入力された場合に、所望の出力画像データODを生成できるように、トレーニングされている。識別ネットワークDNは、差分データDDが入力された場合に、所望の差分データDDを生成できるように、トレーニングされている。以下では、これらのネットワークGN、DNのトレーニングについて説明する。これらのネットワークGN、DNのトレーニングは、例えば、複合機200を製造する事業者によって実行される。
A-4-1.トレーニング装置の構成
図10は、本実施例の生成ネットワークGNと識別ネットワークDNとのトレーニングを実行するトレーニング装置300の構成を示すブロック図である。
トレーニング装置300は、パーソナルコンピュータやサーバなどの計算機である。トレーニング装置300は、トレーニング装置300のコントローラとしてのCPU310と、RAMなどの揮発性記憶装置320と、ハードディスクドライブやフラッシュメモリなどの不揮発性記憶装置330と、液晶ディスプレイなどの表示部340と、キーボードやマウスなどの操作部350と、外部機器と接続するための通信インタフェース(IF)370と、を備えている。
揮発性記憶装置320は、CPU310が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置330には、コンピュータプログラムPGtと、トレーニング用の複数個の入力画像データIDを含む入力画像データ群IG1、IG2と、トレーニング用の複数個のラベルデータLDを含むラベルデータ群LGと、教師データ群TGと、が格納されている。揮発性記憶装置120や不揮発性記憶装置130は、トレーニング装置300の内部メモリである。第1入力画像データ群IG1とラベルデータ群LGとは、生成ネットワークGNのトレーニング処理の際に用いられる。第2入力画像データ群IG2と教師データ群TGとラベルデータ群LGとは、識別ネットワークDNのトレーニング処理の際に用いられる。
コンピュータプログラムPGtは、例えば、複合機200の製造者が運用するサーバからダウンロードされる形態で提供される。これに代えて、コンピュータプログラムPGtは、DVD-ROMなどに格納される形態で提供されてもよい。CPU110は、コンピュータプログラムPGtを実行することにより、後述するトレーニング処理を実行する。
コンピュータプログラムPGtは、上述した生成ネットワークGN(図4)と生成ネットワークGN(図5)との機能をCPU310に実現させるコンピュータプログラムをモジュールとして含んでいる。
A-4-2.生成ネットワークGNのトレーニング処理
先ず、生成ネットワークGNのトレーニング処理の際に用いられる第1入力画像データ群IG1とラベルデータ群LGについて説明する。図11は、第1入力画像データ群IG1とラベルデータ群LGとの一例を示す図である。第1入力画像データ群IG1は、複数個の画像データ群を含んでいる。一つの画像データ群は、1種類の文字について複数個の入力画像データIDを含む。一つの画像データ群に含まれる複数個の入力画像データIDは、それぞれ、1種類の文字について、書体(筆跡)が互いに異なる手書き文字を示す。例えば、図11の例では、画像データ群IG1a、IG1b、IG1cは、それぞれ、「花」、「火」、「木」について、書体が互いに異なる手書き文字の示す複数個の入力画像データIDを含んでいる。画像データ群は、書き取りテストの対象となる全ての文字(例えば、漢字)について、それぞれ、準備される。1個の画像データ群に含まれる入力画像データIDの個数は、例えば、数個~数百個である。
ラベルデータ群LGは、複数個のラベルデータLDを含んでいる。1個のラベルデータLDは、入力画像データ群IGに含まれる1個の画像データ群に対応付けられている。ラベルデータLDは、対応する画像データ群に含まれる複数個の入力画像データIDによって示される文字に割り当てられた識別情報である。図11の例では、画像データ群IG1a、IG1b、IG1cに対応するラベルデータLDa、LDb、LDcは、それぞれ、「花」、「火」、「木」に割り当てられた識別情報である。
なお、第1入力画像データ群IG1に含まれる画像データ群IG1a、IG1b、IG1cに含まれる各入力画像データIDは、誤りを含まない文字を示す。すなわち、これらの入力画像データIDは、対応するラベルデータLDによって識別される文字として正しい文字を示す。
生成ネットワークGNのトレーニング処理について説明する。トレーニング処理は、生成ネットワークGNの上述した複数個の演算パラメータPe、Pdを調整することで、生成ネットワークGNが適切な出力画像データODを出力できるようにトレーニングする処理である。上述したサーバ100の不揮発性記憶装置330に格納されたコンピュータプログラムPGtに組み込まれた生成ネットワークGNは、本トレーニング処理によってトレーニングされた学習済みモデルである。
図12は、生成ネットワークGNのトレーニング処理のフローチャートである。S210では、CPU310は、生成ネットワークGNの複数個の演算パラメータPe、Pdを初期化する。例えば、これらの演算パラメータPe、Pdの初期値は、同一の分布(例えば、正規分布)から独立に取得された乱数に設定される。
S220では、CPU310は、不揮発性記憶装置330に格納された第1入力画像データ群IG1の中から、バッチサイズ分の入力画像データIDを選択する。第1入力画像データ群IG1に含まれる複数個の入力画像データIDは、V個(Vは2以上の整数)ずつの入力画像データIDをそれぞれ含む複数個のグループ(バッチ)に予め分割されている。CPU310は、これらの複数個のグループから1個のグループを順次に選択することによって、V個の使用すべき入力画像データIDを選択する。これに代えて、V個ずつの入力画像データIDは、第1入力画像データ群IG1に含まれる複数個の入力画像データIDから、毎回、ランダムに選択されても良い。
S230では、CPU310は、選択されたV個の入力画像データIDを、それぞれ、対応するラベルデータLDとともに、生成ネットワークGNに入力して、V個の出力画像データODを生成する。
S240では、CPU310は、V個の入力画像データIDのそれぞれについて、入力画像データIDと、該入力画像データIDに対応する出力画像データODと、の間の誤差値E1を算出する。誤差値E1は、所定の損失関数に基づいて算出される。例えば、誤差値E1の算出には、平均二乗誤差(MSE(Mean Squared Error))が用いられる。誤差値E1は、入力画像データIDと出力画像データODとの差分が小さくなるほど小さくなる。
S250では、CPU310は、V個の誤差値E1を用いて、生成ネットワークGNの複数個の演算パラメータPe、Pdを調整する。具体的には、CPU310は、誤差値E1が小さくなるように、すなわち、入力画像データIDと出力画像データODとの差分が小さくなるように、所定のアルゴリズムに従って演算パラメータPe、Pdを調整する。所定のアルゴリズムには、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
S260では、CPU310は、トレーニングが完了したか否かを判断する。本実施例では、作業者からの完了指示が入力された場合にはトレーニングが完了したと判断し、トレーニングの継続指示が入力された場合にはトレーニングが完了していないと判断する。例えば、CPU310は、トレーニング用に用いられた入力画像データIDとは別の複数個のテスト用の入力画像データIDを、生成ネットワークGNに入力して、複数個の出力画像データODを生成する。作業者は、出力画像データODによって示される画像が、テスト用の対応する入力画像データIDによって示される画像を十分に再現できているか否かを確認する。作業者は、確認結果に応じて、操作部350を介して、トレーニングの完了指示または継続指示を入力する。変形例では、例えば、S220~S250の処理が所定回数だけ繰り返された場合に、トレーニングが完了されたと判断されても良い。
トレーニングが完了していないと判断される場合には(S260:NO)、CPU310は、S220に処理を戻す。トレーニングが完了したと判断される場合には(S260:YES)、CPU310は、生成ネットワークGNのトレーニング処理を終了する。このトレーニング処理が終了した時点で、生成ネットワークGNは、演算パラメータPe、Pdが調整された学習済みモデルになっている。したがって、このトレーニング処理は、学習済みの生成ネットワークGNを生成(製造)する処理である、と言うことができる。
A-4-3.識別ネットワークDNのトレーニング処理
先ず、識別ネットワークDNのトレーニング処理の際に用いられる第2入力画像データ群IG2とラベルデータ群LGと教師データ群TGとについて説明する。図13は、第2入力画像データ群IG2とラベルデータ群LGと教師データ群TGの一例を示す図である。第2入力画像データ群IG2は、第1入力画像データ群IG1と同様に、複数個の画像データ群を含んでいる。第2入力画像データ群IG2に含まれる画像データ群には、第1入力画像データ群IG1と同様に、画像データ群に含まれる複数個の入力画像データIDによって示される文字に割り当てられたラベルデータLDが対応付けられている。例えば、図13の例では、画像データ群IG2a、IG2b、IG2cには、それぞれ、「花」、「火」、「木」に割り当てられたラベルデータLDa、LDb、LDcが対応付けられている。
第2入力画像データ群IG2の各画像データ群は、それぞれ、複数個の入力画像データIDを含んでいる。第1入力画像データ群IG1とは異なり、第2入力画像データ群IG2は、対応するラベルデータLDによって識別される文字として正しい文字を示す入力画像データIDと、上述した5種類の誤りのいずれかを含む文字を示す入力画像データIDと、を含んでいる。具体的には、第2入力画像データ群IG2は、上述の6種類の識別結果(「正解」、「はらいの誤り」、「はねの誤り」、「画数不足」、「画数余分」、「止めの誤り」)に対応する文字を示す入力画像データIDを、所定数ずつ(例えば、100個ずつ)含んでいる。
図13に示すように、教師データ群TGは、第2入力画像データ群IG2に含まれる全ての入力画像データIDのそれぞれに1個ずつ対応付けられた教師データTDを含む。各教師データTDは、対応する入力画像データIDが識別ネットワークDNに入力された場合に、識別ネットワークDNが生成すべき理想的な識別データKDである。具体的には、教師データTDは、識別データKDと同様に、6種類の識別結果と一対一で対応する6個の値を含む6次元のデータである。例えば、誤りを含まない正しい文字を示す入力画像データIDに対応する教師データTDでは、「正解」に対応する値が「1」であり、残りの5つの値が「0」である。また、「はねの誤り」を含む文字を示す入力画像データIDに対応する教師データTDでは、「はねの誤り」に対応する値が「1」であり、残りの5つの値が「0」である。第2入力画像データ群IG2に含まれる各入力画像データIDへの教師データTDの対応付けは、例えば、作業者によって行われる。
識別ネットワークDNのトレーニング処理について説明する。このトレーニング処理は、
このトレーニング処理は、生成ネットワークGNのトレーニング処理(図12)が完了した後に実行される。このトレーニング処理は、識別ネットワークDNのクラス分類部CLSの上述した複数個の演算パラメータPdnを調整することで、識別ネットワークDNが適切な識別データKDを出力できるようにトレーニングする処理である。なお、上述したように、特徴抽出部CEXの複数個の演算パラメータには、公開されているVGG16の演算パラメータが用いられるので、このトレーニング処理では、調整されない。このように、このトレーニング処理は、いわゆるファインチューニング(fine tuning)を行う処理である。
サーバ100の不揮発性記憶装置330に格納されたコンピュータプログラムPGtに組み込まれた識別ネットワークDNは、本トレーニング処理によってトレーニングされた学習済みモデルである。
図14は、識別ネットワークDNのトレーニング処理のフローチャートである。S310では、CPU310は、第2入力画像データ群IG2を用いて、トレーニング用の複数個の差分データDDを生成する。具体的には、CPU310は、第2入力画像データ群IG2に含まれる複数個の入力画像データIDのそれぞれを対応するラベルデータLDとともに学習済みの生成ネットワークGNに入力して、複数個の出力画像データODを生成する。CPU310は、第2入力画像データ群IG2に含まれる複数個の入力画像データIDと、生成された複数個の出力画像データODと、を用いて、複数個の差分データDDを生成する。
S320では、CPU310は、生成された複数個の差分データDDを教師データTDと対応付けて不揮発性記憶装置330に記憶する。各差分データDDには、教師データ群TGに含まれる複数個の教師データTDのうち、該差分データDDの生成に用いられた入力画像データIDに対応する教師データTDが対応付けられる。
S330では、CPU310は、識別ネットワークDNのクラス分類部CLSの複数個の演算パラメータPdnを初期化する。例えば、これらの演算パラメータPdnの初期値は、同一の分布(例えば、正規分布)から独立に取得された乱数に設定される。
S340では、CPU310は、不揮発性記憶装置330に格納されたトレーニング用の複数個の差分データDDの中から、バッチサイズ分の差分データDDを選択する。トレーニング用の複数個の差分データDDは、例えば、M個(Mは2以上の整数)ずつの差分データDDをそれぞれ含む複数個のグループ(バッチ)に分割される。CPU310は、これらの複数個のグループから1個のグループを順次に選択することによって、M個の使用すべき差分データDDを選択する。M個ずつの差分データDDは、毎回、ランダムに選択されても良い。
S350では、CPU310は、選択されたM個の差分データDDを、それぞれ、識別ネットワークDNに入力して、M個の識別データKDを生成する。
S360では、CPU310は、M個の識別データKDのそれぞれについて、識別データKDと、該差分データDDに対応する教師データTDと、の間の誤差値E2を算出する。誤差値E2は、所定の損失関数に基づいて算出される。例えば、誤差値E2の算出には、平均二乗誤差が用いられる。この場合に誤差値E2は、識別データKDと教師データTDとの差分が小さくなるほど小さくなる。
S370では、CPU310は、M個の誤差値E2を用いて、識別ネットワークDNのクラス分類部CLSの複数個の演算パラメータPnを調整する。具体的には、CPU310は、誤差値E2が小さくなるように、すなわち、識別データKDと教師データTDとの差分が小さくなるように、所定のアルゴリズムに従って演算パラメータPdnを調整する。所定のアルゴリズムには、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
S380では、CPU310は、トレーニングが完了したか否かを判断する。本実施例では、作業者からの完了指示が入力された場合にはトレーニングが完了したと判断し、トレーニングの継続指示が入力された場合にはトレーニングが完了していないと判断する。例えば、CPU310は、トレーニング用に用いられた入力画像データIDとは別の複数個のテスト用の入力画像データIDに基づいてテスト用の差分データDDを生成し、該差分データDDを識別ネットワークDNに入力して複数個の識別データKDを生成する。作業者は、識別データKDが、対応する入力画像データIDによって示される画像に対する識別結果を適切に示しているか否かを確認する。作業者は、確認結果に応じて、操作部250を介して、トレーニングの完了指示または継続指示を入力する。変形例では、例えば、S340~S370の処理が所定回数だけ繰り返された場合に、トレーニングが完了されたと判断されても良い。
トレーニングが完了していないと判断される場合には(S380:NO)、CPU310は、S340に処理を戻す。トレーニングが完了したと判断される場合には(S380:YES)、CPU310は、識別ネットワークDNのトレーニング処理を終了する。このトレーニング処理が終了した時点で、識別ネットワークDNは、演算パラメータPdnが調整された学習済みモデルになっている。したがって、このトレーニング処理は、学習済みの識別ネットワークDNを生成(製造)する処理である、と言うことができる。
以上説明した本実施例のサーバ100の処理(図9)において、図9のS100~S110にて手書き文字を示す入力画像データIDを取得するCPU110は、画像取得部の例である。図9のS115にて入力画像データIDに対応付けられるラベルデータLDを取得するCPU110は、ラベル取得部の例である。図9のS120にて入力画像データIDとラベルデータLDとを含む入力データを生成ネットワークGNに入力することによって出力画像データODを生成するCPU110は、出力画像生成部の例である。図9のS125~S135にて入力画像データIDと出力画像データODとを用いて、入力画像データIDによって示される手書き文字がラベルデータLDによって識別される文字として正しい文字であるか否かを判断するCPU110は、判断部の例である。本実施例のサーバ100によれば、手書き文字が正しい文字であるか否かを、生成ネットワークGNを用いて容易に判断することができる。
例えば、本実施例では、複合機200のユーザは、手書き文字が正しい文字であるか否かの判断基準(判断対象とすべき部位や判断の手法など)を文字ごとに登録する作業を行う必要がない。ユーザは、例えば、複合機200を利用して、スキャンデータなどの入力画像データIDを含むデータをサーバ100に送信するだけで、サーバ100に手書き文字が正しい文字であるか否か判断させることができる。したがって、例えば、書き取りテストの採点などにおいて、手書き文字が正しい文字であるか否かを判断するユーザの負担を軽減できる。
さらに、本実施例では、入力画像データIDは、手書き文字が記入された原稿である記入済みのテストシートTSを示すスキャンデータに基づく画像データである(図8(A)、図9のS105、S110)。したがって、記入済みのテストシートTSに記入された手書き文字が正しい文字であるか否かを、生成ネットワークGNを用いて容易に判断することができる。例えば、複合機200のユーザは、記入済みのテストシートTSを示すスキャンデータを、複合機200を利用して生成し、該スキャンデータをサーバ100に送信するだけで、サーバ100に手書き文字が正しい文字であるか否か判断させることができる。
さらに、本実施例では、CPU110は、スキャンデータによって示されるスキャン画像SI内の複数個の記入領域EN1~EN6を特定し(図9のS105)、これらの記入領域に対応する複数個の入力画像データIDを取得する(図9のS110)。CPU110は、該複数個の入力画像データIDのそれぞれによって示される手書き文字が正しい文字であるか否かを判断する(図9のS112~S140)。この結果、サーバ100は、テストシートTSに記入された複数個の手書き文字が正しい文字であるか否かを容易に判断することができる。
さらに、本実施例において、図9のS150にて、採点結果に基づき、採点済テスト画像RIを示す採点済シートデータを生成するCPU110は、第1処理済画像生成部の例である。採点済テスト画像RIは、スキャン画像SIに第1付加画像Aa1~Aa6(図8(B))が付加された画像である。この結果、サーバ100は、手書き文字が正しい文字であるか否かの判断結果を示す採点済シートデータをユーザに提供できる。ユーザは、採点済テスト画像RIを見るだけで、容易に手書き文字が正しい文字であるか否かを把握できる。
さらに、本実施例において、図9のS150にて採点済シートデータを生成する際に、上述したように差分データDDを用いて手書き文字の誤りを含む部位を特定するCPU110は、特定部の例である。そして、その特定結果を用いて、採点済テスト画像RIを示す採点済シートデータを生成するCPU110は、第2処理済画像生成部の例である。採点済テスト画像RIは、スキャン画像SIの手書き文字に、誤りを含む部位を示す第2付加画像Ab2~Ab6(図8(B))が付加された画像である。この結果、サーバ100は、手書き文字の誤りを含む部位を示す採点済シートデータをユーザに提供できる。ユーザは、採点済テスト画像RIを見るだけで、容易に手書き文字の誤りを含む部位を把握できる。
さらに、本実施例において、採点済テスト画像RIは、スキャン画像SIに、手書き文字の誤りの種類を示す第3付加画像Ac2~Ac6(図8(B))が付加された画像である。この結果、サーバ100は、手書き文字の誤りの種類を示す採点済シートデータをユーザに提供できる。ユーザは、採点済テスト画像RIを見るだけで、容易に手書き文字の誤りの種類を把握できる。
さらに、本実施例において、図9のS155にて、採点済シートデータを複合機200に送信することによって、印刷実行部として複合機200に採点済テスト画像RIを印刷させるCPU110は、印刷制御部の例である。この結果、サーバ100は、印刷された採点済テスト画像RIを提供できる。ユーザは、例えば、印刷された採点済テスト画像RIを見ることで、容易に採点結果を確認できる。ユーザは、例えば、印刷された採点済テスト画像RIを受験者に配布することで、容易に採点結果を受験者に通知できる。
さらに、本実施例において、図9のS125にて差分データDDを生成するCPU110は、差分生成部の例である。図9のS130、S135にて、差分データDDに基づいて手書き文字に含まれる誤りの種類を判定するCPU110は、判定部の例である。この結果、サーバ100は、差分データDDに基づいて手書き文字に含まれる誤りの種類を適切に判定できる。
より具体的には、CPU110は、差分データDDを識別ネットワークDNに入力することによって、手書き文字の誤りの種類を示す識別データKDを生成し(図9のS130)、識別データKDに基づいて手書き文字に含まれる誤りの種類を判定する(図9のS135)。この結果、識別ネットワークDNを用いて、手書き文字に含まれる誤りの種類をより容易に判定できる。例えば、ユーザは、手書き文字に含まれる誤りの種類の判定基準などをサーバ100に登録する必要がない。
さらに、本実施例の差分データDDは、余分要素OEと、不足要素MEと、を区別して示すデータである(図3(C))。この結果、入力画像IIに示される手書き文字に不足している要素と余分な要素とを区別することで、手書き文字に含まれる誤りの種類をより適切に判定できる。例えば、仮に、差分データDDが「はね」を示していたとしても、該「はね」が余分要素OEであるか不足要素MEであるかが区別されていないとする。この場合には、識別ネットワークDNは、差分データDDに基づいて誤りを判定する際に、「はね」が不足している誤り(例えば、図3(D)の「はねの誤り」)と、「はね」が余分である誤り(例えば、図3(D)の「止めの誤り」)と、を区別できない可能性がある。本実施例では、このような不都合を抑制することができる。
さらに、本実施例では、判定される手書き文字の誤りは、字画の終端の形状に関する誤り(例えば、図3(D)の「はらいの誤り」、「はねの誤り」、「止めの誤り」)を含む。このような字画の終端の形状を判定する作業は、例えば、人が行うこと場合には手間と注意力を要する作業である。本実施例によれば、サーバ100が字画の終端の形状に関する誤りの種類を適切に判定できる。したがって、ユーザの負担をより効果的に軽減できる。
さらに、本実施例において、図9のS150にて、3段階の値の中から選択される手書き文字の評価値を決定するCPU110は、評価部の例である。この結果、サーバ100は、手書き文字が正しい文字であるか否かだけでなく、3段階の評価値を決定するので、より精細な採点を行うことができる。
さらに、本実施例の学習済みの生成ネットワークGNは、図12のトレーニング処理によってトレーニングされる。このトレーニング処理は、入力画像データIDと、入力画像データIDに対応付けられるラベルデータLDと、をそれぞれ含む複数個の入力データを生成ネットワークGNに入力することによって、複数個の出力画像データODを生成する処理(図12のS230)と、複数個の入力画像データIDと複数個の出力画像データODとを用いて、入力画像データIDと、対応する出力画像データODと、の差が小さくなるように、複数個の演算パラメータPe、Pdを調整する処理(図11のS250)と、を含む。そして、図11に示すように、複数個の入力データは、1種類のラベルデータLDごとに複数種類の入力画像データIDを含む。複数種類の入力画像データIDは、互いに異なる書体を有する特定の文字をそれぞれ示す。この結果、生成ネットワークGNは、様々な書体の文字を再構成することができるようにトレーニングされる。したがって、学習済みの生成ネットワークGNを用いることで、様々な書体を有し得る手書き文字が正しい文字であるか否かを精度良く判断することができる。
さらに、図12のトレーニング処理で用いられる複数種類の入力画像データIDは、手書き文字を示す画像データを含む。この結果、学習済みの生成ネットワークGNは、手書き文字を再構成することができるようにトレーニングされるので、手書き文字が正しい文字であるか否かを精度良く判断することができる。
以上の説明から解るように、本実施例の生成ネットワークGNは、第1の機械学習モデルの例であり、識別ネットワークDNは、第2の機械学習モデルの例である。スキャンデータは、原稿画像データの例であり、採点済テスト画像RIは、第1処理済画像および第2処理済画像の例である。余分要素OEは、第1要素の例であり、不足要素MEは、第2要素の例である。
B.変形例:
(1)上記実施例では、入力画像データIDは、スキャンデータから取得されている。これに代えて、入力画像データIDは、2次元イメージセンサを備えるデジタルカメラを用いて、記入済みのテストシートTSを撮影して得られる撮影画像データから取得されても良い。また、入力画像データIDは、例えば、タッチパネル上に指やタッチペンを用いて手書きされた文字を示す画像データから取得されて良い。
(2)上記実施例では、入力画像データIDは、複数個の記入領域を含むスキャン画像SIから取得されているが、これに限られない。例えば、入力画像データIDは、習字などの手書き文字をデジタルカメラで一文字ずつ撮影して得られる画像データであっても良い。
(3)上記実施例では、採点済テスト画像RI(図8(A))は、3種類の付加画像、すなわち、第1~第3付加画像を全て含んでいる。これに代えて、採点済テスト画像RIは、3種類の付加画像のうちの1または2種類の付加画像のみを含んでもよい。
また、採点済テスト画像RI(図8(A))は、他の種類の付加画像を含んでも良い。例えば、CPU110は、成績データベースDBに記録された採点結果の履歴と、注目入力画像データについての採点結果と、に基づいて、特別な付加画像が付加されても良い。例えば、過去に複数回に亘って誤りがあった文字についての採点結果が「正解」と判定された場合に、対応する記入領域に特別な付加画像(例えば、二重丸や花丸を示す画像)が付加されても良い。
(4)上記実施例では、採点済テスト画像RIは、複合機200によって印刷されることによって、ユーザに提供される。これに代えて、例えば、ユーザの複合機200や端末装置(例えば、スマートフォン)の表示部に表示されることによって、ユーザに提供されても良い。
(5)上記実施例のネットワークシステムNS(図2)は、識別ネットワークDNを含まなくても良い。この場合には、CPU110は、例えば、差分データDDに基づいて、識別ネットワークDNを用いることなく、入力画像データIDによって示される手書き文字が正しい文字であるか否かを判断する。例えば、差分データDDに含まれる余分要素OEまたは不足要素MEを構成する画素数が閾値以上である場合に、入力画像データIDによって示される手書き文字は正しい文字ではないと判断され、該画素数が閾値未満である場合に、入力画像データIDによって示される手書き文字は正しい文字であると判断される。また、この場合において、手書き文字が正しい文字でないと判断された場合には、手書き文字に含まれる誤りの種類の判定は行われなくても良い。あるいは、手書き文字が正しい文字でないと判断された場合には、CPU110は、識別ネットワークDNを用いない手法、例えば、パターンマッチングを用いて、差分データDDを解析することによって、手書き文字に含まれる誤りの種類を判定しても良い。
(6)上記実施例では、差分データDDは、余分要素OEと不足要素MEとを区別して示すデータである。これに代えて、差分データDDは、余分要素OEと不足要素MEとを区別することなく示すデータであっても良い。例えば、差分データDDは、入力画像データIDの各画素の値と出力画像データODの対応する画素の値との差の絶対値を、画素ごとに含むデータであっても良い。
(7)上記実施例では、差分データDDに基づいて判定される手書き文字の誤りは、「はらい」や「はね」などの字画の終端の形状に関する誤りと、「字画不足」や「字画余分」などの字画の全体に関する誤りと、を含む。これに限らず、差分データDDに基づいて判定される手書き文字の誤りは、字画の終端の形状に関する誤りのみであっても良いし、字画の全体に関する誤りのみであっても良い。また、差分データDDに基づいて判定される手書き文字の誤りは、本実施例の5種類の誤りの全部または一部とともに、あるいは、全部または一部に代えて、他の種類の誤りを含んでも良い。例えば、差分データDDに基づいて判定される手書き文字の誤りは、字画の全体の形状の誤り、あるいは、一の字画と他の字画との関係(例えば、接続位置や接続の有無)の誤りを含んでも良い。
(8)上記実施例では、図9のS135にて決定される評価値は、3段階の評価値である、これに代えて、該評価値は、例えば、正解(例えば1点)と不正解(例えば0点)の2段階の評価値であっても良いし、4段階以上の評価値であっても良い。例えば、CPU110は、差分データDDに基づいて、手書き文字に含まれる誤りの個数を特定し、誤りの個数に応じて、4段階以上の評価値を決定しても良い。
(9)上記実施例の生成ネットワークGNのトレーニングに用いられる第1入力画像データ群IG1(図11)に含まれる入力画像データIDは、手書き文字を示す画像データである。これに代えて、トレーニング用の入力画像データIDの全部または一部は、既存のフォントの文字を示す画像データであっても良い。この場合には、トレーニング用の入力画像データIDの準備が容易である。
(10)上記実施例では、採点処理の対象となる手書き文字、すなわち、テストシートTSに記入される文字は、漢字である。これに代えて、採点処理の対象となる手書き文字は、他の種類の文字、例えば、ひらがな、カタカナ、英字、アラビア文字であっても良い。
(11)上記実施例の生成ネットワークGN(図4)および識別ネットワークDN(図5)の構成は一例であり、これに限られない。例えば、生成ネットワークGNや識別ネットワークDNにおいて、畳込層や転置畳込層の層数は、適宜に変更されて良い。また、生成ネットワークGNでは、畳込層や転置畳込層の全部または一部に代えて、全結合層を備えても良い。また、生成ネットワークGNや識別ネットワークDNの各層で出力された値に対して実行される後処理も適宜に変更され得る。例えば、後処理に用いられる活性化関数は、任意の関数、例えば、ReLU、LeakyReLU、PReLU、ソフトマックス、シグモイドが用いられ得る。また、バッチノーマリゼイション、ドロップアウトなどの処理も後処理として適宜に追加や省略がされ得る。また、識別ネットワークDNは、ニューラルネットワークとは異なる機械学習モデル、例えば、サポートベクターマシーン(SVM)であっても良い。
(11)上記実施例の生成ネットワークGNや識別ネットワークDNのトレーニング処理(図12、図14)は、一例であり、これに限られない。例えば、誤差値E1、E2には、平均絶対誤差が用いられているが、これに代えて、他の種類の誤差値が用いられても良い。例えば、誤差値E1、E2には、クロスエントロピー誤差や平均絶対誤差が用いられても良い。また、識別ネットワークDNのトレーニング処理(図14)のS370では、クラス分類部CLSの演算パラメータPdnのみが調整されているが、特徴抽出部CEXの演算パラメータの全部または一部も調整されても良い。
また、生成ネットワークGNのトレーニング処理では、生成ネットワークGNと識別ネットワーク(実施例の識別ネットワークDNとは別のネットワークである)とから成るネットワークシステムであって、いわゆる敵対的生成ネットワーク(GANs(Generative adversarial networks))を構成するネットワークシステムを用いて、生成ネットワークGNをトレーニングしても良い。この場合には、識別ネットワークは、出力画像データODを偽データと判定し、入力画像データIDを真データと判定するようにトレーニングされる。生成ネットワークGNは、識別ネットワークが出力画像データODを真データであると誤って判定するようにトレーニングされる。
(12)図1のサーバ100や図10のトレーニング装置300のハードウェア構成は、一例であり、これに限られない。例えば、サーバ100やトレーニング装置300のプロセッサは、CPUに限らず、GPU(Graphics Processing Unit)やASIC(application specific integrated circuit)、あるいは、これらとCPUとの組み合わせであっても良い。また、トレーニング装置300やサーバ100は、ネットワークを介して互いに通信可能な複数個の計算機(例えば、いわゆるクラウドサーバ)であっても良い。
(13)図9の採点処理の全部を、複合機200の制御部210が実行しても良い。この場合には、サーバ100は不要である。この場合には、複合機200が画像処理装置の例である。
また、図9の採点処理の一部、例えば、スキャンデータから複数個の入力画像データIDを取得する処理(図9のS105、S110)は、複合機200の制御部210によって実行されても良い。この場合には、複合機200は、複数個の入力画像データIDをサーバ100に送信する。また、複合機200が採点結果をサーバ100から取得し、複合機200の制御部210が、採点結果の成績データベースDBへの記録(図9のS145)や、採点済シートデータの生成(図9のS150)を実行しても良い。これらの場合には、サーバ100と複合機200との全体が、画像処理装置の例である。
(14)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、生成ネットワークGNや識別ネットワークDNは、プログラムモジュールに代えて、ASIC(Application Specific Integrated Circuit)等のハードウェア回路によって実現されてよい。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。