1. 程式人生 > 實用技巧 >影象註釋,AI比人類更精確?微軟新演算法重新整理影象註釋基準測試紀錄-1

影象註釋,AI比人類更精確?微軟新演算法重新整理影象註釋基準測試紀錄-1


今年 9 月,微軟在一篇論文中描述了一種新的圖片註釋演算法。微軟表示,其開發的新演算法在某些特定的測試中,精確度超過了人類。
目前,該 AI 系統已被用於更新微軟為視障人士設計的助手應用程式“Seeing AI”,並將很快被整合到 Word、Outlook 和 PowerPoint 等微軟其他產品中。屆時,它將用於為影象建立替代文字(alt-text)之類的任務。這個功能對於提高可訪問性特別重要。
圖|開發人員 Florian beijingers 正在使用“Seeing AI”,微軟圖片註釋演算法將被用於改進該類應用。(來源: 微軟 / Maurice Jager)
微軟人工智慧團隊的軟體工程經理 Saqib Shaikh 在一份新聞宣告中說:“理想情況下,所有人都應該為檔案、網路和社交媒體中的圖片新增替代文字,只有這樣,才能使盲人能夠理解具體內容並參與對話。但是,現在人們並沒有做到這一點。所以,我們迫切需要一些應用程式來為圖片新增替代文字。”


新演算法效能是之前的兩倍
這些應用程式包括微軟在 2017 年首次釋出的 Seeing AI。它使用計算機視覺技術,通過智慧手機攝像頭為視障人士描述世界。它不僅能識別家用物品、描述場景,還能掃描文字或幫助閱讀,甚至能識別朋友。它還可以用於描述其他應用程式中的圖片,例如電子郵件、社交媒體等。
微軟沒有透露使用 Seeing AI 的使用者數量,但 Azure AI 公司副總裁埃裡克 · 博伊德(Eric Boyd)在採訪中表示,這款軟體是“為盲人或弱視人士提供的先進應用之一”。Seeing AI 已經連續三年被盲人和弱視人士 iOS 使用者社群 AppleVis 評為最佳輔助應用。
微軟的新影象註釋演算法將顯著提高 Seeing AI 的效能,因為它不僅能夠識別物體,還能更精確地描述它們之間的關係。因此,演算法可以在處理圖片時,不僅知道其中包含哪些物品和物件(例如,一個人,一把椅子,一個手風琴”),還能知道它們是如何互動的(例如,“一個人坐在椅子上彈奏手風琴”)。微軟表示,該演算法效能比 2015 年開始使用的上一代演算法好兩倍。

微軟團隊在在 9 月份發表的一篇預印本論文中對該演算法進行了描述,它在一項名為 “nocaps” 的影象註釋基準測試中獲得了有史以來的最高分數。“nocaps”是業內領先的圖片註釋測試,當然,它有自己的限制條件。
nocaps 基準測試由超過 16600 條人工生成的圖片註釋組成,這些註釋描述了來自開放影象資料庫的大約 15100 張圖片。這些圖片涵蓋了一系列場景,從運動到度假,再到美食攝影等等。
研究人員測試了該演算法為這些圖片建立註釋的能力,並與人工生成的圖片註釋做了對比。

但是,需要注意的是,此次 nocaps 基準測試只涉及了複雜影象註釋一般任務中的一小部分圖片。微軟在一份新聞稿中聲稱,它的新演算法“能像人一樣描述圖片”,事實上,只有在處理 nocaps 中一小部分圖片時,它才達到了這些效果。

“效能在 nocaps 上超越人類,並不意味著影象註釋難題已經解決了”
正如 nocaps 基準測試的建立者之一 Harsh Agrawal 說的那樣:“該演算法效能在 nocaps 上超越人類,並不意味著圖片註釋難題已經解決。”Argawal 指出,在 nocaps 上測試效能的指標“僅與人類大致相關”,而基準測試本身“僅涵蓋所有視覺化概念的一小部分”。
Argawal 認為,與大多數基準測試一樣,nocaps 基準只能表示演算法在任務中的效能的一個粗略指標,在 nocaps 上有超越人類的表現,並不意味著 AI 系統在影象理解上超越人類。
誇大 AI 的能力是現階段科技公司的一個常見問題,因為在特定基準上的效能不足以推斷出在更普遍的基礎任務上的效能。事實上,微軟在過去也曾因對其演算法理解文字的能力做出類似宣告而受到研究人員的批評。
不過,近年來,由於人工智慧的出現,圖片註釋的任務已經有了巨大的改進,微軟的演算法無疑是最先進的。除了被整合到 Word、Outlook 和 PowerPoint 中,這款配有圖片註釋的人工智慧還將通過微軟的雲端計算和人工智慧平臺 Azure 作為獨立模型提供。

道翰天瓊CiGril機器人API

道翰天瓊CiGril認知智慧機器人API使用者需要按步驟獲取基本資訊:

  1. 在平臺註冊賬號
  2. 登入平臺,進入後臺管理頁面,建立應用,然後檢視應用,檢視應用相關資訊。
  3. 在應用資訊頁面,找到appid,appkey祕鑰等資訊,然後寫介面程式碼接入機器人應用。

開始接入

請求地址:http://www.weilaitec.com/cigirlrobot.cgr

請求方式:post

請求引數:

引數

型別

預設值

描述

userid

String

平臺註冊賬號

appid

String

平臺建立的應用id

key

String

平臺應用生成的祕鑰

msg

String

""

使用者端訊息內容

介面連線示例:http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552

注意事項:引數名稱都要小寫,五個引數不能遺漏,引數名稱都要寫對,且各個引數的值不能為空字串。否則無法請求成功。userid,appid,key三個引數要到平臺註冊登入建立應用之後,然後檢視應用詳情就可以看到。userid就是平臺註冊賬號。

示例程式碼JAVA:


import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class apitest {

/**
* Get請求,獲得返回資料
* @param urlStr
* @return
*/
private static String opUrl(String urlStr)
{
URL url = null;
HttpURLConnection conn = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try
{
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(5 * 10000);
conn.setConnectTimeout(5 * 10000);
conn.setRequestMethod("POST");
if (conn.getResponseCode() == 200)
{
is = conn.getInputStream();
baos = new ByteArrayOutputStream();
int len = -1;
byte[] buf = new byte[128];

while ((len = is.read(buf)) != -1)
{
baos.write(buf, 0, len);
}
baos.flush();
String result = baos.toString();
return result;
} else
{
throw new Exception("伺服器連線錯誤!");
}

} catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (is != null)
is.close();
} catch (IOException e)
{
e.printStackTrace();
}

try
{
if (baos != null)
baos.close();
} catch (IOException e)
{
e.printStackTrace();
}
conn.disconnect();
}
return "";
}


public static void main(String args []){
//msg引數就是傳輸過去的對話內容。
System.out.println(opUrl("http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552"));

}
}