AI時代的網站與手機App建置與開發Part34 - 使用Azure Content Safety實作影片審查
l 摘要
在上一回的文章中, 我們為大家介紹了支援Microsoft Azure雲端解析影片內容的Azure Video Indexer服務(AI時代的網站與手機App建置與開發Part33 - 使用Azure
Video Indexer探索影片內容), 在這一篇文章中, 我們將要整合Azure內容安全服務, 搭配Azure Video Indexer影片內容解析服務實作影片內容審查功能.
l 認識Azure Content Safety內容安全服務
Microsoft Azure
Content Safety內容安全服務支援審查公開發表的內容, 例如審查欲發表的文字, 圖片, 和影片, 審查欲發表的內容是否違反內容發表的規範, 約束使用者發表符合規範的文字, 圖片, 和影片的內容. 因為使用者可能於一天的任何時間發表內容, 如果使用人工進行內容審查, 將會是一個高成本, 甚至是無法負荷的任務.
企業能夠利用Azure Content Safety內容安全服務偵測可能具冒犯性或不應出現的內容, 屏蔽可能具冒犯性或不恰當的內容, 以保障文字, 圖片, 和影片的內容安全.
企業可以將Azure Content Safety內容安全服務應用在以下的場合:
1.
評論網(例如美食評論網, Google Review)的發佈評論審核
2.
圖片分享網站(例如Instagram)的圖片發佈審核
3.
社群網站(例如Facebook, 己更名為Meta)的內容發佈審核
4.
影音分享網站(例如YouTube)的影音發佈審核
5.
企業網站的員工交流園地的發言審核
6.
論壇 / 討論區 / 粉絲團的發言審核
7.
購物網站的商品討論群組的發言 / 開箱審核
8.
場域管理(例如幼兒園, 校園, 安養中心, 長照中心, 健身房場館, …)的監視影片審核
l Azure Content Safety服務支援審核的文字, 圖片, 和影片格式
圖片內容審查限制:
ü 欲審查的圖片大小必須介於50x50~7200x7200 pixel之間
ü 欲審查的最大圖片大小為4MB
ü 欲審查的圖片格式必須是 : gif, jpg/jpeg, png, bmp,
tiff, WEBP
文字內容審查限制:
ü 支援審查的最長文字長度為1024字元
ü 支援審查的文字格式 : HTML(text/html), XML(text/xml),
Markdown(text/markdown), 純文字(text/plain)
影片內容審查限制:
ü 因為Azure Content Safety內容安全服務必須依賴Azure Video Indexer進行, 所以影片內容審查限制請參考Azure Content Safety內容安全服務的影片格式支援(請參考:AI時代的網站與手機App建置與開發Part33 - 使用Azure
Video Indexer探索影片內容)
l Azure Content Safety內容安全服務審核的四大目標:
Azure Content
Safety內容安全服務能夠審核文字, 圖片, 和影片是否內含以下四種內容:
1. Hate : 仇恨
2. SelfHarm : 自殘(自我傷害)
3. Sexual : 性
4. Violence : 暴力
而且給予審核結果嚴重程度分數, 一共分為4級:
0 : 無害(偵測不到危險的內容)
1 : 輕微(可能可以接受, 視場合而定)
2 : 中度(具冒犯或危險內容, 需要屏蔽或人工審查)
3 : 嚴重(具嚴重傷害性, 需要屏蔽的內容)
l 使用Azure Content Safety內容安全服務搭配Azure Video Indexer進行影片內容審查:
首先請參考上一篇文章(請參考:AI時代的網站與手機App建置與開發Part33 - 使用Azure
Video Indexer探索影片內容)上傳欲審查的影片. 完成影片上傳後, 等待影片解析完成, 您就可以點選Azure Video Indexer Developer
Portal(網址: https://api-portal.videoindexer.ai)的[Go to the web portal]連結, 看到上傳的影片, 如圖1所示:
圖1的左方顯示的就是影片解析的結果.
l 實作影片內容審查
請參考AI時代的網站與手機App建置與開發Part33 - 使用Azure
Video Indexer探索影片內容這篇文章的範例程式, 修改: debugVideoStatus函式, 讀取影片解析到的文件內容, 修改妥的debugVideoStatus函式如下:
// 判斷影片是否分析完成, 並顯示分析完成的影片的分析結果(見解)
async function debugVideoStatus(accessToken) {
try {
// 取得己上傳至Azure Video Indexer的所有影片
const
videos = await listVideos(accessToken);
if
(videos.length === 0) { // 如果查無影片
console.log('No
videos found');
return;
}
else {
// 查詢影片的編號與狀態
videos.forEach(async
(video, index)=>{
console.log(`Found video: ID
"${video.id}",
State:
${video.state}`);
//如果狀態為Processed(己分析完成),則顯示分析結果
if
(video.state=="Processed") {
const
insightsUrl = `${API_URL}/${LOCATION}/Accounts/
${ACCOUNT_ID}/Videos/${video.id}/Index?accessToken=
${accessToken}`;
const insightsRes = await fetch(
insightsUrl,
{ method: 'GET' });
const insights = await insightsRes.json();
var topics=insights['summarizedInsights']['topics'];
topics.forEach((value, index)=>{
//console.log(value.name);
moderateText(value.name, index); // 審核影片中的文字
});
}
});
}
} catch (err) {
console.error('error:',
err.message);
}
上述的debugVideoStatus函式會將Azure Video Indexer解析影片得到的文字傳送給名稱為moderateText函式, 由moderateText函式叫用Azure
Content Safety內容安全服務審查影片中的文字是否違反內容安全的要求, 其內容如下:
var endpoint = "Azure Content Safety內容安全服務端點";
var key = "Azure Content Safety內容安全服務金鑰";
async function moderateText(value, index){
var body = { // 準備欲分析的目標
"text": value,
"categories": [
"Hate", "Sexual",
"SelfHarm", "Violence"
],
};
try{
// 執行分析
var response=await fetch(`${endpoint}/contentsafety/
text:analyze?api-version=2024-02-15-preview`,
{
method:"POST",
body: JSON.stringify(body),
headers:{
"Content-Type":
"application/json",
"Ocp-Apim-Subscription-Key": key
}
});
if (response.ok){ // 如果沒有發生錯誤
var data=await response.json();// 取得分析結果
//alert(JSON.stringify(data));
var hateSeverity =
data["categoriesAnalysis"][0]
["severity"];// 讀取仇恨指數
var sexualSeverity =
data["categoriesAnalysis"][1]
["severity"];// 讀取色情指數
var selfHarmSeverity =
data["categoriesAnalysis"][2]
["severity"];// 讀取自殘指數
var violenceSeverity =
data["categoriesAnalysis"][3]
["severity"];// 讀取暴力指數
console.log(`Topic ${index}:仇恨:${hateSeverity},
成人:${sexualSeverity},
自殘:${selfHarmSeverity},
暴力:${violenceSeverity}`); // 顯示審查結果
}
}
catch(err){
alert(err.message);
}
}
執行上述的程式您將會瀏覽器的主控台頁籤看到如圖2的畫面:
圖2: 顯示審查影片內容是否安全的畫面
程式碼範例下載網址: https://github.com/CraigIII/VideoContentSafety.git



留言
張貼留言