【解決手段】計算装置11−1,11−2,・・・,12−1,12−2,・・・は、少なくとも1つの計算装置がカメラ1−1,1−2,・・・に接続される。計算装置11−1,11−2,・・・,12−1,12−2,・・・は、カメラ1−1,1−2,・・・が撮影した画像に基づく画像処理を実行する。制御装置13は、計算装置11−1,11−2,・・・,12−1,12−2,・・・から、計算装置11−1,11−2,・・・,12−1,12−2,・・・が実行した画像処理の結果を収集する。そして、制御装置13は、収集した画像処理の結果に基づいた処理を実行する。
前記情報処理システムは、前記複数の計算装置および前記制御装置それぞれに、前記複数の計算装置および前記制御装置それぞれのデバイスとして接続され、前記複数の計算装置および前記制御装置間のデータ送信を中継する中継装置を有する、
請求項1記載の情報処理システム。
前記複数の計算装置のうちの前記カメラに接続される計算装置は、前記カメラから前記カメラが撮影した画像を取得し、前記カメラが撮影した画像に対する画像処理を実行し、前記カメラが撮影した画像と自装置が実行した画像処理の結果とに基づくデータを前記複数の計算装置および前記制御装置のうちの少なくとも1つに送信し、
前記複数の計算装置のうちの前記カメラに接続されていない計算装置は、前記複数の計算装置のうちの少なくとも1つの計算装置から取得した取得データに基づく画像処理を実行し、前記取得データと自装置が実行した画像処理の結果とに基づくデータを前記複数の計算装置または前記制御装置のうちの少なくとも1つに送信する、
請求項1または2記載の情報処理システム。
前記複数の計算装置それぞれは、送信先情報を記憶し、自装置が実行した画像処理の結果に基づくデータを、前記複数の計算装置および前記制御装置のうちの前記送信先情報が示す送信先に送信する、
請求項1ないし3のいずれかに記載の情報処理システム。
【発明を実施するための形態】
【0010】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。
【0011】
図1は、第1の実施の形態に係る情報処理システムの一例を示す図である。第1の実施の形態は、情報処理システム10がカメラ1−1,1−2,・・・が撮影した画像に基づく画像処理を実行するものである。
【0012】
情報処理システム10は、計算装置11−1,11−2,・・・,12−1,12−2,・・・、制御装置13および中継装置14を有する。計算装置11−1,11−2,・・・,12−1,12−2,・・・は、少なくとも1つの計算装置がカメラ1−1,1−2,・・・に接続される。また、計算装置11−1,11−2,・・・,12−1,12−2,・・・は、カメラ1−1,1−2,・・・のうちの少なくとも1つに接続される計算装置を複数含む。ここでは、計算装置11−1,11−2,・・・,12−1,12−2,・・・のうちの計算装置11−1,11−2,・・・がカメラ1−1,1−2,・・・に接続される。例えば、計算装置11−1は、カメラ1−1に接続され、計算装置11−2は、カメラ1−2に接続される。
【0013】
中継装置14は、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13それぞれに、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13それぞれのデバイスとして接続される。例えば、中継装置14は、PCI Express(Peripheral Component Interconnect Express:PCIe、登録商標)の拡張バスを含むブリッジコントローラである。そして、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13それぞれは、ホスト側として動作するRC(Root Complex)となり、中継装置14は、デバイス側として動作するEP(End Point)となる。中継装置14は、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13間のデータ送信を中継する。
【0014】
計算装置11−1,11−2,・・・,12−1,12−2,・・・は、カメラ1−1,1−2,・・・が撮影した画像に基づく画像処理を実行する画像処理を実行するコンピュータである。なお、以下では、計算装置11−1,12−1の構成について説明するが、 計算装置11−2,・・・の構成は計算装置11−1と同様であり、計算装置12−2,・・・の構成は、計算装置12−1と同様である。
【0015】
計算装置11−1は、記憶部11a−1と演算部11c−1とを有する。記憶部11a−1は、計算装置11−1が実行する処理に用いられるデータを記憶する。記憶部11a−1は、例えば、計算装置11−1が有するメモリ、またはストレージ装置である。演算部11c−1は、計算装置11−1を制御し、所要の処理を実行可能である。演算部11c−1は、例えば、計算装置11−1が有するプロセッサ(並列処理に適したコプロセッサを含んでもよい)または演算回路である。
【0016】
記憶部11a−1は、送信先情報11b−1を記憶する。送信先情報11b−1には、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13のうちの少なくとも一つが登録されている。例えば、送信先情報11b−1には、計算装置12−1が登録されている。
【0017】
演算部11c−1は、まず、カメラ1−1からカメラ1−1が撮影した画像を取得する。例えば、演算部11c−1は、製造ラインを流れる製品をカメラ1−1が撮影した画像を取得する。次に、演算部11c−1は、カメラ1−1が撮影した画像に対する画像処理を実行する。例えば、演算部11c−1は、カメラ1−1が撮影した画像に写る製品からキズを検出する処理を実行する。
【0018】
そして、演算部11c−1は、カメラ1−1が撮影した画像と自装置が実行した画像処理の結果とに基づくデータ(結果データ)を計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13のうちの少なくとも一つに送信する。ここで、演算部11c−1は、結果データを、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13のうちの送信先情報11b−1が示す送信先に送信する。つまり、演算部11c−1は、結果データを計算装置12−1に送信する。例えば、演算部11c−1は、カメラ1−1が撮影した画像と検出したキズの画像上の位置とを計算装置12−1に送信する。
【0019】
計算装置12−1は、記憶部12a−1と演算部12c−1とを有する。記憶部12a−1は、計算装置12−1が実行する処理に用いられるデータを記憶する。記憶部12a−1は、例えば、計算装置12−1が有するメモリ、またはストレージ装置である。演算部12c−1は、計算装置12−1を制御し、所要の処理を実行可能である。演算部12c−1は、例えば、計算装置12−1が有するプロセッサ(並列処理に適したコプロセッサを含んでもよい)または演算回路である。
【0020】
記憶部12a−1は、送信先情報12b−1を記憶する。送信先情報12b−1には、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13のうちの少なくとも一つが登録されている。例えば、送信先情報12b−1には、制御装置13が登録されている。
【0021】
演算部12c−1は、計算装置11−1,11−2,・・・,12−1,12−2,・・・のうちの少なくとも1つの計算装置からデータを取得する。ここでは、演算部12c−1は、計算装置11−1から送信されたデータ(取得データ)を取得する。次に、演算部12c−1は、取得データに基づく画像処理を実行する。例えば、演算部12c−1は、キズの画像上の位置に基づいて、カメラ1−1が撮影した画像から製品のキズが写った部分を抽出し、抽出された部分に写るキズの大きさが出荷基準外であるか否かを判定する処理を実行する。
【0022】
そして、演算部12c−1は、取得データと自装置が実行した画像処理の結果とに基づくデータ(結果データ)を計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13のうちの少なくとも1つに送信する。ここで、演算部12c−1は、結果データを送信先情報12b−1に示される制御装置13に送信する。例えば、演算部12c−1は、カメラ1−1が撮影した画像に写った製品に出荷基準外の大きさのキズがあるか否かの判定結果を制御装置13に送信する。
【0023】
なお、計算装置11−2,・・・,12−2,・・・も計算装置11−1,12−1と同様の処理を実行し、計算装置12−2,・・・は、結果データを制御装置13に送信する。例えば、計算装置12−2,・・・は、カメラ1−2,・・・が撮影した画像に写った製品に出荷基準外の大きさのキズがあるか否かの判定結果を制御装置13に送信する。
【0024】
制御装置13は、計算装置11−1,11−2,・・・,12−1,12−2,・・・を統括して制御するコンピュータである。制御装置13は、処理部13aを有する。処理部13aは、制御装置13を制御し、所要の処理を実行可能である。処理部13aは、例えば、制御装置13が有するプロセッサまたは演算回路である。処理部13aは計算装置11−1,11−2,・・・,12−1,12−2,・・・から、計算装置11−1,11−2,・・・,12−1,12−2,・・・が実行した画像処理の結果を収集する。そして、処理部13aは、収集した画像処理の結果に基づいた処理を実行する。例えば、処理部13aは、カメラ1−1,1−2,・・・が撮影した製品のうち出荷基準外の大きさのキズがある製品の割合をユーザに通知する処理を実行する。
【0025】
第1の実施の形態の情報処理システム10では、計算装置11−1,11−2,・・・,12−1,12−2,・・・は、少なくとも1つの計算装置がカメラ1−1,1−2,・・・に接続され、カメラ1−1,1−2,・・・が撮影した画像に基づく画像処理を実行する。また、制御装置13は、計算装置11−1,11−2,・・・,12−1,12−2,・・・から、計算装置11−1,11−2,・・・,12−1,12−2,・・・が実行した画像処理の結果を収集し、収集した画像処理の結果に基づいた処理を実行する。これにより、情報処理システム10では、計算装置11−1,11−2,・・・は、制御装置13を介さずに、カメラ1−1,1−2,・・・が撮影した画像を取得できるため、制御装置13のデータ送受信量が減少する。よって、情報処理システム10は、画像処理の効率を向上させることができる。
【0026】
また、中継装置14は、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13それぞれに、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13それぞれのデバイスとして接続される。そして中継装置14は、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13間のデータ送信を中継する。これにより、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13それぞれは、他の装置へのデータ送信のために中継装置14のデバイスドライバのみを有していればよい。よって、情報処理システム10は、装置間のデータ送信を容易にできる。
【0027】
また、カメラ1−1,1−2,・・・に接続される計算装置11−1,11−2,・・・は、カメラ1−1,1−2,・・・からカメラ1−1,1−2,・・・が撮影した画像を取得し、カメラ1−1,1−2,・・・が撮影した画像に対する画像処理を実行する。計算装置11−1,11−2,・・・は、結果データを計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13のうちの少なくとも1つに送信する。また、カメラ1−1,1−2,・・・に接続されていない計算装置12−1,12−2,・・・は、計算装置11−1,11−2,・・・,12−1,12−2,・・・のうちの少なくとも1つの計算装置から取得した取得データに基づく画像処理を実行する。計算装置12−1,12−2,・・・は、結果データを計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13のうちの少なくとも1つに送信する。これにより、情報処理システム10は、カメラに接続されていない計算装置12−1,12−2,・・・も利用した多段階の画像処理を実行できる。
【0028】
また、計算装置11−1,12−1それぞれは、送信先情報11b−1,12b−1を記憶する。そして計算装置11−1,12−1それぞれは、結果データを、計算装置11−1,11−2,・・・,12−1,12−2,・・・および制御装置13のうちの送信先情報11b−1,12b−1が示す送信先に送信する。これにより、情報処理システム10は、画像処理におけるデータの流れを制御装置13を介さずに制御できる。
【0029】
また、計算装置11−1,11−2,・・・,12−1,12−2,・・・は、カメラ1−1,1−2,・・・のうちの少なくとも1つに接続される計算装置を複数含む。これにより、情報処理システム10は、複数のカメラそれぞれが撮影した画像に基づいた処理を、複数の計算装置に分散して実行させることができる。
【0030】
なお、送信先情報11b−1,12b−1は、複数の条件と複数の条件それぞれに対応する送信先とを含んでもよい。そして計算装置11−1,12−1それぞれは、結果データを、送信先情報11b−1,12b−1に示される、複数の条件のうちの自装置が実行した画像処理の結果が満たす条件に対応する送信先に送信してもよい。これにより、情報処理システム10は、分岐があるデータの流れを制御できる。
【0031】
〔第2の実施の形態〕
次に、第2の実施の形態について説明する。第2の実施の形態は、製造ラインを流れる製品を画像処理を用いて検査するものである。
【0032】
図2は、第2の実施の形態に係る情報処理システムの一例を示す図である。第2の実施の形態の情報処理システムは、カメラ21−1,21−2,21−3,21−4および情報処理システム400を含む。カメラ21−1〜21−4は、製造ラインに設置され、製造ラインを流れる製品を撮影する。カメラ21−1〜21−4は、それぞれ1度に1つの製品を撮影してもよいし、複数の製品を撮影してもよい。以下では、カメラ21−1〜21−4は、それぞれ1度に1つの製品を撮影する(つまり、カメラ21−1〜21−4が撮影した画像それぞれには1つの製品が写る)ものとする。
【0033】
情報処理システム400は、カメラ21−1〜21−4が撮影した製品を検査する。情報処理システム400は、制御装置100、計算装置200−1,200−2,200−3,200−4,200−5,200−6およびPCIeブリッジコントローラ300を含む。制御装置100および計算装置200−1〜200−6は、PCIeブリッジコントローラ300に接続され、PCIeブリッジコントローラ300を介して他の装置にデータを送信する。なおPCIeブリッジコントローラ300は、第1の実施の形態に示した中継装置14の一例である。
【0034】
計算装置200−1〜200−6は、画像処理に適したプロセッサ(コプロセッサ)を有するコンピュータである。計算装置200−1は、カメラ21−1に接続されている。また、計算装置200−2は、カメラ21−2に接続されている。また、計算装置200−3は、カメラ21−3に接続されている。また、計算装置200−4は、カメラ21−4に接続されている。計算装置200−1〜200−4は、カメラ21−1〜21−4が撮影した製品の画像に基づいて、製品にキズがあるか否かの判定(1次診断)をする。計算装置200−5〜200−6は、計算装置200−1〜200−4によって検出されたキズの大きさ(深さでもよい)が出荷基準外であるか否かの判定(2次診断)をする。
【0035】
制御装置100は、情報処理システム400を統括するホストPC(Personal Computer)である。制御装置100は、計算装置200−1〜200−6による1次診断および2次診断の結果を収集し、出荷基準外の大きさのキズがある製品の割合をユーザに通知する。
【0036】
図2に示すようなシステムにおいて、情報処理システム400は、カメラ21−1〜21−4が撮影した製品の検査(つまり、カメラ21−1〜21−4が撮影した画像に対する画像処理)をする。ここで、カメラが撮影した画像に対する画像処理をする他の情報処理システムとしては、情報処理システムのホストPCである制御装置がカメラが撮影した画像を取得し、取得した画像を計算装置に送信して、計算装置に画像処理を実行させることが考えられる。しかし、制御装置がカメラが撮影した画像を取得し、取得した画像を計算装置に送信する場合、カメラと制御装置との間および制御装置と計算装置との間のデータの送受信に時間がかかる。これにより、画像処理全体の効率が低下する。そこで、情報処理システム400では、計算装置200−1〜200−4がカメラ21−1〜21−4に接続されることで、制御装置100を介したデータの送受信量が削減される。
【0037】
図3は、情報処理システムの接続状態の一例を示す図である。情報処理システム400は、制御装置100、計算装置200−1〜200−6およびPCIeブリッジコントローラ300を含む。
【0038】
制御装置100および計算装置200−1〜200−6は、PCIeブリッジコントローラ300に通信可能に接続されている。具体的には、制御装置100は、2つのRCを用いて(例えば、2つのPCIeインタフェースをRCとして機能させて)PCIeブリッジコントローラ300に搭載されている2つのEPと接続されている。EPは、拡張バスの末端機器(デバイス)として認識されるスレイブ側の接続部であり、RCは、EP側を末端機器として認識して拡張バスを介した通信を制御するマスター側の接続部である。また、制御装置100は、プロセッサ101を有する。
【0039】
なお、制御装置100は、ホストPCとして機能するため、データの送受信量が大きくなることが想定されることから2つのRCを用いてPCIeブリッジコントローラ300と接続されている。このように2つのRCと2つのEPとが接続されているため、制御装置100は、データの通信経路を適切に振り分けることで(即ち、いずれのRC−EP間で通信するか決定することで)広い通信帯域の通信を行うことができる。なお、制御装置100は、1つのRCを用いてPCIeブリッジコントローラ300に搭載されている1つのEPと接続されていてもよい。
【0040】
計算装置200−1〜200−6は、1つのRCを用いてPCIeブリッジコントローラ300に搭載されている1つのEPと接続されている。また、計算装置200−1〜200−6は、プロセッサ201−1〜201−6をそれぞれ有する。
【0041】
このように情報処理システム400においては、制御装置100および計算装置200−1〜200−6がホスト側として動作可能なRCとなり、PCIeブリッジコントローラ300がデバイス側として動作可能なEPとなり、データ転送が行われる。
【0042】
なお、プロセッサ101,201−1〜201−6は、それぞれ同じメーカ(またはベンダ)から提供されてもよいし、違うメーカから提供されてもよい。例えば、プロセッサ101は、A社が提供するものであり、プロセッサ201−1は、B社が提供するものであり、プロセッサ201−2は、C社が提供するものであり、プロセッサ201−3は、D社が提供するものであるものとすることができる。また、プロセッサ201−4は、E社が提供するものであり、プロセッサ201−5は、F社が提供するものであり、プロセッサ201−6は、G社が提供するものであるものとすることができる。
【0043】
PCIeブリッジコントローラ300は、拡張バス(例えば、制御装置100および計算装置200−1〜200−6の拡張バスとして機能するバス)を有し、拡張バスを介した通信を中継する。
【0044】
図4は、制御装置のハードウェアの一構成例を示す図である。制御装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス110を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
【0045】
メモリ102は、制御装置100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0046】
バス110に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107、ネットワークインタフェース108およびPCIeインタフェース109−1,109−2がある。
【0047】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0048】
グラフィック処理装置104には、モニタ31が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ31の画面に表示させる。モニタ31としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0049】
入力インタフェース105には、キーボード32とマウス33とが接続されている。入力インタフェース105は、キーボード32やマウス33から送られてくる信号をプロセッサ101に送信する。なお、マウス33は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0050】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク34に記録されたデータの読み取りを行う。光ディスク34は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク34には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
【0051】
機器接続インタフェース107は、制御装置100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置35やメモリリーダライタ36を接続することができる。メモリ装置35は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ36は、メモリカード37へのデータの書き込み、またはメモリカード37からのデータの読み出しを行う装置である。メモリカード37は、カード型の記録媒体である。
【0052】
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0053】
PCIeインタフェース109−1,109−2は、PCIeブリッジコントローラ300の拡張バスと接続するための通信インタフェース(即ち、接続インタフェース)である。PCIeインタフェース109−1,109−2は、PCIeブリッジコントローラ300と接続され、PCIeブリッジコントローラ300を介した計算装置200−1〜200−6との通信を媒介する。
【0054】
制御装置100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した制御装置13も、
図4に示した制御装置100と同様のハードウェアにより実現することができる。またプロセッサ101は、第1の実施の形態に示した処理部13aの一例である。
【0055】
制御装置100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。制御装置100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、制御装置100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また制御装置100に実行させるプログラムを、光ディスク34、メモリ装置35、メモリカード37などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0056】
図5は、計算装置のハードウェアの一構成例を示す図である。計算装置200−1は、プロセッサ201−1によって装置全体が制御されている。プロセッサ201−1には、バス206−1を介してメモリ202−1と複数の周辺機器が接続されている。プロセッサ201−1は、マルチプロセッサであってもよい。プロセッサ201−1は、例えばCPU、MPU、またはDSPである。また例えば、プロセッサ201−1には、GPU(Graphics Processing Unit)やFPGA(Field Programmable Gate Array)といった、特定の処理に適するプロセッサ(コプロセッサともいう)が含まれていてもよい。プロセッサ201−1がプログラムを実行することで実現する機能の少なくとも一部を、ASIC、PLDなどの電子回路で実現してもよい。
【0057】
メモリ202−1は、計算装置200−1の主記憶装置として使用される。メモリ202−1には、プロセッサ201−1に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ202−1には、プロセッサ201−1による処理に利用する各種データが格納される。メモリ202−1としては、例えばRAMなどの揮発性の半導体記憶装置が使用される。
【0058】
バス206−1に接続されている周辺機器としては、不揮発性メモリ203−1、PCIeインタフェース204−1および接続インタフェース205−1がある。不揮発性メモリ203−1は、コンピュータの補助記憶装置として使用される。不揮発性メモリ203−1には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、不揮発性メモリ203−1としては、例えば、フラッシュメモリを使用することができる。
【0059】
PCIeインタフェース204−1は、PCIeブリッジコントローラ300の拡張バスと接続するための通信インタフェースである。PCIeインタフェース204−1は、PCIeブリッジコントローラ300と接続され、PCIeブリッジコントローラ300を介した制御装置100および計算装置200−2〜200−6との通信を媒介する。
【0060】
接続インタフェース205−1は、カメラ21−1と接続するためのインタフェースである。カメラ21−1は、カメラ21−1のレンズを向けた先の光景の静止画または動画のデータを生成する。接続インタフェース205−1は、USB(Universal Serial Bus)などのインタフェースでカメラ21−1に接続してもよい。また、接続インタフェース205−1は、ネットワークインタフェースであってもよく、ネットワークを介してカメラ21−1に接続してもよい。
【0061】
計算装置200−1は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した計算装置11−1,11−2,・・・,12−1,12−2,・・・も、
図5に示した計算装置200−1と同様のハードウェアにより実現することができる。またプロセッサ201−1は、第1の実施の形態に示した演算部11c−1,12c−1の一例である。またメモリ202−1または不揮発性メモリ203−1は、第1の実施の形態に示した記憶部11a−1,12a−1の一例である。また、計算装置200−2〜200−6も、
図5に示した計算装置200−1と同様のハードウェアによって実現することができる。ただし、計算装置200−5〜200−6は、接続インタフェース205−1と同様の接続インタフェースを有しなくてもよい。
【0062】
計算装置200−1は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。計算装置200−1に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、計算装置200−1に実行させるプログラムを不揮発性メモリ203−1に格納しておくことができる。プロセッサ201−1は、不揮発性メモリ203−1内のプログラムの少なくとも一部をメモリ202−1にロードし、プログラムを実行する。
【0063】
図6は、PCIeブリッジコントローラのハードウェア構成の一例を示す図である。PCIeブリッジコントローラ300は、8チャネルのEPとして機能する接続インタフェースを1チップ内に有する中継装置である。PCIeブリッジコントローラ300は、プロセッサ301、メモリ302、インターコネクト303およびスロット304−1〜304−8(スロット#0〜#7)を有する。
【0064】
プロセッサ301は、PCIeブリッジコントローラ300全体を制御する。プロセッサ301は、マルチプロセッサであってもよい。プロセッサ301は、例えばCPU、MPU、またはDSPである。プロセッサ301がプログラムを実行することで実現する機能の少なくとも一部を、ASIC、PLDなどの電子回路で実現してもよい。
【0065】
メモリ302は、例えば、ROMおよびRAMを含む記憶メモリ(物理メモリ)である。メモリ302のROMには、データ通信制御に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ302上のソフトウェアプログラムは、プロセッサ301に適宜読み込まれて実行される。また、メモリ302のRAMは、一次記憶メモリあるいはワーキングメモリとして利用される。
【0066】
プロセッサ301およびメモリ302は、インターコネクト303に接続されている。また、スロット304−1〜304−8は、内部バスを介してインターコネクト303にそれぞれ接続されている。これにより、プロセッサ301およびメモリ302とスロット304−1〜304−8とは、インターコネクト303を介して相互に通信可能に接続されている。
【0067】
スロット304−1〜304−8は、PCIeの規格を満たすよう構成されたデバイスが接続される接続インタフェースである。情報処理システム400では、スロット304−1,304−2に制御装置100が接続され、スロット304−3〜304−8のそれぞれに計算装置200−1〜200−6が接続される。このように、制御装置100に対して2つのスロットをアサインすることで、制御装置100は、広い通信帯域を用いた通信を行うことができるようになる。
【0068】
なお、以下では、Slot#0に制御装置100のPCIeインタフェース109−1が接続され、Slot#1に制御装置100のPCIeインタフェース109−2が接続されているものとする。また、Slot#2に計算装置200−1のPCIeインタフェース204−1が接続され、Slot#3に計算装置200−2のPCIeインタフェースが接続され、Slot#4に計算装置200−3のPCIeインタフェースが接続されているものとする。また、Slot#5に計算装置200−4のPCIeインタフェースが接続され、Slot#6に計算装置200−5のPCIeインタフェースが接続され、Slot#7に計算装置200−6のPCIeインタフェースが接続されているものとする。
【0069】
そして、プロセッサ301がメモリ302に格納されたプログラムを実行することで、PCIeブリッジコントローラ300による制御装置100および計算装置200−1〜200−6間(またはプロセッサ間)のデータ転送(即ち、データの送受信)を実現する。なお、PCIeブリッジコントローラ300は、制御装置100および計算装置200−1〜200−6間のデータ転送を高速化するためにPCIeを用いる。PCIeブリッジコントローラ300は、制御装置100および計算装置200−1〜200−6の各プロセッサをそれぞれRCとして動作させ、デバイスとして動作するEP間でデータ転送を実現している。
【0070】
具体的には、情報処理システム400において、制御装置100および計算装置200−1〜200−6のプロセッサは、データ転送インタフェースとしてPCIeのRCとして動作している。また、制御装置100および計算装置200−1〜200−6(または各装置のプロセッサ)に対して、PCIeブリッジコントローラ300(例えば、各装置が接続されているスロット304−1〜304−8)は、EPとして動作している。
【0071】
なお、PCIeブリッジコントローラ300をプロセッサに対してEPとして接続する手法としては、既知の種々の手法を用いて実現することができる。例えば、PCIeブリッジコントローラ300は、制御装置100および計算装置200−1〜200−6との接続時に、EPとして機能することを示す信号を当該プロセッサに通知することで、EPとしてプロセッサと接続することができる。
【0072】
PCIeブリッジコントローラ300においてはEPtoEP(End Point to End Point)でデータをトンネリングさせて、複数のRCにデータを転送する。制御装置100および計算装置200−1〜200−6のプロセッサ間の通信は、PCIeのトランザクションが発生したときに論理的に接続され、1つのプロセッサにデータ転送が集中しないときは、それぞれのプロセッサ間で並行してデータ転送できる。
【0073】
次に、情報処理システム400の各装置のソフトウェア構成について説明する。
図7は、情報処理システムの各装置のソフトウェア構成の一例を示す図である。なお、
図7中においては、便宜上、制御装置100および計算装置200−1,200−2のソフトウェア構成のみを図示する。計算装置200−3〜200−6は、計算装置200−1,200−2と同様のソフトウェア構成である。
【0074】
制御装置100は、アプリケーション120a、ドライバ120b、OS120dおよびBIOS(Basic Input Output System)120eを有する。アプリケーション120aは、制御装置100で行うOS120dが提供する機能を利用して各種処理を実行する応用ソフトウェアまたは応用プログラムである。アプリケーション120aは、OS120d上で動作する。制御装置100は、アプリケーション120aの制御下で各種処理を行う。
【0075】
ドライバ120bは、制御装置100に搭載されているハードウェア等をOS120dによって制御可能にするために用意されたソフトウェアである。制御装置100が有するドライバ120bとしては、ブリッジドライバ120c−1,120c−2がある。
【0076】
ブリッジドライバ120c−1,120c−2は、PCIeブリッジコントローラ300を制御するためのドライバ(言い換えればPCIeブリッジコントローラ300に電気的にアクセスして計算装置と通信を行うためのドライバ)である。制御装置100は、2つのRCを用いてPCIeブリッジコントローラ300に搭載されている2つのEPと接続しているため、それぞれの接続として機能するRCに対応するブリッジドライバ120c−1,120c−2を有している。なお、以下では、ブリッジドライバ120c−1がPCIeインタフェース109−1に対応するドライバであり、ブリッジドライバ120c−2がPCIeインタフェース109−2に対応するドライバであるものとする。
【0077】
OS120dは、制御装置100を動かすための基本ソフトウェアまたは基本プログラムである。BIOS120eは、制御装置100におけるOS120dの起動を制御するソフトウェアである。制御装置100では、例えば、BIOS120eによってBootloaderが起動され(または呼び出され)、起動されたBootloaderによりOS120dが検出され、OS120dが起動する。
【0078】
次に計算装置200−1〜200−6について説明する。計算装置200−1〜200−6は、同様のソフトウェア構成であるので、計算装置200−1を例として用いて説明する。計算装置200−1は、アプリケーション220a−1、ドライバ220b−1、OS220d−1およびBootloader220e−1を有する。
【0079】
アプリケーション220a−1は、計算装置200−1で行うOS220d−1が提供する機能を利用して各種処理を実行する応用ソフトウェアまたは応用プログラムである。アプリケーション220a−1は、OS220d−1上で動作する。計算装置200−1は、アプリケーション220a−1の制御下で各種処理を行う。
【0080】
ドライバ220b−1は、計算装置200−1に搭載されているハードウェア等をOS220d−1によって制御可能にするために用意されたソフトウェアである。計算装置200−1が有するドライバ220b−1としては、ブリッジドライバ220c−1がある。
【0081】
ブリッジドライバ220c−1は、PCIeブリッジコントローラ300を制御するためのドライバである。計算装置200−1は、1つのRCを用いてPCIeブリッジコントローラ300に搭載されている1つのEPと接続するため、1つのブリッジドライバ220c−1を有している。
【0082】
OS220d−1は、計算装置200−1を動かすための基本ソフトウェアまたは基本プログラムである。Bootloader220e−1は、計算装置200−1の起動時に呼び出され、OS220d−1を起動するソフトウェアである。計算装置200−1では、例えば、Bootloader220e−1によりOS220d−1が検出され、OS220d−1が起動する。
【0083】
次にPCIeブリッジコントローラ300に接続される各装置間における通信処理について説明する。
図8は、装置間における通信処理の一例を示す図である。ここでは制御装置100のプロセッサ101と計算装置200−1のプロセッサ201−1との間で通信を行う例を用いて説明する。
【0084】
送信元の制御装置100は、RCであるプロセッサ101において生成したデータを、ソフトウェア、トランザクション層、データリンク層および物理層(PHY)に順次転送し、物理層においてPCIeブリッジコントローラ300の物理層に転送する。
【0085】
PCIeブリッジコントローラ300は、制御装置100から転送されたデータを、物理層、データリンク層、トランザクション層およびソフトウェアに順次転送し、計算装置200−1のRCに対応するEPにトンネリングにより転送する。即ち、PCIeブリッジコントローラ300においては、EP間でデータをトンネリングさせることで、1つのRC(またはプロセッサ)から他のRC(またはプロセッサ)にデータが転送される。
【0086】
送信先の計算装置200−1は、PCIeブリッジコントローラ300から転送されたデータを、物理層、データリンク層、トランザクション層およびソフトウェアに順次転送し、送信先の計算装置200−1のプロセッサ201−1に転送する。
【0087】
情報処理システム400では、装置間の通信はPCIeのトランザクションが発生したときに論理的に接続される。PCIeブリッジコントローラ300が有する8スロットのうちの一つに接続された特定のプロセッサに対して複数の他のプロセッサからのデータ転送が集中しないときは、異なる任意の複数組のそれぞれのプロセッサ間で並行してデータ転送してもよい。例えば、プロセッサ101に対して、プロセッサ201−1およびプロセッサ201−2が通信する場合には、PCIeブリッジコントローラ300は、プロセッサ201−1およびプロセッサ201−2による通信をシリアルに処理する。
【0088】
一方、異なる装置のプロセッサ同士が通信し、特定の装置のプロセッサに通信が集中しない場合には、PCIeブリッジコントローラ300は、装置間の通信を並行して処理することも可能である。
【0089】
次に、PCIeブリッジコントローラ300を介した装置間のデータ転送方法を説明する。
図9は、PCIeブリッジコントローラを介したプロセッサ間のデータ転送方法の一例を示す図である。ここではSlot#0に接続された制御装置100が、Slot#3に接続された計算装置200−1にデータを転送する場合を例に用いて説明する。
【0090】
送信元の制御装置100は、ソフトウェア等によって送信されるデータ(以下、送信データという)を、制御装置100に備えられるストレージ装置103から制御装置100のメモリ102(物理メモリ)のメモリ領域102aに格納する(P10)。メモリ領域102aは、転送されるデータが一時的に格納される通信バッファの一部であってもよい。
【0091】
メモリ領域102aは、PCIeブリッジコントローラ300のスロットの数に応じて分割されている。メモリ領域102aの分割された記憶領域は、PCIeブリッジコントローラ300のいずれかのスロットに対応付けられている。即ち、メモリ領域102aには、Slot#0〜#7のそれぞれに対応する記憶領域が設けられている。なお計算装置200−1〜200−6のメモリにも、メモリ領域102aと同様のメモリ領域が設けられている。
【0092】
例えば、メモリ領域102a内のSlot#0で示す記憶領域は、Slot#0に接続された制御装置100に対応付けられ、Slot#3で示す記憶領域は、Slot#3に接続された計算装置200−1に対応付けられている。制御装置100は、メモリ領域102aのうち、送信先のスロット(ここでは、Slot#3)に割り当てられた領域に送信データを格納する。
【0093】
ブリッジドライバ120c−1は、メモリ領域102aの記憶領域に基づいて、送信先のスロットを示すスロット情報と、送信先のメモリ領域における分割領域内におけるアドレスを示すアドレス情報とを取得または生成する(P11)。
【0094】
送信元EPにおいて、ブリッジドライバ120c−1は、スロット情報と、アドレス情報と、送信データとを含む転送データをPCIeブリッジコントローラ300に渡す(P12)。これにより、PCIeブリッジコントローラ300は、スロット情報に基づいてEPtoEPにより送信元のスロットと送信先のスロットとを接続することにより、転送データを送信先の計算装置200−1に転送する(P13)。送信先の計算装置200−1は、スロット情報およびアドレス情報に基づいて、送信先の計算装置200−1のメモリ領域202a−1のSlot#3に対応する記憶領域内のアドレス情報が示す領域に送信データ(または転送データ)を格納する(P14)。
【0095】
送信先の計算装置200−1において、例えば、プログラムが、メモリ領域202a−1に格納された送信データを読み出して、メモリ202−1のメモリ領域202a−1以外の記憶領域や不揮発性メモリ203−1に移動させる(P15、P16)。
【0096】
このように、PCIeブリッジコントローラ300内のEP間でデータ転送を媒介して制御装置100から計算装置200−1にデータが転送される。これにより、情報処理システム400は、PCIeブリッジコントローラ300に接続された複数のRC間でのデータ転送を実現することができる。
【0097】
情報処理システム400では、制御装置100および計算装置200−1〜200−6のプロセッサをPCIeのRCとして独立動作する。また、情報処理システム400では、PCIeブリッジコントローラ300は、デバイスであるEPとして制御装置100および計算装置200−1〜200−6に接続され、EP間でデータ転送を行う。ここで、制御装置100および計算装置200−1〜200−6は、EPとなるPCIeブリッジコントローラ300を介して接続されるため、EPの先のRCのデバイスドライバを追加しなくてよい。従って、情報処理システム400は、デバイスドライバの開発を不要にし、デバイスドライバを追加することに起因する不具合の発生を防止できる。また、制御装置100および計算装置200−1〜200−6のプロセッサは、PCIeの規格に適合したデータ通信機能を有してさえいればよい。
【0098】
よって、情報処理システム400は、デバイスドライバの有無や、サポートOS等によらず使用するプロセッサの選択肢を広げることが可能となる。また、情報処理システム400は、PCIeブリッジコントローラ300によるPCIeでの接続および通信により、イーサネットよりも高速なデータ転送を実現することができる。
【0099】
次に、第2の実施の形態の情報処理システムに含まれる各装置の機能について詳細に説明する。
図10は、情報処理システムの機能例を示すブロック図である。制御装置100は、ブリッジドライバ120c−1、記憶部130および管理部140を有する。記憶部130は、メモリ102またはストレージ装置103の記憶領域を用いて実現される。管理部140は、メモリ102に記憶されたプログラムをプロセッサ101が実行することで実現される。
【0100】
記憶部130は、送信先情報40および画像処理結果131−1,131−2,・・・を有する。送信先情報40は、計算装置200−1〜200−6それぞれが画像処理の結果を送信する送信先を示す情報である。画像処理結果131−1,131−2,・・・は、計算装置200−1〜200−6から収集された、計算装置200−1〜200−6それぞれによる画像処理の結果を示すデータである。例えば、画像処理結果131−1,131−2,・・・それぞれは、1つの製品について出荷基準外の大きさのキズがあるか否かを示す情報が含まれる。
【0101】
管理部140は、計算装置200−1〜200−6の画像処理結果の送信先の設定および画像処理結果131−1,131−2,・・・に基づくユーザへの通知処理をする。管理部140は、計算装置200−1〜200−6の画像処理結果の送信先の設定では、送信先情報40を生成する。例えば、管理部140は、ユーザによる計算装置200−1〜200−6の画像処理結果の送信先の設定を受け付ける。管理部140は、ユーザによって設定された計算装置200−1〜200−6それぞれの画像処理結果の送信先を示す送信先情報40を生成する。管理部140は、生成した送信先情報40をブリッジドライバ120c−1を介して計算装置200−1〜200−6に送信する。管理部140は、画像処理結果131−1,131−2,・・・に基づくユーザへの通知処理では、例えば、出荷基準外のキズがある製品の割合をモニタ31に表示させる。
【0102】
計算装置200−1は、ブリッジドライバ220c−1、記憶部230−1および画像処理部240−1を有する。記憶部230−1は、メモリ202−1または不揮発性メモリ203−1の記憶領域を用いて実現される。画像処理部240−1は、メモリ202−1に記憶されたプログラムをプロセッサ201−1が実行することで実現される。なお、計算装置200−2〜200−4が有する機能は、計算装置200−1と同様である。記憶部230−1は、送信先情報40を記憶する。
【0103】
画像処理部240−1は、カメラ21−1が撮影した画像を取得し、取得した画像から製品のキズを検出する処理(1次診断)をする。例えば、画像処理部240−1は、入力画像に写るキズの位置を示す情報を出力する学習済みモデルに、カメラ21−1が撮影した画像を入力する。そして、画像処理部240−1は、1次診断の結果を送信先情報40が示す送信先に、ブリッジドライバ220c−1を介して送信する。ここで、送信先情報40では、画像から製品のキズが検出された場合および画像から製品のキズが検出されなかった場合それぞれに、異なる送信先が対応付けられている。
【0104】
例えば、画像から製品のキズが検出された場合、画像処理部240−1は、カメラ21−1が撮影した画像と製品のキズの位置を示す情報とを計算装置200−5,200−6のうちの負荷が小さい計算装置(例えば、計算装置200−5)に送信する。また、例えば、画像から製品のキズが検出されなかった場合、画像処理部240−1は、カメラ21−1が撮影した画像を圧縮した画像と製品にキズがなかったことを示す情報とを制御装置100に送信する。
【0105】
計算装置200−5は、ブリッジドライバ220c−5、記憶部230−5および画像処理部240−5を有する。記憶部230−5は、計算装置200−5のメモリまたは不揮発性メモリの記憶領域を用いて実現される。画像処理部240−5は、計算装置200−5のメモリに記憶されたプログラムを計算装置200−5のプロセッサが実行することで実現される。なお、計算装置200−6が有する機能は、計算装置200−5と同様である。記憶部230−5は、送信先情報40を記憶する。
【0106】
画像処理部240−5は、計算装置200−1〜200−4による1次診断の結果を取得し、キズの大きさが出荷基準外であるか否かを判定する処理(2次診断)をする。例えば、画像処理部240−5は、カメラ21−1が撮影した画像と製品のキズの位置を示す情報とを計算装置200−1から取得する。画像処理部240−5は、製品のキズの位置を示す情報に基づいて、カメラ21−1が撮影した画像から製品のキズが写る部分を抽出する。画像処理部240−5は、入力画像に写るキズの大きさを示す情報を出力する学習済みモデルに、カメラ21−1が撮影した画像から抽出した部分を入力する。そして、画像処理部240−5は、学習モデルが出力したキズの大きさが出荷基準外であるか否かを判定する。
【0107】
画像処理部240−5は、2次診断の結果を送信先情報40が示す送信先に、ブリッジドライバ220c−5を介して送信する。例えば、キズの大きさが出荷基準外と判定された場合、画像処理部240−5は、カメラ21−1が撮影した画像と製品のキズの大きさが出荷基準外であったことを示す情報とを制御装置100に送信する。また、例えば、キズの大きさが出荷基準内と判定された場合、画像処理部240−5は、カメラ21−1が撮影した画像を圧縮した画像と製品のキズの大きさが出荷基準内であったことを示す情報とを制御装置100に送信する。なお、
図10に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
【0108】
次に、各装置が記憶する送信先情報40について説明する。
図11は、送信先情報の一例を示す図である。送信先情報40には、「装置名」、「処理名」、「MAC(Media Access Control)アドレス」、「OK判定」および「NG判定」の欄が設けられている。「装置名」の欄には、制御装置100および計算装置200−1〜200−6のうちの対応する装置の名称が設定されている。「処理名」の欄には、対応する装置が実行する処理名が設定されている。「MACアドレス」の欄には、対応する装置のMACアドレスが設定されている。なお、装置のMACアドレスは、PCIeブリッジコントローラ300を仮想LAN(Local Area Network)としたときに、当該装置のPCIeインタフェースに設定されるMACアドレスである。
【0109】
「OK判定」の欄には、対応する装置が実行した処理結果がOK判定であった場合の送信先の装置のMACアドレスが設定される。ここで、OK判定は、1次診断において製品のキズが検出されなかったことおよび2次診断において、製品のキズが出荷基準内であったことを示す。「NG判定」の欄には、対応する装置が実行した処理結果がNG判定であった場合の送信先の装置のMACアドレスが設定される。ここで、NG判定は、1次診断において製品のキズが検出されたことおよび2次診断において、製品のキズが出荷基準外であったことを示す。
【0110】
なお、OK判定およびNG判定は、第1の実施の形態に示した、送信先情報11b−1,12b−1に含まれる複数の条件の一例である。また、制御装置100および計算装置200−1〜200−6は、それぞれ送信先情報40の情報のうち、自装置に対応する情報だけ記憶していてもよい。また、制御装置100は、送信先情報40を有していなくてもよい。
【0111】
次に、1次診断および2次診断の範囲について説明する。
図12は、1次診断および2次診断の範囲の一例を示す図である。グラフ50は、第2の実施の形態で検査する製品のキズの大きさと製造される数量との関係の一例を示す。なお、製品の出荷基準は、キズの大きさがs2未満とする。情報処理システム400は、製品を撮影した画像に対する画像処理によって、製品のキズの大きさがs2未満であるか否かを判定する。ここで、製品の画像から製品のキズの大きさを判定する処理は、製品の画像から製品のキズを検出する処理に比べて負荷が大きい。
【0112】
そこで、情報処理システム400では、計算装置200−1〜200−4は、製品の画像に対する1次診断を行い、キズの大きさがs1(キズとして検出される大きさ)以上の場合に、計算装置200−5〜200−6は、製品の画像に対する2次診断を行う。これにより、キズの大きさがs1未満(1次診断正常範囲)の製品の画像は、2次診断の対象外となる。このように、情報処理システム400は、負荷の大きい画像処理を行う回数を減らし、全体の画像処理の効率を向上させることができる。なお、計算装置200−5〜200−6が実行する2次診断は、製品にキズが付いた理由の解析等のキズの詳細な解析処理を含んでもよい。
【0113】
次に、情報処理システム400全体の処理について説明する。
図13は、情報処理システムの処理内容の第1の例を示す図である。計算装置200−1〜200−4は、カメラ21−1〜21−4から製品を撮影した画像を取得する。計算装置200−1〜200−4は、カメラ21−1〜21−4が撮影した製品の画像に対する1次診断を実行する。
【0114】
計算装置200−1〜200−4は、1次診断によってカメラ21−1〜21−4が撮影した製品にキズが検出されなかった場合(キズなしの場合)、1次診断の結果を制御装置100に送信する。1次診断の結果は、第1の実施の形態に示した取得データの一例である。また、計算装置200−1〜200−4は、1次診断によってカメラ21−1〜21−4が撮影した製品にキズが検出された場合(キズありの場合)、カメラ21−1〜21−4が撮影した画像と1次診断の結果とを計算装置200−5〜200−6に送信する。
【0115】
計算装置200−5〜200−6は、計算装置200−1〜200−4から取得したカメラ21−1〜21−4が撮影した画像と1次診断の結果とに基づいて、2次診断を実行する。そして、計算装置200−5〜200−6は、2次診断の結果を制御装置100に送信する。
【0116】
制御装置100は、計算装置200−1〜200−6から収集した1次診断および2次診断の結果を集計する。そして、制御装置100は、出荷基準外の製品の割合をユーザに通知する。
【0117】
次に、制御装置100による1次診断および2次診断の結果の収集処理をシーケンス図を用いて説明する。
図14は、診断結果収集の例を示すシーケンス図である。
図14では、計算装置200−1による1次診断の結果および計算装置200−5による2次診断の結果を制御装置100が収集する例を示す。
【0118】
カメラ21−1は、製品を撮影した画像を計算装置200−1に送信する(ステップS11)。計算装置200−1の画像処理部240−1は、カメラ21−1が撮影した画像を取得する。画像処理部240−1は、カメラ21−1が撮影した画像に対する1次診断を実行する(ステップS12)。ここで、画像処理部240−1は、送信先情報40を参照し、1次診断の結果に対応する送信先を特定する。そして、画像処理部240−1は、特定した送信先に1次診断の結果を送信する。
【0119】
1次診断によってキズが検出されなかった場合(OK判定の場合)、画像処理部240−1は、1次診断の結果を制御装置100に送信する(ステップS13)。制御装置100の管理部140は、計算装置200−1から取得した1次診断の結果(例えば、画像処理結果131−1)を、記憶部130に格納する。
【0120】
また、1次診断によってキズが検出された場合(NG判定の場合)、画像処理部240−1は、カメラ21−1が撮影した画像と1次診断の結果とを計算装置200−5に送信する(ステップS14)。計算装置200−5の画像処理部240−5は、カメラ21−1が撮影した画像と1次診断の結果とに基づいて、2次診断を実行する(ステップS15)。そして、画像処理部240−5は、送信先情報40を参照し、2次診断の結果を制御装置100に送信する(ステップS16)。管理部140は、計算装置200−1から取得した2次診断の結果(例えば、画像処理結果131−2)を、記憶部130に格納する。
【0121】
そして、管理部140は、2次診断で出荷基準外のキズが検出された数を画像処理結果131−1,131−2・・・の数(製品数)で除して、出荷基準外のキズがある製品の割合を算出する。管理部140は、出荷基準外のキズがある製品の割合を集計結果として表示出力する(ステップS17)。
【0122】
このようにして、制御装置100の管理部140は、1次診断の結果および2次診断の結果を収集できる。ここで、計算装置200−1の画像処理部240−1は、カメラ21−1から直接画像を取得している。また、計算装置200−1,200−5は、送信先情報40によって決められた送信先に診断結果を送信しているため、制御装置100を介さずに適切な送信先にデータを送信できる。このように、情報処理システム400は、制御装置100にデータの送受信が集中することを抑制することで、画像処理の効率を向上させることができる。
【0123】
以下、制御装置100および計算装置200−1〜200−6の各装置が実行する処理の手順について、詳細に説明する。まず、制御装置100による各装置の送信先の設定処理の手順について説明する。
【0124】
図15は、送信先設定処理の手順の一例を示すフローチャートである。以下、
図15に示す処理をステップ番号に沿って説明する。
[ステップS101]管理部140は、ユーザによる計算装置200−1〜200−6の画像処理結果の送信先の設定を受け付ける。
【0125】
[ステップS102]管理部140は、ステップS101で設定された計算装置200−1〜200−6それぞれの画像処理結果の送信先を示す送信先情報40を生成する。
【0126】
[ステップS103]管理部140は、ステップS102で生成した送信先情報40をブリッジドライバ120c−1を介して計算装置200−1〜200−6に送信する。ブリッジドライバ120c−1は、送信先情報40を計算装置200−1〜200−6それぞれに転送するようPCIeブリッジコントローラ300に指示する。
【0127】
このようにして、管理部140は、送信先情報40を生成し、送信先情報40を計算装置200−1〜200−6に通知する。なお、管理部140は、送信先情報40とともに計算装置200−1〜200−6それぞれが実施する処理内容を通知してもよい。なお、送信先情報40は、制御装置100にネットワーク20を介して接続されるユーザ端末等の制御装置100以外の情報処理装置によって生成され、計算装置200−1〜200−6に通知されてもよい。
【0128】
次に、計算装置200−1による1次診断の手順について説明する。なお、計算装置200−2〜200−4による1次診断の手順についても、計算装置200−1による1次診断の手順と同様である。
【0129】
図16は、1次診断の手順の一例を示すフローチャートである。以下、
図16に示す処理をステップ番号に沿って説明する。
[ステップS111]画像処理部240−1は、カメラ21−1が撮影した画像を取得する。
【0130】
[ステップS112]画像処理部240−1は、ステップS111で取得した画像を画像処理実行用のメモリにコピーする。
[ステップS113]画像処理部240−1は、ステップS111で取得した画像に対するキズ検出処理を実行する。例えば、画像処理部240−1は、入力画像に写るキズの位置を示す情報を出力する学習済みモデルに、ステップS111で取得した画像を入力する。
【0131】
[ステップS114]画像処理部240−1は、ステップS113の処理でキズが検出された(キズあり)か否かを判定する。画像処理部240−1は、キズありと判定した場合、処理をステップS118に進める。また、画像処理部240−1は、キズなしと判定した場合、処理をステップS115に進める。
【0132】
[ステップS115]画像処理部240−1は、ステップS111で取得した画像を圧縮する。
[ステップS116]画像処理部240−1は、処理結果を示すCSV(Comma Separated Value)ファイルを生成する。例えば、画像処理部240−1は、ステップS111で取得した画像に写る製品にキズがないことを示すCSVファイルを生成する。
【0133】
[ステップS117]画像処理部240−1は、送信先情報40を参照し、キズなし(OK判定)に対応する1次診断の結果の送信先である制御装置100を特定する。そして、画像処理部240−1は、制御装置100に、ステップS115で圧縮した画像とステップS116で生成したCSVファイルとをブリッジドライバ220c−1を介して送信する。ブリッジドライバ220c−1は、圧縮した画像とCSVファイルとを制御装置100に転送するようPCIeブリッジコントローラ300に指示する。そして、処理が終了する。
【0134】
[ステップS118]画像処理部240−1は、処理結果を示すCSVファイルを生成する。例えば、画像処理部240−1は、ステップS111で取得した画像上の製品のキズの位置を示すCSVファイルを生成する。
【0135】
[ステップS119]画像処理部240−1は、送信先情報40を参照し、キズあり(NG判定)に対応する1次診断の結果の送信先である計算装置200−5〜200−6を特定する。画像処理部240−1は、送信先である計算装置200−5〜200−6の負荷状況を確認する。
【0136】
[ステップS120]画像処理部240−1は、計算装置200−5〜200−6のうち、ステップS119で確認した負荷が低い計算装置(例えば、計算装置200−5)を1次診断の結果の送信先に決定する。そして、画像処理部240−1は、計算装置200−5に、ステップS111で取得した画像とステップS118で生成したCSVファイルとをブリッジドライバ220c−1を介して送信する。ブリッジドライバ220c−1は、画像とCSVファイルとを計算装置200−5に転送するようPCIeブリッジコントローラ300に指示する。
【0137】
このようにして、画像処理部240−1は、カメラ21−1から画像を取得し、取得した画像に写る製品のキズの検出(1次診断)をする。そして、画像処理部240−1は、製品のキズが検出されなかった場合、診断結果を収集する制御装置100に1次診断の結果を送信し、キズが検出された場合、2次診断を実行する計算装置200−5〜200−6に1次診断の結果を送信する。ここで、画像処理部240−1は、1次診断の結果の送信先を送信先情報40を参照することで特定できる。
【0138】
このように、画像処理部240−1は、画像処理の対象の画像の取得と画像処理結果の送信とを制御装置100を介さずに行うことができる。よって、情報処理システム400は、制御装置100へのデータ送信を軽減し、画像処理の効率を向上させることができる。また、送信先情報40は、キズが検出されなかった場合の送信先とキズが検出された場合の送信先とを含んでいるため、画像処理部240−1は、2次診断が不要な場合に1次診断の結果を制御装置100に送信することができる。このように、情報処理システム400は、分岐を含む2段階の画像処理を実現できる。
【0139】
また、画像処理部240−1から制御装置100および計算装置200−5〜200−6へのデータ送信は、各装置のデバイスとして動作するPCIeブリッジコントローラ300によって中継される。よって、画像処理部240−1は、制御装置100および計算装置200−5〜200−6のいずれの装置への1次診断の結果の送信においても、ブリッジドライバ220c−1を用いればよい。このように、情報処理システム400は、データ転送のための各装置専用のドライバを不要にし、データ送信を容易にすることができる。
【0140】
また、計算装置200−2〜200−4も、カメラ21−2〜21−4から取得した画像に基づいて、上記の計算装置200−1と同様の処理を実行する。よって情報処理システム400は、複数の画像処理を並列して実行できる。
【0141】
次に、計算装置200−5による2次診断の手順について説明する。なお、計算装置200−6による2次診断の手順についても、計算装置200−5による2次診断の手順と同様である。
【0142】
図17は、2次診断の手順の一例を示すフローチャートである。以下、
図17に示す処理をステップ番号に沿って説明する。
[ステップS131]画像処理部240−5は、1次診断用の計算装置から、1次診断の結果を取得する。例えば、画像処理部240−5は、計算装置200−1からカメラ21−1が撮影した画像と画像上の製品のキズの位置を示すCSVファイルとを取得する。
【0143】
[ステップS132]画像処理部240−5は、ステップS131で取得した画像からステップS131で取得したCSVファイルに記載されたキズの領域を抽出する。
[ステップS133]画像処理部240−5は、ステップS131で取得した画像に写るキズの大きさを判定する。例えば、画像処理部240−5は、入力画像に写るキズの大きさを示す情報を出力する学習済みモデルに、ステップS132で画像から抽出した領域を入力する。
【0144】
[ステップS134]画像処理部240−5は、ステップS133の処理で判定されたキズの大きさが出荷基準内であるか否かを判定する。画像処理部240−5は、キズが出荷基準内であると判定した場合、処理をステップS135に進める。画像処理部240−5は、キズが出荷基準外であると判定した場合、処理をステップS138に進める。
【0145】
[ステップS135]画像処理部240−5は、ステップS131で取得した画像を圧縮する。
[ステップS136]画像処理部240−5は、処理結果を示すCSVファイルを生成する。例えば、画像処理部240−5は、ステップS131で取得した画像に写る製品のキズの大きさが出荷基準内であることを示すCSVファイルを生成する。
【0146】
[ステップS137]画像処理部240−5は、送信先情報40を参照し、2次診断の結果の送信先である制御装置100を特定する。そして、画像処理部240−5は、制御装置100に、ステップS115で圧縮した画像とステップS136で生成したCSVファイルとをブリッジドライバ220c−5を介して送信する。ブリッジドライバ220c−5は、圧縮した画像とCSVファイルとを制御装置100に転送するようPCIeブリッジコントローラ300に指示する。そして、処理が終了する。
【0147】
[ステップS138]画像処理部240−5は、処理結果を示すCSVファイルを生成する。例えば、画像処理部240−5は、ステップS131で取得した画像上の製品のキズの位置とキズの大きさが出荷基準外であることとを示すCSVファイルを生成する。
【0148】
[ステップS139]画像処理部240−5は、送信先情報40を参照し、2次診断の結果の送信先である制御装置100を特定する。そして、画像処理部240−5は、計算装置200−5に、ステップS131で取得した画像とステップS138で生成したCSVファイルとをブリッジドライバ220c−5を介して送信する。ブリッジドライバ220c−5は、画像とCSVファイルとを制御装置100に転送するようPCIeブリッジコントローラ300に指示する。
【0149】
このようにして、画像処理部240−5は、1次診断を行った計算装置から製品の画像と1次診断の結果とを取得し、取得した画像に写った製品のキズの大きさの判定(2次診断)をする。ここで、画像処理部240−5は、制御装置100を介さずに画像と1次診断の結果とを取得できる。そして、画像処理部240−5は、送信先情報40に示される送信先である制御装置100に2次診断の結果を送信する。
【0150】
次に、制御装置100による診断結果表示処理の手順について説明する。
図18は、診断結果表示処理の手順の一例を示すフローチャートである。以下、
図18に示す処理をステップ番号に沿って説明する。
【0151】
[ステップS141]管理部140は、各計算装置から画像とCSVファイルとを受信する。管理部140は、受信した画像とCSVファイルと(診断結果)を画像処理結果131−1,131−2,・・・として記憶部130に格納する。
【0152】
[ステップS142]管理部140は、出荷基準内の診断結果と出荷基準外の診断結果とを分別する。例えば、管理部140は、画像処理結果131−1,131−2,・・・を出荷基準内と診断されたものと出荷基準外と診断されたものとに分けて保存する。
【0153】
[ステップS143]管理部140は、出荷基準外の製品の割合を表示する。例えば、管理部140は、画像処理結果131−1,131−2,・・・のうちステップS142で出荷基準外として保存されたものの数を画像処理結果131−1,131−2,・・・の数で除することで、出荷基準外の製品の割合を算出する。そして、管理部140は、算出した出荷基準外の製品の割合をモニタ31に表示させる。なお、管理部140は、生産数、出荷基準内の製品の割合、出荷基準外の製品の画像等を表示してもよい。
【0154】
このようにして、管理部140は、診断結果を集計し、出荷基準外の製品の割合を表示する。なお、制御装置100は、基準外の製品の割合が大きい場合、製造ラインを止めてもよい。
【0155】
このように第2の実施の形態の情報処理システム400では、計算装置200−1〜200−4がカメラ21−1〜21−4に接続され、計算装置200−1〜200−6がカメラ21−1〜21−4が撮影した画像に基づく画像処理を実行する。制御装置100は、計算装置200−1〜200−6から、計算装置200−1〜200−6が実行した画像処理の結果を収集し、収集した画像処理の結果に基づいた処理を実行する。これにより、情報処理システム400では、計算装置200−1〜200−6が制御装置100を介さずに、カメラ21−1〜21−4が撮影した画像を取得できるため、制御装置100のデータ送受信量が減少する。よって、情報処理システム400は、画像処理の効率を向上させることができる。
【0156】
また、情報処理システム400では、PCIeブリッジコントローラ300は、計算装置200−1〜200−6および制御装置100それぞれに、計算装置200−1〜200−6および制御装置100それぞれのデバイスとして接続される。そして、PCIeブリッジコントローラ300は、計算装置200−1〜200−6および制御装置100間のデータ送信を中継する。これにより、計算装置200−1〜200−6および制御装置100それぞれは、他の装置へのデータ送信のためにPCIeブリッジコントローラ300のブリッジドライバのみを有していればよい。よって、情報処理システム400は、装置間のデータ送信を容易にできる。
【0157】
また、情報処理システム400では、カメラ21−1〜21−4に接続される計算装置200−1〜200−4は、カメラ21−1〜21−4が撮影した画像を取得し、カメラ21−1〜21−4が撮影した画像に対する画像処理を実行する。そして、計算装置200−1〜200−4は、カメラ21−1〜21−4が撮影した画像と自装置が実行した画像処理の結果とに基づくデータを計算装置200−5〜200−6および制御装置100のうちの少なくとも1つに送信する。カメラ21−1〜21−4に接続されていない計算装置200−5〜200−6は、計算装置200−1〜200−4から取得した取得データに基づく画像処理を実行し、取得データと自装置が実行した画像処理の結果とに基づくデータを制御装置100に送信する。これにより、情報処理システム400は、カメラに接続されていない計算装置200−5〜200−6も利用した2段階の画像処理を実行できる。
【0158】
また、情報処理システム400では、計算装置200−1〜200−6それぞれは、送信先情報40を記憶し、自装置が実行した画像処理の結果に基づくデータを送信先情報40が示す送信先に送信する。これにより、情報処理システム400は、画像処理におけるデータの流れを制御装置100を介さずに制御できる。
【0159】
また、情報処理システム400では、送信先情報40は、複数の条件と複数の条件それぞれに対応する送信先とを含む。計算装置200−1〜200−4それぞれは、自装置が実行した画像処理の結果に基づくデータを、送信先情報40に示される複数の条件のうちの自装置が実行した画像処理の結果が満たす条件に対応する送信先に送信する。これにより、情報処理システム400は、分岐があるデータの流れを制御できる。
【0160】
計算装置200−1〜200−4は、カメラ21−1〜21−4のうちの1つに接続される。これにより、情報処理システム400は、複数のカメラそれぞれが撮影した画像に基づいた処理を、複数の計算装置に分散して実行させることができる。
【0161】
〔その他の実施の形態〕
第2の実施の形態の情報処理システム400では、製品のキズの1次診断および2次診断の2段階の処理を行っていたが、他の2段階の画像処理が行われてもよいし、1段階の処理や3段階以上の画像処理が行われてもよい。また、第2の実施の形態の情報処理システム400は6つの計算装置200−1〜200−6を含み、4つの計算装置200−1〜200−4がカメラと接続されていた。しかし、情報処理システムが含む計算装置の総数とカメラと接続される計算装置の数とは、第2の実施の形態に示したものに限られない。以下に、画像処理をする情報処理システムの他の例を2つ示す。
【0162】
図19は、情報処理システムの処理内容の第2の例を示す図である。情報処理システム400aは、カメラ21a−1〜21a−6が撮影した街頭の画像から人物を検出するものである。情報処理システム400aは、制御装置100aおよび計算装置200a−1〜200a−6を含む。計算装置200a−1は、カメラ21a−1と接続される。また、計算装置200a−2は、カメラ21a−2と接続される。また、計算装置200a−3は、カメラ21a−3と接続される。また、計算装置200a−4は、カメラ21a−4と接続される。また、計算装置200a−5は、カメラ21a−5と接続される。また、計算装置200a−6は、カメラ21a−6と接続される。
【0163】
計算装置200a−1〜200a−6は、カメラ21a−1〜21a−6が撮影した街頭の画像から人物を検出する。計算装置200a−1〜200a−6は、人物検出処理の結果を制御装置100aに送信する。制御装置100aは、計算装置200a−1〜200a−6から収集した人物検出処理の結果に基づいて、人物が検出された位置をユーザに通知する。
【0164】
図20は、情報処理システムの処理内容の第3の例を示す図である。情報処理システム400bは、カメラ21b−1〜21b−3が撮影した施設内の動画から不審人物を検出するものである。情報処理システム400bは、制御装置100bおよび計算装置200b−1〜200b−6を含む。計算装置200b−1は、カメラ21b−1と接続される。また、計算装置200b−2は、カメラ21b−2と接続される。また、計算装置200b−3は、カメラ21b−3と接続される。
【0165】
計算装置200b−1〜200b−3は、カメラ21b−1〜21b−3から施設内を撮影した動画を取得する。計算装置200b−1〜200b−3は、カメラ21b−1〜21b−3が撮影した画像から人物を検出する。計算装置200b−1〜200b−3は、カメラ21b−1〜21b−3が撮影した動画と人物の検出結果とを計算装置200b−4〜計算装置200b−5に送信する。
【0166】
計算装置200b−4〜200b−5は、計算装置200b−1〜200b−3から取得したカメラ21b−1〜21b−3が撮影した動画と人物の検出結果とに基づいて、検出された人物の動画上の位置を追跡する。そして、計算装置200b−4〜200b−5は、カメラ21b−1〜21b−3が撮影した動画と人物の追跡結果とを計算装置200b−6に送信する。
【0167】
計算装置200b−6は、計算装置200b−4〜200b−5から取得したカメラ21b−1〜21b−3が撮影した動画と人物の追跡結果とに基づいて、人物が不審人物か否かの判定(属性推定)をする。そして、計算装置200b−6は、カメラ21b−1〜21b−3が撮影した動画と属性推定結果とを制御装置100bに送信する。
【0168】
制御装置100bは、計算装置200b−6から取得したカメラ21b−1〜21b−3が撮影した動画と属性推定結果とに基づいて、ユーザに不審人物の施設内の位置を通知する。
【0169】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
前記情報処理システムは、前記複数の計算装置および前記制御装置それぞれに、前記複数の計算装置および前記制御装置それぞれのデバイスとして接続され、前記複数の計算装置および前記制御装置間のデータ送信を中継する中継装置を有する、
請求項1記載の情報処理システム。
前記複数の計算装置のうちの前記カメラに接続される計算装置は、前記カメラから前記カメラが撮影した画像を取得し、前記カメラが撮影した画像に対する画像処理を実行し、前記カメラが撮影した画像と自装置が実行した画像処理の結果とに基づくデータを前記複数の計算装置および前記制御装置のうちの少なくとも1つに送信し、
前記複数の計算装置のうちの前記カメラに接続されていない計算装置は、前記複数の計算装置のうちの少なくとも1つの計算装置から取得した取得データに基づく画像処理を実行し、前記取得データと自装置が実行した画像処理の結果とに基づくデータを前記複数の計算装置または前記制御装置のうちの少なくとも1つに送信する、
請求項1または2記載の情報処理システム。