組立ラインの作業を撮った動画から手の動きで要素作業を区切って時間を測り、標準時間とのずれとムダの候補を生産技術に出す
組立作業を真上から撮った動画から、両手の位置をコマごとに取り、部品箱・治具・完成品置き場への手の出入りで要素作業を区切って時間を測ります。標準時間とのずれと、ムダの候補を生産技術の担当者に出します。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Python
- 対象業界
- 物流/製造
- 対象部門
- 生産
- 対象業務
- 比較検討/集計・分析
- 主な課題
- データ分析に時間がかかる/人手が足りない/属人化している
- AIで行う処理
- 画像認識
- 主な効果
- 判断支援/品質標準化/工数削減
- 導入難易度
- ★★★★★
- 実装レベル
- 本格構成
- 費用感
- 個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 担当者が工程の作業台の斜め上にビデオカメラを置き、作業を約30分撮影する
- 動画を再生ソフトで開き、要素作業の境目ごとに止めて、時刻を表に書き写す
- 境目の判断に迷う箇所(部品を取り終えたのはどのコマか)は、コマ送りで何度も見直す
- サイクルごとに要素作業の時間を計算し、平均とばらつきを出す
- 作業標準書の標準時間と比べ、ずれの大きい要素作業に印を付ける
- 動画を見返し、ずれの原因になっていそうな動き(探す、持ち替える、待つ)をメモする
- 課内の会議で、標準時間の見直しか作業のやり方の見直しかを決める
- 人担当者が工程の作業台の真上に固定のカメラを置き、作業を約30分撮影する
- 人初めて測る工程では、最初のコマの画像の上で、部品箱・治具・ドライバー置き場・完成品置き場の領域を囲み、区切りの決まりの表を作る
- 自動動画を共有フォルダの受付フォルダに置くと、夜間に Python が動画を1コマずつ読む
- 自動MediaPipe の Hand Landmarker が両手の21点の位置を、Pose Landmarker が体の33点の位置をコマごとに返す
- 自動手の位置が領域に入った・出たという出来事の列を作り、区切りの決まりの表に当てはめて要素作業を区切る
- 自動サイクルごとに要素作業の時間を測り、平均・ばらつきを出して標準時間と比べる
- 自動ムダの候補(手の停滞、片手の待ち、作業台から体が離れる)に印を付け、該当の動画の時刻を書き出す
- 自動Claude API が、ずれと候補の表から担当者向けの所見の下書きを作る
- 人担当者が、区切りの怪しいサイクルと候補の付いた箇所だけを動画で見て、区切りを直し、候補を採るか捨てるかを決める
- 人課内の会議で、標準時間の見直しか作業のやり方の見直しかを決める
各工程の詳しい説明を読む
- 担当者が工程の作業台の斜め上にビデオカメラを置き、作業を約30分撮影する
- 動画を再生ソフトで開き、要素作業の境目ごとに止めて、時刻を表に書き写す
- 境目の判断に迷う箇所(部品を取り終えたのはどのコマか)は、コマ送りで何度も見直す
- サイクルごとに要素作業の時間を計算し、平均とばらつきを出す
- 作業標準書の標準時間と比べ、ずれの大きい要素作業に印を付ける
- 動画を見返し、ずれの原因になっていそうな動き(探す、持ち替える、待つ)をメモする
- 課内の会議で、標準時間の見直しか作業のやり方の見直しかを決める
(a)1本を測るのに半日近くかかる。 30分の動画に40サイクルあれば、要素作業が5つで境目は200か所です。止めては進めて時刻を書き写す作業が、時間の大半を占めます。
(b)区切り方が担当者ごとに違う。 「部品を取る」の終わりを、部品が箱から出たときとするか、手が治具に向かい始めたときとするかで、要素作業の時間は数秒変わります。同じ動画を2人が測ると、違う結果が出ます。 前回と今回の差が、作業が変わったからか、測る人が替わったからか分かりません。
(c)ムダの見つけ方が担当者の目に頼っている。 部品箱の上で手が止まる「探す」、片手がもう片方を待つ「手待ち」は、ベテランの担当者には見えますが、経験の浅い担当者は見落とします。
(d)測れる工程が限られる。 毎月40本が上限なので、新しい製品の立ち上げが重なる月は、不良の増えた工程の測定が後回しになります。
- 【人】 担当者が工程の作業台の真上に固定のカメラを置き、作業を約30分撮影する
- 【人】 初めて測る工程では、最初のコマの画像の上で、部品箱・治具・ドライバー置き場・完成品置き場の領域を囲み、区切りの決まりの表を作る
- 【自動】 動画を共有フォルダの受付フォルダに置くと、夜間に Python が動画を1コマずつ読む
- 【自動】 MediaPipe の Hand Landmarker が両手の21点の位置を、Pose Landmarker が体の33点の位置をコマごとに返す
- 【自動】 手の位置が領域に入った・出たという出来事の列を作り、区切りの決まりの表に当てはめて要素作業を区切る
- 【自動】 サイクルごとに要素作業の時間を測り、平均・ばらつきを出して標準時間と比べる
- 【自動】 ムダの候補(手の停滞、片手の待ち、作業台から体が離れる)に印を付け、該当の動画の時刻を書き出す
- 【自動】 Claude API が、ずれと候補の表から担当者向けの所見の下書きを作る
- 【人】 担当者が、区切りの怪しいサイクルと候補の付いた箇所だけを動画で見て、区切りを直し、候補を採るか捨てるかを決める
- 【人】 課内の会議で、標準時間の見直しか作業のやり方の見直しかを決める
9番目が、この設計の分かれ目です。 担当者が動画を見るのは全編ではなく、区切りに自信が無いサイクルと、候補の付いた数秒の箇所だけです。全編を見直す設計にすると、①の150分はほとんど減りません。
2番目を人が行うのも、意図してのことです。 領域と区切りの決まりは、工程の作業標準書を読んで決めるものです。一度作れば、同じ工程を次に測るときはそのまま使えます。
02今回想定するシステム構成
固定のカメラで撮った作業の動画(1工程・約30分) │ 受付フォルダに置く ▼【トリガー】毎晩 21:00 の定時実行(未処理の動画) Python(OpenCV で1コマずつ読む) ▼ MediaPipe Hand Landmarker ── 両手の21点の位置(コマごと) MediaPipe Pose Landmarker ── 体の33点の位置(コマごと) ▼ Python ── 領域への出入りの出来事の列を作る │ ← 工程ごとの領域と区切りの決まりの表 ▼ Python ── 要素作業の区切り/サイクルごとの時間/標準時間との比較 │ ムダの候補(手の停滞・片手の待ち・作業台から離れる) ▼ Claude API ── 所見の下書き(ずれと候補の要約、確かめる箇所の一覧) ▼ 【担当者が区切りの怪しい箇所と候補だけを動画で確かめる】 ▼ 工程ごとの時間の表 ── 作業標準書の見直しの会議へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Python(OpenCV で動画を読み、MediaPipe の Hand Landmarker と Pose Landmarker で手と体の位置を取る) | 他の姿勢推定モデル |
| 生成AI | Claude API(所見の下書き) | OpenAI API、Gemini API |
| 撮影 | 作業台の真上に置く固定のカメラ(録画した動画ファイル) | 既設の監視カメラの録画 |
| 結果の出力先 | 共有フォルダの工程ごとの時間の表 | 生産管理システムの帳票 |
| 定時実行 | OSのタスクスケジューラ | クラウドのジョブ実行サービス |
作業標準書と生産管理の仕組みには書き込みません。 この構成が出すのは、測った時間の表とムダの候補までです。標準時間を書き換えるのは、課内の会議で決めた後に担当者が行います。
手の位置を取るのは、MediaPipe の Hand Landmarker です。 公式の Python のガイドでは、検出した手ごとに21点の手の目印を返し、x と y は画像の幅と高さで [0.0, 1.0] に正規化された値、z は奥行きを表すとされています。右手か左手かの判別と、メートル単位の実世界の座標も返ります。検出する手の数 num_hands の既定は1なので、両手を取るには2に変えます。 検出・存在・追跡の信頼度のしきい値は、いずれも既定が0.5です。
体の位置を取るのは、Pose Landmarker です。 1人あたり33点の目印を返し、num_poses の既定は1です。この構成では、作業者が作業台から離れたかどうかを見るためだけに使います。
どちらも、動画を処理するときは VIDEO の実行モードを使い、コマごとの時刻をミリ秒で渡す必要があります。 動画の読み込みには OpenCV などの外部のライブラリを使い、コマを配列として読んでから MediaPipe の画像に変換する手順が、公式のガイドに示されています。
03どうやって実装するのか
処理の起点を決める
毎晩21時に、受付フォルダの未処理の動画を処理します。 30分の動画を1コマずつ両手と体の位置を取ると、パソコンの性能によっては動画の長さ以上の時間がかかります。撮影した日の夜に回せば、翌朝には結果がそろっています。
撮影の直後にその場で回すことはしません。撮影中の工程の横で処理を待つ必要は無く、夜間なら生産技術課のパソコンを占有できます。 処理が終わった動画は処理済みフォルダへ移し、移すのは結果の表を書き終えたときだけにします。受付フォルダに残っている本数が、そのまま未処理の本数です。
1晩に処理する本数は、朝までに終わる本数に限ります。 受付フォルダに多く置かれた日は、撮影の日付が古いものから処理し、残りは翌晩に回します。
動画のファイル名には、工程の番号と撮影の日付を入れる決まりにします。 工程の番号から、その工程の領域と区切りの決まりの表を引きます。表の無い工程の動画は処理せず、担当者に「領域の設定が必要」と知らせます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 作業の動画 | 作業台の真上から撮った約30分の録画。コマの速さ(毎秒のコマ数)と解像度 | 固定のカメラ |
| 領域の表 | 工程ごとに、部品箱・治具・ドライバー置き場・完成品置き場の位置(画面上の四角形) | 担当者が最初の1回に作る |
| 区切りの決まりの表 | どの領域に手が入ったら、どの要素作業が始まるか・終わるか | 担当者が作業標準書をもとに作る |
| 標準時間の表 | 工程ごと・要素作業ごとの標準時間 | 作業標準書 |
| 撮影の条件 | 撮影した日、ライン、品番、作業者の経験の区分(新人/経験者) | 担当者が撮影時に書く |
質を決めるのは、3行目の区切りの決まりの表です。 たとえば次のように書きます。
| 要素作業 | 始まり | 終わり |
|---|---|---|
| 部品Aを取る | どちらかの手が部品箱Aの領域に入る | その手が治具の領域に入る |
| 位置を合わせる | 部品を持った手が治具の領域に入る | どちらかの手がドライバー置き場の領域に入る |
| ねじを締める | ドライバーを持った手が治具の領域に入る | ドライバー置き場の領域に手が戻る |
| 検査して置く | ドライバー置き場から手が出る | どちらかの手が完成品置き場の領域に入る |
表は、作業標準書の要素作業の分け方にそろえます。 標準時間と同じ単位で区切らないと、比べることができません。
作業者の氏名は入力に含めません。 撮影の条件に残すのは経験の区分だけで、誰の作業かではなく、どの工程のどの作業かを測ります。
データの取得方法を決める
動画は、Python から OpenCV で開き、1コマずつ読み出します。 読み出したコマを MediaPipe の画像に変換し、Hand Landmarker と Pose Landmarker に、そのコマの時刻(ミリ秒)とともに渡します。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 両手の21点の正規化された座標 | Hand Landmarker | 人差し指の先と手首の位置で、どの領域にあるかを決める |
| 右手・左手の判別 | Hand Landmarker | 両手のそれぞれの出来事の列を分ける |
| 体の33点の正規化された座標 | Pose Landmarker | 腰の位置が作業台の前から外れたかを見る |
| 検出の信頼度 | 両方 | 手が見えていないコマを見分ける |
手の位置の代表点は、人差し指の先と手首の2点にします。 部品箱に手を入れるとき、先に入るのは指先です。指先だけで決めると、箱の縁をかすめただけで「入った」になるので、指先と手首の両方が領域に入ったときを「入った」とします。
右手と左手が交差する作業では、判別が入れ替わることがあります。 部品を持ち替える瞬間に両手が重なると、右手と左手の判別が数コマだけ逆になります。前後のコマで手首の位置が大きく飛んだときは、入れ替わったとみなして直します。 直したコマの数は結果の表に残します。
毎秒30コマの動画なら、1コマは約33ミリ秒です。 標準時間が秒単位なので、時間を測る精度としては十分です。処理を軽くするために、毎秒15コマに間引いてから渡すこともできますが、間引いたことを結果の表に記録します。
AIへ渡す前に整形する
- カメラの位置の確かめ … 最初のコマを領域の表と重ねて表示し、作業台がずれていないかを確かめます。ずれていたら領域を描き直します
- コマの速さの確かめ … 動画の毎秒のコマ数を読み、時刻の計算に使います。可変のコマの速さで録られた動画は、一定の速さに変換してから処理します
- 手の見えないコマの扱い … 手が部品や体に隠れて検出されないコマは、前後のコマの位置で埋めず「見えない」とします。0.5秒を超えて見えない区間は、区切りを付けずに確認の対象にします
- 位置のぶれを抑える … 指先の座標はコマごとに細かく揺れます。前後数コマの中央値で整え、領域の縁で入った・出たが細かく繰り返すのを防ぎます
- 最小の滞在時間 … 領域に入ってから出るまでが0.1秒未満のものは、通り過ぎたとして出来事にしません
- サイクルの区切り … 「検査して置く」の終わりを1サイクルの終わりとし、次のコマから次のサイクルとします
3番目を軽く見ないでください。 隠れたコマを前後の位置で埋めると、手が見えていない間に起きたことを、見えていたかのように区切ってしまいます。 見えない区間があるサイクルは、時間を測ったうえで「区切りに自信が無い」の印を付け、担当者が動画で確かめます。
4番目のしきい値(中央値を取るコマ数、0.1秒)は、工程ごとに変えません。 工程によって変えると、工程どうしの時間が比べられなくなります。変えるときは全工程で一度に変え、版を残します。
AIに処理させる
この構成の「AI」は2段に分かれます。 手と体の位置を取るのは MediaPipe で、要素作業の区切りと時間の計算は Python の決まりで行います。生成AIは区切りも時間も決めません。 生成AIにさせるのは、出そろった表から担当者向けの所見の下書きを作ることだけです。
| 段 | させること | させないこと |
|---|---|---|
| MediaPipe | コマごとの両手と体の目印の位置、信頼度 | 作業の名前を決めること |
| Python の決まり | 領域への出入り、要素作業の区切り、時間、ムダの候補の印 | 標準時間の見直しの判断 |
| Claude API | ずれと候補の要約、担当者が確かめる箇所の一覧(動画の時刻つき) | 時間の計算、原因の断定、作業者の評価 |
ムダの候補は、Python の決まりで次のように印を付けます。
| 候補 | 決まり |
|---|---|
| 探す | 手が部品箱の領域に入ってから出るまでが、そのサイクルの中央値の2倍を超える |
| 片手の待ち | 一方の手が治具の領域で作業している間、もう一方の手がどの領域にも入らず1秒以上止まっている |
| 持ち替え | 部品を取った手と治具に入る手が、右と左で入れ替わる |
| 作業台から離れる | 腰の目印が作業台の前の範囲から外れる |
| 生成AIにさせないこと | 理由 |
|---|---|
| 時間の再計算・平均の算出 | 数値は Python の表が正。生成AIに計算させると食い違う |
| 原因の断定(「部品箱の配置が悪い」) | 現場を見ていない。候補として書くまで |
| 作業者の良し悪しの評価 | 測るのは工程の作業で、人ではない |
| 標準時間の改定値の提案 | 課内の会議で決めること |
1行目がいちばん起きやすい失敗です。 表を渡して「要約して」と頼むと、生成AIは平均を計算し直して書き、表と違う数字の入った所見ができます。 所見に書く数字は、表にある値をそのまま写させます。
指示内容を固定する
あなたは工場の生産技術課で、作業の時間測定の結果を整理する立場です。
渡された表だけを使って、担当者向けの所見の下書きを作ってください。
【作るもの】
1. 標準時間とのずれが大きい要素作業を、ずれの大きい順に3つまで
(各要素作業の平均、標準時間、ずれの割合は表の値をそのまま写す)
2. ムダの候補ごとに、件数と、担当者が動画で確かめる時刻の一覧(最大5か所)
3. 区切りに自信が無いサイクルの番号と、その理由(手が見えない区間など)
【厳守事項】
- 数字は表にある値だけを使い、計算し直したり丸め方を変えたりしないでください。
- 原因を断定しないでください。「〜の可能性がある」とも書かず、
「動画で確かめる箇所」として時刻を示すにとどめてください。
- 作業者の良し悪し、熟練度、態度について書かないでください。
- 標準時間をいくつに変えるべきかを書かないでください。
- 表に無い要素作業やムダの候補を足さないでください。
- 区切りに自信が無いサイクルの時間を、ずれの根拠に使わないでください。
- 情報が足りないときは missing_info に項目名を入れ、推測で補わないでください。
【工程】{process_id}({process_name})
【要素作業ごとの時間と標準時間】{element_table}
【ムダの候補の一覧】{waste_candidates}
【区切りに自信が無いサイクル】{low_confidence_cycles}
「原因を断定しない」に加えて「可能性がある」も禁じるのは、言い回しを変えた断定になるからです。 「部品箱の配置が原因の可能性があります」と書かれた所見を読むと、担当者は動画を見る前に配置を疑います。 所見は、どこを見ればよいかを示すところで止めます。
「区切りに自信が無いサイクルを根拠に使わない」も明記します。 手が見えずに区切りがずれたサイクルは、時間が極端に長く出ることがあり、そのまま平均に入るとずれが大きく見えます。
出力形式を固定する
次の形のJSONで受け取ります。 Claude API の構造化出力(output_config.format に type: "json_schema" を指定)で、この形に固定します。
{
"video_id": "P047_20261006",
"process_id": "P047",
"cycles": 38,
"elements": [
{ "name": "部品Aを取る", "mean_sec": 0.0, "std_sec": 0.0,
"standard_sec": 0.0, "deviation_pct": 0.0 }
],
"waste_candidates": [
{ "type": "search | one_hand_wait | regrip | leave_station",
"count": 0, "check_times": ["00:12:41"] }
],
"low_confidence_cycles": [ { "cycle": 17, "reason": "hand_not_visible" } ],
"summary_draft": "",
"missing_info": []
}
cycles elements waste_candidates low_confidence_cycles は Python が埋め、summary_draft と missing_info だけを生成AIが埋めます。
1つ目の理由は、数字と文章を別の層に置けることです。 数字の欄は Python が書くので、生成AIが数字を書き換える経路がありません。 受け取った後に、summary_draft の中の数字が elements の値と一致するかを Python で照らし、一致しない数字があれば下書きを出しません。
2つ目は、確かめる時刻がそのまま動画の再生位置になることです。 check_times を再生ソフトに入れれば、候補の数秒だけを見られます。
構造化出力では、数値の範囲(minimum/maximum)や文字数の制約が使えず、additionalProperties は false にする必要があるとされています。summary_draft の長さの確認は、受け取った後に Python で行います。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ | 定時実行で読み取り | 未処理の動画を拾う |
| 領域・区切りの決まり・標準時間の表 | Python で読み取り | 工程の番号で引く |
| MediaPipe | Python のライブラリ(手元のパソコンで動く) | 両手と体の目印の位置 |
| Claude API | API呼び出し | 所見の下書き(表だけを渡す) |
| 工程ごとの時間の表 | 共有フォルダへの書き込み | 区切り・時間・候補・所見 |
Claude API に渡すのは、時間と候補の表だけで、動画も画像も渡しません。 手と体の位置を取る処理は手元のパソコンで完結し、作業者の映った動画が社外に出る経路はありません。
標準時間の表は読み取りだけです。 測った時間がずれていても、表を書き換えるのは会議の後に担当者が行います。
人が確認する
担当者が動画を見るのは、次の2種類の箇所だけです。
- 区切りに自信が無いサイクル … 手が見えない区間があったサイクルを動画で見て、境目を手で直します。直した区切りは結果の表に「手で修正」と残します
- ムダの候補の箇所 …
check_timesの前後数秒を見て、候補を採るか捨てるかを決めます。捨てた理由(部品の補充をしていた、など)を一言書きます - 所見の下書きを直す … ずれの大きい要素作業について、現場で確かめることを書き足します
- 会議にかける工程を選ぶ … 標準時間の見直しか、作業のやり方の見直しかを決めるのは課内の会議です
1番目を省かないでください。 区切りに自信の無いサイクルをそのまま平均に入れると、ずれの大きい要素作業が、測り方の誤りから生まれます。 その結果で標準時間を見直すと、現場に合わない標準時間ができます。
目標は、1本をならして36分です。 区切りに自信の無いサイクルが少ない工程は候補を見るだけで済み、手が隠れやすい工程は区切りの直しに時間がかかります。36分を大きく超える工程は、カメラの位置か領域の描き方を見直します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 領域の表が無い工程の動画 | 処理せず、担当者に「領域の設定が必要」と知らせる |
| カメラが撮影中に動いた | 作業台が領域からずれる。最初と最後のコマで作業台の位置を比べ、ずれたら処理を止める |
| 手が長く見えない | 0.5秒を超える区間は区切りを付けず、確認の対象にする |
| 作業者以外の手が映り込む | 3本目の手は数えない。num_hands を2にしたうえで、作業台の手前側の手だけを使う |
| 1サイクルが標準時間の3倍を超える | 部品の補充や段取り替えの可能性。平均から外し、確認の対象にする |
| 段取り替え・休憩で作業が止まる | どの領域にも手が入らない状態が1分を超えたら、その区間をサイクルから外す |
| 可変のコマの速さの動画 | 一定の速さに変換してから処理する |
| Claude API が応答しない | 時間と候補の表だけで出す。所見の欄は空にする |
上から2行目と3行目が、最初の数か月で最も多く出ます。 どちらも画像認識の問題ではなく、カメラの置き方の問題です。 固定の金具でカメラを留め、手が部品で隠れにくい真上から撮ると、確認の対象がぐっと減ります。
記録を残す
- 元の動画と、撮影の条件(工程、日付、品番、作業者の経験の区分)
- そのとき使った領域の表と区切りの決まりの表の版
- コマごとの両手と体の目印の座標と信頼度(動画より小さく、区切りのやり直しに使える)
- 要素作業の区切り、サイクルごとの時間、ムダの候補の印
- 担当者が手で直した区切りと、候補を捨てた理由
- 生成AIに渡した表と、返ってきた所見の下書き
3つ目の座標を残すのは、決まりを直したときに動画を処理し直さずに済むからです。 区切りの決まりを変えても、座標から区切りをやり直せば数秒で終わります。
5つ目の手の直しは、決まりを直す材料になります。 同じ工程で同じ境目が毎回直されていれば、その区切りの決まりが現場の動きと合っていません。
2つ目の表の版は、前回と今回を比べるときに要ります。 区切りの決まりを途中で変えた工程では、変える前と後の時間をそのまま比べられません。 比べるときは、残した座標から新しい決まりで前回分も区切り直します。
04実装レベルの3段階
半自動化だけでも、①の150分の大半が消えます。 境目の時刻を書き写す作業が無くなるからです。ただし、どのサイクルの区切りが怪しいかが分からないので、担当者は全編を流し見ることになります。 本格構成で1本36分になり、この段階が本記事の想定です。 違いは、見るべき箇所に印が付いていることです。 段階を飛ばさないでください。 半自動化で10工程ほど測ると、どの工程で手が隠れやすいか、どの区切りの決まりが現場と合わないかが分かります。それを直してから候補の印を足すほうが、印の空振りが減ります。
05工数削減シミュレーション
導入後 40件 × 36分 ÷ 60 = 24 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 作業台の上で部品を取り付ける組立作業が多く、工程ごとに標準時間を持っている工場。生産技術の担当者が、作業の動画をストップウォッチで止めながら要素作業の時間を測っており、測る工程の数に手が追いつかない場合。作業台の真上や斜め上に固定のカメラを置ける場合。作業者と労働組合・従業員の代表に、撮影の目的と使い方を説明できる場合。
- 作業者が工程の間を大きく歩き回り、固定のカメラに収まらない作業。手元が部品や治具に隠れて見えない作業。月に測る工程が数本で、手で測っても足りる場合。撮影の目的を作業者に説明できず、合意が得られない場合。なお、標準時間を改定するかどうか、作業のやり方を変えるかどうかの判断と、作業者個人の評価は、この構成では代替できません。
07最小構成で試す方法
- 手で測ったことのある工程を1つ選び、その工程の30分の動画と、当時の手の測定の表を用意する
- 作業台の最初のコマの画像に、部品箱・治具・ドライバー置き場・完成品置き場の四角形を描く
- MediaPipe の Hand Landmarker の公式のサンプルを使い、動画から両手の人差し指の先の座標をコマごとに書き出す
- 座標が四角形に入った・出た時刻を表にし、区切りの決まりで要素作業の時間を出す
- 手で測った当時の表と、サイクルごとに比べる
この段階では、生成AIも定時実行も使いません。 確かめたいのは、手の位置で区切った時間が、人が区切った時間と合うかどうかです。
| 出てきた内容 | 判断 |
|---|---|
| 要素作業の時間が、手の測定とほぼ合う | 全工程の領域の表を作る段階に進む |
| 特定の要素作業だけずれる | 区切りの決まりの書き方で直る。構成は有効 |
| 手が見えないコマが多く、区切れない | カメラの位置が先。 画像認識の問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、斜め上からの撮影では手が部品に隠れることが分かったということです。真上から撮り直して、同じ比較をしてください。
比べるときは、サイクルの平均だけでなく、サイクルごとの差も見てください。 平均が合っていても、ある区切りが毎回0.5秒早く、別の区切りが0.5秒遅いなら、区切りの決まりのどこかが現場とずれています。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 片手しか検出されない | num_hands の既定は1。2に変える |
| 時刻がずれて要素作業の時間が合わない | VIDEO のモードではコマの時刻をミリ秒で渡す。コマの速さを動画から読む |
| 領域の縁で入った・出たが細かく繰り返す | 前後数コマの中央値で整え、0.1秒未満の滞在を捨てる |
| 箱の縁をかすめただけで「入った」になる | 指先と手首の両方が入ったときを「入った」とする |
| 手が隠れたコマを埋めて区切ってしまう | 埋めずに「見えない」とし、確認の対象にする |
| 部品の補充のサイクルで平均が伸びる | 標準時間の3倍を超えるサイクルを外す |
| カメラが動いて領域がずれる | 固定の金具で留め、最初と最後のコマで位置を比べる |
| 所見の数字が表と違う | 生成AIに計算させない。受け取り後に数字を照らす |
| 作業者が撮影を嫌がる | 目的と使い方を先に説明する。個人の評価に使わない |
| 右手と左手の判別が入れ替わる | 手首の位置の飛びで入れ替わりを検知して直し、直したコマ数を残す |
| 区切りの決まりを変えたら前回と比べられない | 座標を残し、前回分も新しい決まりで区切り直してから比べる |
上の5行が、画像認識の部分の失敗のほとんどです。 どれも、時間が出ているので動いているように見えます。最初の工程で手の測定と突き合わせる比較を省かないでください。
「作業者が撮影を嫌がる」の行は、使われ続けるかを決めます。 撮影への協力が得られなければ、測れる工程そのものが増えません。下の2行は、測り続けるうちに必ず出てきます。 判別の入れ替わりは両手で持ち替える工程で、決まりの変更は新しい製品の立ち上げのたびに起きます。どちらも、座標を残しておけば後から直せます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 作業者の映った動画、手と体の目印の座標、工程ごとの作業時間。動画は作業者個人を識別できる情報で、慎重に扱う必要があります。
- 撮影の目的を作業者に先に説明する … 測るのは工程の作業の時間で、作業者の評価ではないことを、撮影の前に説明します。労働組合・従業員の代表とも取り決めておきます
- 測った時間を個人の評価に使わない … 動画と時間の表を、人事評価や配置の判断に使わないでください。作業者の氏名を結果の表に残さないのは、このためです
- 動画を社外に出さない … 手と体の位置を取る処理は手元のパソコンで行い、生成AIには数値の表だけを渡します
- 動画の保存の期間を決める … 座標を取り出した後の動画は、区切りの確認と会議が終わるまで残し、期間を過ぎたら消します。区切りのやり直しには座標を使います
- 見られる人を限る … 動画を見られるのは生産技術課の担当者に限ります
- 新人と経験者の差を、新人の評価にしない … 経験の区分で時間を分けるのは、教え方や作業標準書を直す材料にするためです。新人の時間が長いことを、その人の評価として扱わないでください
誤りが起きた場合のリスクは、区切りの誤りで標準時間を誤って改定することと、動画が作業者個人の評価に使われることの2つです。 前者は区切りに自信の無いサイクルを人が確かめることで、後者は取り決めと保存の期間で防ぎます。
10まず何から始めるか
1週目:撮影の目的を説明し、取り決めを作る
作業者と労働組合・従業員の代表に、撮影の目的、動画の扱い、保存の期間、個人の評価に使わないことを説明し、文書にします。
2週目:1工程で試す
手で測ったことのある工程の動画で、手の座標を書き出し、手の測定と比べます。真上から撮った動画と斜め上から撮った動画の両方を試し、手が見えないコマの割合を比べます。
3週目:区切りの決まりの書き方を決める
作業標準書の要素作業にそろえて、領域と区切りの決まりの表の書き方を課内で決めます。最初の5工程の表を作ります。
4週目:時間の計算と標準時間との比較をつなぐ
5工程で、要素作業の時間と標準時間との比較を自動で出すところまで作ります。この時点では候補の印を付けず、区切りの正しさだけを見ます。
2か月目: 区切りに自信が無いサイクルの印とムダの候補の印を足し、所見の下書きを付けます。3か月目以降: 領域の表を全工程に広げ、1本180分が何分になったかを実測します。全120工程が3か月に1回以上測られるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Hand Landmarker に IMAGE・VIDEO・LIVE_STREAM の実行モードがあり、VIDEO では detect_for_video にコマの時刻を渡すこと。num_hands の既定が1、検出・存在・追跡の信頼度の既定が0.5であること。手ごとに21点の目印を返し、x・y が [0.0, 1.0] に正規化され、z が奥行きであること。右手・左手の判別とメートル単位の実世界の座標も返すこと。動画のコマの読み込みに OpenCV などの外部のライブラリを使う手順が示されていること | Google AI Edge: Hand landmarks detection guide for Python | 2026-10-07 |
Pose Landmarker が1人あたり33点の目印を返し、正規化された座標とメートル単位の座標(任意で領域のマスク)を出すこと。num_poses の既定が1、信頼度の既定が0.5であること。VIDEO のモードではコマの時刻を渡す必要があること | Google AI Edge: Pose landmark detection guide for Python | 2026-10-07 |
構造化出力で output_config.format に type: "json_schema" を指定できること。数値の範囲(minimum/maximum)や文字数の制約が使えず、additionalProperties は false にする必要があること | Claude Docs: Structured outputs | 2026-10-07 |
撮影の目的と動画の扱いは、作業者と労働組合・従業員の代表と取り決めてから始めてください。 本記事は製品の公開ドキュメントで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0640)についてのご相談はこちらから。
