応用情報技術者過去問題 令和3年秋期 午後問7
⇄問題文と設問を画面2分割で開く⇱問題PDF問7 組込みシステム開発
IoTを利用した養殖システムに関する次の記述を読んで,設問1~3に答えよ。
G社は,海上の生け簀の中で良質な養殖魚の育成を支援する,IoTを利用した養殖システム(以下,スマート生け簀という)を開発している。
〔スマート生け簀のシステム構成〕
スマート生け簀の概観を図1に,スマート生け簀のシステム構成を図2に示す。 スマート生け簀は,網をつるすためのブイに接続された水質センサ,水中ステレオカメラ,残餌検知部,及び給餌部で構成される。給餌部は,海中への餌(えさ)の投入(以下,給餌という)を行う。残餌検知部は,養殖魚が食べ残して沈んでいく餌(以下,残餌という)を収集する集餌コーン及び残餌センサで構成される。給餌部は,残餌検知部で取得した残餌の量を用いて求めた食べた餌の重量,水質センサの計測データ(以下,水質データという),及び水中ステレオカメラで撮影された動画(以下,動画データという)をサーバに送信する。サーバは,蓄積したデータを基にAIで分析し,与える餌の重量(以下,給餌重量という),及び餌を与える日時(以下,給餌日時という)を決定し,給餌部に送信する。
〔給餌部の動作概要〕
サーバは,動画データを基に,養殖魚の大きさ・形状・推定個体数を抽出し,水質データと食べた餌の重量を併せて蓄積する。サーバは,蓄積したデータを基にAIで分析し,良質な養殖魚を育成する上で適した給餌重量及び給餌日時を決定して,給餌部に送信する。
〔装置の機能〕
スマート生け簀の構成要素の概要を表1に示す。 給餌日時になったときの給餌処理フローを図3に示す。
G社は,海上の生け簀の中で良質な養殖魚の育成を支援する,IoTを利用した養殖システム(以下,スマート生け簀という)を開発している。
〔スマート生け簀のシステム構成〕
スマート生け簀の概観を図1に,スマート生け簀のシステム構成を図2に示す。 スマート生け簀は,網をつるすためのブイに接続された水質センサ,水中ステレオカメラ,残餌検知部,及び給餌部で構成される。給餌部は,海中への餌(えさ)の投入(以下,給餌という)を行う。残餌検知部は,養殖魚が食べ残して沈んでいく餌(以下,残餌という)を収集する集餌コーン及び残餌センサで構成される。給餌部は,残餌検知部で取得した残餌の量を用いて求めた食べた餌の重量,水質センサの計測データ(以下,水質データという),及び水中ステレオカメラで撮影された動画(以下,動画データという)をサーバに送信する。サーバは,蓄積したデータを基にAIで分析し,与える餌の重量(以下,給餌重量という),及び餌を与える日時(以下,給餌日時という)を決定し,給餌部に送信する。
〔給餌部の動作概要〕
- 給餌部は,定期的に動画データ及び水質データを受信してフラッシュメモリに保存する。保存した動画データ及び水質データをサーバに送信する。
- 給餌部は,給餌重量及び給餌日時をサーバから受信する。指示された給餌日時になると,給餌部は,給餌重量を基に,給餌を行う回数(以下,給餌予定回数という),1回当たりの餌の重量を求める。さらに,給餌の終了判断に用いるしきい値を決定し,次の動作を開始する。
- 給餌部は,1回目の給餌を開始するとともに,残餌検知部を動作させる。
- 残餌は,集餌コーンによって集められる。残餌センサは,通過する残餌を1個ずつカウントし,その値をカウント値とする。カウント方法は,アップカウントとする。
- 給餌部は,5分間隔でカウント値を読み込み,単位時間当たりのカウント値(以下,Ct値という)を求める。Ct値がしきい値より少ないときは,養殖魚が餌を食べ続けていると判断する。Ct値がしきい値以上のときは,養殖魚が餌を食べなくなったと判断する。
- 給餌部は,Ct値がしきい値より少ないときは,給餌予定回数に達するまで給餌を繰り返す。
- 給餌予定回数に到達したとき,又はCt値がしきい値以上のとき,給餌を終了する。終了直前で読み込んだカウント値を,給餌終了時のカウント値とする。
- 給餌部は,給餌を行った回数を基に,実際に給餌した餌の重量を求める。求めた値を用いて,食べた餌の重量を求める。ここで,給餌を行う1個の餌の重量は均一とする。
- 給餌部は,食べた餌の重量をサーバに送信する。
サーバは,動画データを基に,養殖魚の大きさ・形状・推定個体数を抽出し,水質データと食べた餌の重量を併せて蓄積する。サーバは,蓄積したデータを基にAIで分析し,良質な養殖魚を育成する上で適した給餌重量及び給餌日時を決定して,給餌部に送信する。
〔装置の機能〕
スマート生け簀の構成要素の概要を表1に示す。 給餌日時になったときの給餌処理フローを図3に示す。
設問1
スマート生け簀の動作について,(1),(2)に答えよ。
- サーバは良質な養殖魚を育成するために,AIで分析を行って養殖魚を管理している。AIの分析に用いるデータ中には,水質データ,食べた餌の重量,養殖魚の大きさ・形状・推定個体数がある。これらのデータをサーバに蓄積するときに付加すべきデータを答えよ。
- 給餌部が給餌を開始してから,カウント値を読み込むまでに単位時間待つ必要がある。その理由を30字以内で述べよ。
解答入力欄
解答例・解答の要点
- 日時データ
- 残餌が残餌センサに到達するまでに時間を要するから (24文字)
解説
- 水質データ、食べた餌の重量、養殖魚の大きさ・形状・推定個体数のデータは、給餌重量と給餌日時を決定するために蓄積しています。AI分析により給餌重量と給餌日時を最適化していくためには、どの程度の餌をどのタイミングで食べたときに、水質や養殖魚の形質がどのように変化したのかが見えるようになっている必要があります。食べた量による作用は"食べた餌の重量"からわかりますが、餌を食べたタイミングの作用は上記データからではわかりませんので、適切な給餌日時を決定にするために記録日時がわかるデータが必要です。したがって「日時データ」を付加する必要があります。
∴日時データ - 給餌部から投入された餌は海中に沈んでいき、魚に食べられなかった餌は集餌コーンによって集められ、残餌センサがその個数を数える仕組みになっています。カウント値は、残餌センサが通過する残餌を1個ずつカウントした値です。魚の餌はそれほど重いものではありませんから、投入された餌が残餌センサに到達するまではそれなりの時間が掛かることになります。したがって、正確な残餌の数を得るには、餌を投入してからその餌が残餌センサまで沈むまでの一定時間待つ必要があります。この時間が5分というわけです。
∴残餌が残餌センサに到達するまでに時間を要するから
設問2
水中ステレオカメラの動画は,左右それぞれ20フレーム/秒であり,1フレームは800×600ピクセルの画素数で,1画素当たりのデータ長は24ビットである。1回当たり2分間の動画を撮影し,給餌部のフラッシュメモリに保存する。この動画データについて,(1),(2)に答えよ。ここで,1Gバイト=109バイトとする。
- 撮影1回当たりの動画データのサイズは,何Gバイトか。答えは小数第1位を四捨五入して,整数で求めよ。
- 動画データを給餌部のフラッシュメモリに保存するために,水中ステレオカメラ内で行う必要がある処理は何か。ここで,給餌部のフラッシュメモリの容量は2Gバイトとする。
解答入力欄
- Gバイト
解答例・解答の要点
- 7
- 画像圧縮処理
解説
- 設問の条件を整理します。
- フレーム数:左右それぞれ20フレーム/秒。ステレオカメラなので左右あわせて40フレーム/秒
- 1フレームの画素数:800×600ピクセル
- 1画素当たりのデータ長:24ビット=3バイト
- 撮影1回当たりの動画の時間:2分=120秒
動画データのサイズ = フレーム数 × 1フレーム当たりの画素数 × 1画素当たりのデータ長 × 動画の時間
= 40[フレーム] × 800[px] × 600[px] × 3[バイト] × 120[秒]
= 6,912,000,000 [バイト]
(Gバイト単位にすると)6.912Gバイト
(小数第1位を四捨五入して)7Gバイト
∴7 - (1)で求めたように、撮影1回当たりの動画データのサイズは約7Gバイトです。一方で、給餌部のフラッシュメモリのサイズは2Gバイトです。動画データのサイズが、給餌部のフラッシュメモリのサイズよりも大きいため、そのままでは保存することはできません。そのため、画像圧縮によって動画データのサイズを小さくする必要があります。したがって「画像圧縮処理」が適切です。
∴画像圧縮処理
設問3
給餌処理フローについて,(1),(2)に答えよ。
- 図3中のa,bに入れる適切な字句を答えよ。
- 養殖魚が食べた餌の重量の算出方法について,次の式中のc~fに入れる最も適切な字句を解答群の中から選び,記号で答えよ。
食べた餌の重量=(c×d)-(e×f)
c,d,e,f に関する解答群
- Ct値
- 1回当たりの餌の重量
- 1個の餌の重量
- 給餌開始時のカウント値
- 給餌終了時のカウント値
- 給餌重量
- 給餌予定回数
- 給餌を行った回数
解答入力欄
- a:
- b:
- c:
- d:
- e:
- f:
解答例・解答の要点
- a:カウント値
- b:しきい値以上
- c:イ
- d:ク
- e:ウ
- f:オ
解説
- 〔aについて〕
空欄aは、Ct値を求める前の処理です。問題文の〔給餌部の動作概要〕より、Ct値は、単位時間あたりのカウント値です。よって、Ct値を求めるためには、単位時間とカウント値が必要です。単位時間は5分と決まっているため、残ったカウント値を読み込む必要があります。したがって、空欄aには「カウント値」が当てはまります。
∴a=カウント値
〔bについて〕
空欄bを含む分岐は、Ct値に応じて給餌を繰り返すかどうかを判定する処理になっていて、当該分岐がYesのときには給餌を終了する処理に進むことがわかります。
問題文の〔給餌部の動作概要〕には、以下の記述があります。- 給餌部は,Ct値がしきい値より少ないときは,給餌予定回数に達するまで給餌を繰り返す。
- 給餌予定回数に到達したとき,又はCt値がしきい値以上のとき,給餌を終了する。
∴b=しきい値以上 - 養殖魚が食べた餌の重量の算出方法を考えます。一般的に食べた餌の重量は、以下のように求められます。
食べた餌の重量 = 与えた餌の重量 - 残った餌の重量
まず、与えた餌の重量を解答群の字句を使用し、なおかつ、乗算で求めます。「給餌部は,給餌を行った回数を基に,実際に給餌した餌の重量を求める」とあるので、
与えた餌の重量 = 1回あたりの餌の重量 × 給餌を行った回数
次に、残った餌の重量を解答群の字句を使用し、なおかつ、乗算で求めます。
残った餌の重量 = 1個の餌の重量 × 給餌終了時のカウント値
よって、空欄cには「イ」、空欄dには「ク」、空欄eには「ウ」、空欄fには「オ」がそれぞれ当てはまります。乗算ですので、cとd、eとfは前後が異なっていても正解となります。
∴c=イ:1回あたりの餌の重量
d=ク:給餌を行った回数
e=ウ:1個の餌の重量
f=オ:給餌終了時のカウント値