
前言
最近不少小伙伴反映上傳小黃圖偶爾性的例外,并且不能上傳動態圖片,很是苦惱!無她,鑒黃API還沒有這么智能,畢竟是自己訓練的,不是那么專業!為了更好的服務廣大網友,擼主決定接入更加智能快速的鑒黃服務,
UCloud
UCloud內容審核產品,基于海量訓練資料,結合深度學習識別技術,基于UCloud底層云服務,提供99.9%的服務穩定性保障,能夠精準識別圖片、視頻中的低俗內容,適用于各類用戶的鑒黃審核需求,幫助您在業務層面降低違規風險,同時應用演算法服務,也大大減輕了人工審核的投入成本,
最主要的是,鑒黃識別服務在2020年6月30日前,均免費試用,即使到期以后,小伙伴們也不用太擔心,鑒黃識別服務定價采取階梯定價方式,每日2000張免費呼叫額度,剩余部分不累積,日2000張,爾等也只有仰望的份了,
申請
地址:www.ucloud.cn/site/product/uaicensor.html
- 創建UAI Censor AI內容審核應用
- 獲取賬戶公私鑰,鑒黃必備
總之很簡單,都是中文檔案,三五分鐘就可以搞定的事情,
代碼案例
比較扯淡的是官方只提供了Python 和 PHP 版本的生成簽名代碼,難道我大Java不是宇宙第一語言?于是趁著夜深人靜只能自己擼一把了!
application.properties 引入以下配置
# ===================================
# UCloud鑒黃
# ===================================
ucloud.yellow.flag = true
ucloud.publicKey = **********
ucloud.privateKey = **********
ucloud.resourceId= **********
ucloud.url= http://api.uai.ucloud.cn/v1/image/scan
鑒黃工具類:
/**
* ucloud 鑒黃
* @param imageUrl
* @return
* 回傳值
* RetCode 0 標識正常 其余一律例外
* Suggestion 建議, pass-放行, forbid-封禁, check-人工審核
*/
public String check(String imageUrl) {
try {
//圖片絕對路徑
imageUrl = toolsUrl + imageUrl;
RestTemplate rest = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
/**
* 生成signature,首字母排序
*/
String timestamp = System.currentTimeMillis()+"";
SortedMap<Object, Object> packageParams = new TreeMap<>();
packageParams.put("PublicKey", publicKey);
packageParams.put("ResourceId", resourceId);
packageParams.put("Timestamp", timestamp);
packageParams.put("Url", imageUrl);
String signature = UCloudUtil.createSign(packageParams,privateKey);
/**
* 引數
*/
MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
param.add("Scenes", "porn");
param.add("Method", "url");
param.add("Url", imageUrl);
/**
* headers 引數
*/
headers.setContentType(MediaType.parseMediaType("multipart/form-data; charset=UTF-8"));
headers.set("PublicKey", publicKey);
headers.set("Signature",signature);
headers.set("ResourceId",resourceId);
headers.set("Timestamp", timestamp);
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(param, headers);
ResponseEntity<String> responseEntity = rest.exchange(ucloudUrl, HttpMethod.POST, httpEntity, String.class);
return responseEntity.getBody();
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
生成Signature簽名演算法流程包括四步:
- 將請求引數按照名進行升序排列;
- 構造被簽名引數串;
- 計算簽名;
- 使用簽名組合HTTP請求,
代碼案例:
/**
* 生成簽名
*/
public class UCloudUtil {
/**
* sign簽名
*/
public static String createSign(SortedMap<Object, Object> packageParams,
String privateKey) throws Exception {
StringBuffer sb = new StringBuffer();
Set es = packageParams.entrySet();
Iterator it = es.iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
String v = (String)entry.getValue();
sb.append(k + v);
}
sb.append(privateKey);
String sign = shaEncode(sb.toString());
return sign;
}
public static String shaEncode(String inStr) throws Exception {
MessageDigest sha = null;
try {
sha = MessageDigest.getInstance("SHA");
} catch (Exception e) {
System.out.println(e.toString());
e.printStackTrace();
return "";
}
byte[] byteArray = inStr.getBytes("UTF-8");
byte[] md5Bytes = sha.digest(byteArray);
StringBuffer hexValue = https://www.cnblogs.com/smallSevens/p/new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++) {
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16) {
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
}
回傳結果:
{
"RetCode": 0,
"Message": "",
"Timestamp": 1574821854,
"Status": "Success",
"StartTime": 1574821852685,
"EndTime": 1574821854,
"Result": {
"Porn": {
"Suggestion": "pass",
"Score": 0.00187
},
"Politician": {
"Suggestion": "",
"Score": 0
},
"Terror": {
"Suggestion": "",
"Score": 0
}
}
}
擼主只需要關心RetCode和Porn這兩個引數就可以了,RetCode 為0說明API呼叫正常,Porn中的引數Suggestion為pass說明通過,
小結
只有殼的小黃圖是沒有靈魂的,希望各位網友,發揚艱苦奮斗的精神,把有限的靈魂注入到無限的小黃圖中!這樣,擼主才有動力升級更多有趣的功能,
此次升級優化了手機端顯示的問題,使其更加耐看,接入新的鑒黃服務,和自建鑒黃一起使用雙重保駕護航,同時小伙伴們可以自由的上傳喜歡的動圖了,
參考
https://www.cloudbed.vip
https://docs.ucloud.cn/ai/uai-censor/access/key
https://docs.ucloud.cn/ai/uai-censor/api/censor/image
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/60212.html
標籤:其他
上一篇:機器學習——支持向量機(SVM)
