AI ガードレールは、動画内の脅威や違反コンテンツを検出するための機能を提供します。対応する検出シナリオには、ポルノの検出、テロ・政治的コンテンツの検出、広告およびテキスト違反の検出、不適切なシーンの検出、ロゴの検出、音声違反の検出が含まれます。本トピックでは、API オペレーションを用いて動画の違反を非同期的に検出する方法について説明します。
非同期ビデオ検出の概要
API オペレーション:/green/video/asyncscan。このオペレーションは、非同期的なビデオ検出を実行するために使用されます。
このオペレーションを呼び出して、非同期ビデオ検出タスクを作成できます。HTTP リクエストの構築方法については、「リクエスト構造」をご参照ください。また、事前に構築済みの HTTP リクエストを使用することも可能です。詳細については、「SDK 概要」をご参照ください。
-
課金情報:
このオペレーションの呼び出しに対して課金されます。課金方法の詳細については、をご参照ください。
複数の検出シナリオを同時に実行した場合、各シナリオの課金額が合算されます。各シナリオの課金額は、検出対象となる動画フレーム数に当該シナリオの単位価格を乗じた金額です。また、音声違反の検出を併用する場合は、別途追加料金が発生します。追加料金は、動画の持続時間に音声違反検出機能の単位価格を乗じた金額です。
-
検出対象:
動画ファイルまたはビデオストリームの違反を検出できます。動画ファイルの場合、動画フレーム画像のシーケンスをアップロードするか、検出用の動画 URL を指定します。
-
応答:
非同期モデレーションリクエストを送信した場合、モデレーション結果はリアルタイムで返却されません。モデレーション結果を取得するには、定期的なポーリングまたはコールバック通知の有効化のいずれかを選択してください。モデレーション結果は最大 1 時間保持されます。
-
コールバックによる検出結果の取得:非同期検出タスクを送信する際に、リクエストに callback パラメーターを含めることで、結果を自動的に受信できます。詳細については、「非同期検出のリクエストパラメーター」をご参照ください。
-
ポーリングによる検出結果の取得:非同期検出タスクを送信する際に、callback パラメーターを含めないでください。タスク送信後に、結果照会オペレーションを呼び出して結果を取得します。詳細については、「非同期ビデオ検出結果の照会オペレーションの説明」をご参照ください。
-
-
動画の要件:
動画の URL は HTTP または HTTPS の URL である必要があります。
動画は AVI、FLV、MP4、MPG、ASF、WMV、MOV、WMA、RMVB、RM、FLASH、または TS 形式である必要があります。
動画のサイズは最大 200 MB までです。
モデレーション対象の動画が 200 MB を超える場合、動画をセグメント分割する必要があります。セグメント分割に関するサポートが必要な場合は、DingTalk グループ(グループ番号:35573806)に参加し、テクニカルサポート担当者にご連絡ください。
ビデオストリームは RTMP、HLS、HTTP-FLV、または RTSP プロトコルを用いて転送する必要があります。
ビデオストリームのモデレーションタスクの持続時間は最大 24 時間です。24 時間を超えた場合、モデレーションタスクは自動的に終了します。
ビデオモデレーションタスクの所要時間は、動画のダウンロード時間に依存します。モデレーション対象の動画を保存する際には、安定性と信頼性の高いストレージサービスをご利用ください。Object Storage Service (OSS) のご利用を推奨します。
|
シナリオ |
説明 |
検出結果のカテゴリ |
|
ポルノ検出 |
動画内のポルノコンテンツを検出します。 |
正常、ポルノ |
|
動画内の暴力、テロ、政治関連コンテンツ |
動画内のテロおよび政治関連コンテンツを検出します。 |
正常、テロおよび政治関連コンテンツ |
|
不適切な動画コンテンツ |
動画内の不適切なシーンを検出します。 |
正常、不適切なシーン (ブラックスクリーンやホワイトスクリーンなど) |
|
動画ロゴ |
動画内の特定のロゴを検出します。 |
正常、ロゴ |
|
動画、画像、テキストにおける違反 |
動画内の広告またはコンプライアンス違反のテキストを検出します。 |
正常、広告またはテキスト違反 |
|
動画および音声コンテンツの違反 説明
このシナリオは、非同期動画検出操作でのみサポートされています。この機能を使用するには、「非同期検出」をご参照ください。 |
動画の音声に含まれるコンプライアンス違反の情報を検出します。 説明
デフォルトでサポートされている言語は中国語です。英語コンテンツの検出をご希望の場合は、アカウントマネージャーにご連絡ください。 |
正常、スパム、広告、政治、テロ、罵倒、ポルノ、スパム投稿、禁制品、カスタム (カスタムキーワードのヒットなど) |
QPS 制限
このオペレーションは、アカウントあたり 1 秒間に最大 50 回まで呼び出すことができます。同時に処理可能なモデレーションタスクは最大 20 件です。同時実行タスク数を増加させる必要がある場合は、営業担当者までご相談ください。1 秒あたりの呼び出し回数が制限を超えると、速度制限が適用され、業務に影響を及ぼす可能性があります。このオペレーションを呼び出す際には、制限値を十分にご確認ください。
リアルタイムでのデータモデレーションを必要としない場合は、オフラインモデレーションを有効化することを推奨します。オフラインモデレーションモードでは、タスク送信後 24 時間以内にモデレーション処理が開始されます。
非同期検出のリクエストパラメーター
|
名前 |
型 |
必須 |
サンプル値 |
説明 |
|
bizType |
String |
いいえ |
default |
ビジネス シナリオ。ビジネス シナリオは、で作成できます。 Content Moderation コンソール。詳細については、「機械審査のポリシーをカスタマイズする」をご参照ください。 |
|
live |
Boolean |
いいえ |
false |
ストリームがライブ配信かどうかを指定します。
|
|
offline |
Boolean |
いいえ |
false |
オフラインモデレーションモードを有効化するかどうかを指定します。
説明
このパラメーターは、動画ファイル検出にのみ適用されます。ビデオストリーム検出には不要です。 |
|
scenes |
StringArray |
はい |
["porn"] |
動画検出シナリオ。有効な値は以下のとおりです。
|
|
audioScenes |
StringArray |
いいえ |
["antispam"] |
動画音声検出シナリオ。有効な値は antispam(音声スパム防止)のみです。 このパラメーターを渡さない場合、動画画像のみが検出されます。このパラメーターを渡す場合、動画の音声も検出されます。 説明
動画の音声を検出するには、frames パラメーターを task に渡して動画フレームのシーケンスを送信することはできません。代わりに、url パラメーターを task に渡して、動画またはビデオストリームの URL を指定する必要があります。 |
|
callback |
String |
いいえ |
http://www.aliyundoc.com |
非同期モデレーション結果を通知するコールバック URL。HTTP および HTTPS の URL がサポートされます。このパラメーターを設定しない場合、モデレーション結果を定期的にポーリングする必要があります。 モデレーションリクエストで callback パラメーターを設定する場合、指定された HTTP または HTTPS URL は、以下の要件を満たしている必要があります:POST メソッドをサポート、送信データを UTF-8 でエンコード、checksum および content パラメーターをサポートすることです。指定されたコールバック URL にモデレーション結果を送信するため、Content Moderation はコールバック通知に基づき、以下のルールおよびフォーマットで checksum および content パラメーターを返却します。
説明 サーバーがコールバック通知を正常に受信した場合、HTTP ステータスコード 200 を Content Moderation に送信します。サーバーがコールバック通知を受信できなかった場合、他の HTTP ステータスコードを送信します。コールバック通知の受信に失敗した場合、Content Moderation はサーバーが通知を受信するまで、再度通知を送信し続けます。最大 16 回まで再送信が行われ、16 回を超えた場合は通知の送信を停止します。この場合、コールバック URL の状態をご確認ください。 |
|
seed |
String |
いいえ |
abc**** |
コールバック通知リクエストの署名生成に使用されるランダム文字列。 文字列の長さは最大 64 文字で、英字、数字、アンダースコア(_)を含むことができます。この文字列は任意にカスタマイズ可能であり、Content Moderation がコールバック通知をサーバーにプッシュする際に、通知リクエストの検証に使用されます。 説明 callback パラメーターを設定する場合は、このパラメーターが必須です。 |
|
cryptType
|
String
|
いいえ
|
SHA256
|
コールバック通知内容の暗号化に使用される暗号化アルゴリズム。AI ガードレールは、指定された暗号化アルゴリズムを用いて返却文字列を暗号化し、暗号化された文字列をコールバック URL に送信します。返却文字列は
UID + Seed + Content 形式です。有効な値は以下のとおりです:
|
|
tasks |
JSONArray |
はい |
検出対象。JSON 配列の各要素は検出タスクの構造体です。配列には最大 100 個の要素を含めることができ、つまり一度に最大 100 件のコンテンツを検出できます。100 個の要素を送信するには、同時実行タスク数の上限を 100 以上に引き上げる必要があります。各要素の構造体の詳細については、「task」をご参照ください。 |
|
名前 |
型 |
必須 |
サンプル値 |
説明 |
|
clientInfo |
JSONObject |
いいえ |
{"userId":"12023****","userNick":"Mike","userType":"others"} |
クライアントに関する情報。詳細については、「共通パラメーター」の「共通リクエストパラメーター」セクションをご参照ください。 サーバーは、グローバルな clientInfo パラメーターを使用するか、本表で説明されている clientInfo パラメーターを使用するかを判断します。 説明 本表の clientInfo パラメーターは、グローバルなパラメーターよりも優先されます。 |
|
dataId |
String |
いいえ |
videoId**** |
モデレーション対象の ID。 ID には英字、数字、アンダースコア(_)、ハイフン(-)、ピリオド(.)を含めることができ、最大 128 文字までです。この ID はお客様のビジネスデータを一意に識別します。 |
|
liveId |
String |
いいえ |
liveId**** |
ビデオライブストリームの ID。 このパラメーターは、重複するビデオライブストリームタスクを除外し、重複検出を防止するために使用されます。このパラメーターを渡す場合、AI ガードレールは |
|
url |
String |
いいえ |
http://www.aliyundoc.com/a.flv |
インターネット経由でアクセス可能な HTTP または HTTPS の URL。URL の長さは最大 2,048 文字です。 説明
frames または url のいずれかのパラメーターを必ず指定してください。 url パラメーターを渡す場合、動画 URL 方式で課金されます。 |
|
frames |
JSONArray |
いいえ |
検出対象の動画フレームに関する情報。 frames 配列の各要素は構造体です。各要素の構造体の詳細については、「frame」をご参照ください。 説明
frames または url のいずれかのパラメーターを必ず指定してください。 url パラメーターを渡す場合、動画 URL 方式で課金されます。 |
|
|
framePrefix |
String |
いいえ |
http://www.aliyundoc.com/video/ |
フレーム URL のプレフィックス。これは |
|
interval |
Integer |
いいえ |
1 |
動画フレームをキャプチャする間隔。単位:秒。有効範囲:1~600。デフォルト値:1。 |
|
maxFrames |
Integer |
いいえ |
200 |
検出のために動画からキャプチャできるフレームの最大数。値は 5~3600 の整数である必要があります。デフォルト値は 200 です。上限を引き上げるには、サポートおよびサービス までお問い合わせください。 説明
|
|
名前 |
型 |
必須 |
サンプル |
説明 |
|
url |
String |
いいえ |
http://www.aliyundoc.com/0B860000586C0A0300038A0460000 |
動画フレームの URL。これは |
|
offset |
Integer |
いいえ |
10 |
フレームのタイムスタンプ(動画の開始時刻からの相対位置)。単位:秒。 |
非同期検出の応答データ
|
名前 |
型 |
サンプル |
説明 |
|
taskId |
String |
taskId**** |
検出タスクの ID。 |
|
dataId |
String |
videoId**** |
モデレーション対象の ID。 説明 モデレーションリクエストで dataId パラメーターを設定した場合、dataId リクエストパラメーターの値がここに返却されます。 |
非同期検出の例
リクエストの例
-
動画フレーム画像のシーケンスを送信する
http(s)://[Endpoint]/green/video/asyncscan &<共通リクエストパラメーター> { "scenes": [ "porn" ], "tasks": [ { "dataId": "videoId****", "frames": [ { "offset": 10, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460000" }, { "offset": 20, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460001" }, { "offset": 30, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460002" }, { "offset": 40, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460003" }, { "offset": 50, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460003" }, { "offset": 60, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A046000x" } ] } ] } -
動画ファイルを送信する
http(s)://[Endpoint]/green/video/asyncscan &<共通リクエストパラメーター> { "scenes": [ "porn" ], "audioScenes": [ "antispam" ], "tasks": [ { "dataId": "videoId****", "url": "http://www.aliyundoc.com/a.mp4", "interval": 1, "maxFrames": 200 } ] } -
ライブ動画ストリームを送信する
http(s)://[Endpoint]/green/video/asyncscan &<共通リクエストパラメーター> { "scenes": [ "porn" ], "live": true, "tasks": [ { "dataId": "videoId****", "url": "http://www.aliyundoc.com/a.flv", "interval": 1, "maxFrames": 200 } ] }
成功レスポンスのサンプル
{
"code": 200,
"msg": "OK",
"requestId": "requestID****",
"data": [
{
"dataId": "videoId****",
"taskId": "taskId****"
}
]
}
非同期ビデオ検出結果の照会オペレーションの説明
API オペレーション:/green/video/results。このオペレーションは、非同期ビデオ検出タスクの結果を照会するために使用されます。
HTTP リクエストの構築方法については、「リクエスト構造」をご参照ください。また、事前に構築済みの HTTP リクエストを使用することも可能です。詳細については、「SDK 概要」をご参照ください。
-
課金情報:
このオペレーションは無料です。
-
照会タイムアウト:
非同期モデレーションリクエストを送信してから少なくとも 30 秒経過してからモデレーション結果を照会することを推奨します。Content Moderation はモデレーション結果を最大 4 時間保持します。4 時間経過後、結果は削除されます。
QPS 制限
このオペレーションは、アカウントあたり 1 秒間に最大 50 回まで呼び出すことができます。1 秒あたりの呼び出し回数が制限を超えると、速度制限が適用され、業務に影響を及ぼす可能性があります。このオペレーションを呼び出す際には、制限値を十分にご確認ください。
結果照会のリクエストパラメーター
|
名前 |
型 |
必須 |
サンプル |
説明 |
|
body |
JSONArray |
はい |
["taskId****","taskId****"] |
照会対象の非同期モデレーションタスクの ID のリスト。 配列には最大 100 個の要素を含めることができます。 モデレーションタスクを送信した後、応答からタスクの ID を取得できます。 |
結果照会の応答データ
|
名前 |
型 |
サンプル値 |
説明 |
|
code |
Integer |
200 |
返却される HTTP ステータスコード。 詳細については、「共通エラーコード」をご参照ください。 |
|
msg |
String |
OK |
リクエストに対する返却メッセージ。 |
|
dataId |
String |
videoId**** |
モデレーション対象の ID。 説明 モデレーションリクエストで dataId パラメーターを設定した場合、dataId リクエストパラメーターの値がここに返却されます。 |
|
taskId |
String |
taskId**** |
検出タスクの ID。 |
|
results |
JSONArray |
結果。呼び出しが成功した場合(code=200)、結果には 1 つ以上の要素が含まれます。各要素は構造体です。構造体の詳細については、「result」をご参照ください。 説明
ビデオストリーム検出シナリオでは、ステータスコード 280 は検出が進行中であることを示し、ステータスコード 200 は検出が完了したことを示します。タスクが進行中の場合、検出結果には検出開始時刻から現在時刻までの間に見つかった結果が含まれます。 |
|
|
audioScanResults |
JSONArray |
動画音声検出結果。構造体の詳細については、「audioScanResult」をご参照ください。 |
|
名前 |
タイプ |
例 |
説明 |
|
scene |
String |
porn |
動画検出シナリオ。リクエスト内のシナリオに対応します。有効な値は次のとおりです。
|
|
label |
String |
porn |
動画検出結果の分類。分類は検出シナリオによって異なります。
|
|
sublabel |
String |
porn |
`scenes` パラメーターが `porn` または `terrorism` に設定されている場合、このパラメーターで審査結果のサブカテゴリを返すことができます。 このパラメーターはデフォルトでは返されません。
|
|
suggestion |
String |
block |
推奨される後続操作。有効な値:
|
|
rate |
Float |
99.2 |
信頼度のスコア。有効な値の範囲は 0~100 です。値が大きいほど、信頼度が高いことを示します。 suggestion パラメーターの値として [pass] が返された場合、信頼度が高いほど、コンテンツが正常である確率が高くなります。suggestion パラメーターの値として [review] または [block] が返された場合、信頼度が高いほど、コンテンツに違反が含まれている確率が高くなります。 重要 コンテンツに違反が含まれているかどうかを判断するために、サジェスト、ラベル、およびサブラベルパラメーターに対して返された値を使用することを推奨します。サブラベルパラメーターは、特定の操作によって返されます。 |
|
frames |
JSONArray |
違反を含む動画フレームに関する情報。構造体の詳細については、「frame」をご参照ください。 |
|
|
hintWordsInfo |
JSONArray |
動画に広告またはテキスト違反が含まれている場合、このパラメーターはヒットしたリスクのあるキーワードに関する情報を返します。構造体の詳細については、「hintWordsInfo」をご参照ください。 説明
この結果は、広告・テキスト違反 (ad) シナリオの場合にのみ返されます。 |
|
|
logoData |
JSONArray |
動画にロゴが含まれている場合、このパラメーターは検出されたロゴに関する情報を返します。構造体の詳細については、「logoData」をご参照ください。 説明
この結果は、ロゴ検出 (logo) シナリオの場合にのみ返されます。 |
|
|
sfaceData |
JSONArray |
動画にテロ・政治関連コンテンツが含まれている場合、このパラメーターは検出されたコンテンツに関する情報を返します。構造体の詳細については、「sfaceData」をご参照ください。 説明
この結果は、テロ・政治関連コンテンツ検出 (terrorism) シナリオの場合にのみ返されます。 |
|
名前 |
型 |
サンプル |
説明 |
|
url |
String |
http://www.aliyundoc.com/0B860000586C0A0 |
動画フレームの URL。 |
|
offset |
Integer |
50 |
動画フレームのタイムスタンプ(動画の開始時刻からの相対位置)。単位:秒。 |
|
label |
String |
porn |
動画フレーム検出結果の分類。検出シナリオによって分類が異なります。
|
|
rate |
Float |
99.1 |
信頼度のスコア。有効範囲: 0 ~ 100。信頼度が高いほど、モデレーション結果の信頼性が高くなります。このスコアを業務で使用することは推奨しません。 |
|
名前 |
型 |
サンプル |
説明 |
|
scene |
String |
antispam |
動画音声検出シナリオ。有効な値は antispam(音声スパム防止)のみです。 |
|
label |
String |
customized |
動画音声検出結果の分類。検出シナリオによって分類が異なります。
|
|
suggestion |
String |
block |
推奨される後続操作。有効な値は以下のとおりです。
|
|
rate |
Float |
99.91 |
信頼度のスコア。有効範囲: 0 ~ 100。値が大きいほど信頼度が高くなります。 suggestion パラメーターの値として [pass] が返された場合、信頼度が高いほど、コンテンツが正常である確率が高いことを示します。suggestion パラメーターの値として [review] または [block] が返された場合、信頼度が高いほど、コンテンツに違反が含まれている確率が高いことを示します。 重要 suggestion、label、sublabel パラメーターの返却値を用いて、コンテンツに違反が含まれているかどうかを判断することを推奨します。sublabel パラメーターは特定のオペレーションで返却されます。 |
|
details |
JSONArray |
音声に対応するテキストの詳細(各文が 1 つの要素に対応)。1 つ以上の要素を含みます。構造体の詳細については、「detail」をご参照ください。 |
|
名前 |
型 |
サンプル |
説明 |
|
startTime |
Integer |
24 |
文の開始時刻。単位:秒。 |
|
endTime |
Integer |
60 |
文の終了時刻。単位:秒。 |
|
text |
String |
Computer |
音声をテキストに変換した結果。 |
|
label |
String |
normal |
この音声文の検出結果の分類。有効な値は以下のとおりです。
|
|
keyword |
String |
Enable |
カスタムキーワードへのヒットがあった場合、キーワードが返却されます。 |
|
libName |
String |
Manual |
カスタムキーワードへのヒットがあった場合、キーワードが配置されているライブラリが返却されます。 |
|
名前 |
型 |
サンプル値 |
説明 |
|
type |
String |
TV |
検出されたロゴの種類。値は TV(放送局ロゴ)です。 |
|
name |
String |
***TV |
検出されたロゴの名前。 |
|
x |
Float |
140 |
ロゴ領域の左上隅から y 軸までの距離。原点(0,0)は画像の左上隅です。単位:ピクセル。 |
|
y |
Float |
68 |
ロゴ領域の左上隅から x 軸までの距離。原点(0,0)は画像の左上隅です。単位:ピクセル。 |
|
w |
Float |
106 |
ロゴ領域の幅。単位:ピクセル。 |
|
h |
Float |
106 |
ロゴ領域の高さ。単位:ピクセル。 |
| 名前 | 型 | サンプル | 説明 |
| x | Float | 444 | 顔領域の左上隅から y 軸までの距離。原点(0,0)は画像の左上隅です。 |
| y | Float | 174 | 顔領域の左上隅から x 軸までの距離。原点(0,0)は画像の左上隅です。 |
| w | Float | 467 | 顔領域の幅。 |
| h | Float | 467 | 顔領域の高さ。 |
| smileRate | Float | 0 | 笑顔である確率。 |
| glasses | Boolean | false | 人物が眼鏡をかけているかどうかを示します。 |
| faces | Array | 検出された顔に関する情報。構造体の説明については、以下の「顔」テーブルをご参照ください。 |
|
名前 |
型 |
サンプル |
説明 |
|
name |
String |
xxxx |
類似人物の名前。 |
|
rate |
Float |
97.03 |
類似度スコア。 |
|
id |
String |
AliFace_001**** |
顔 ID。 |
|
名前 |
型 |
サンプル値 |
説明 |
|
context |
String |
xxxx |
ヒットしたカスタムテキストコンテンツ。 |
|
libCode |
String |
69751 |
ヒットしたカスタムテキストコンテンツを含むライブラリのコード。 |
|
libName |
String |
Manual |
ヒットしたカスタムテキストコンテンツを含むライブラリの名前。 |
|
名前 |
型 |
サンプル |
説明 |
|
context |
String |
xxxx |
テキスト内でヒットしたリスクのあるキーワード。 |
結果照会の例
リクエストの例
http(s)://[Endpoint]/green/video/results
&<共通リクエストパラメーター>
[
"taskId****",
"taskId****"
]
成功レスポンスのサンプル
-
動画画像のみを検出する
{ "code": 200, "msg": "OK", "requestId": "requestID****", "data": [ { "code": 200, "msg": "OK", "dataId": "videoId****", "taskId": "taskId****", "results": [ { "label": "porn", "rate": 99.2, "scene": "porn", "suggestion": "block" } ] } ] } -
動画画像と音声の両方を検出する
{ "code": 200, "msg": "OK", "requestId": "requestID****", "data": [ { "code": 200, "msg": "OK", "dataId": "videoId****", "taskId": "taskId****", "results": [ { "label": "porn", "rate": 99.2, "scene": "porn", "suggestion": "block" } ], "audioScanResults": [ { "scene": "antispam", "label": "customized", "suggestion": "block", "rate": 99.91, "details": [ { "startTime": 0, "endTime": 24, "text": "Computer", "label": "customized" }, { "startTime": 24, "endTime": 60, "text": "Computer", "label": "normal" } ] } ] } ] }