現在在網上上傳一張圖片,如果到一定程度就可自動被系統識別為違禁圖片,這些工作肯定是機器做的,我想問的是:這種圖像識別系統的原理是什麼?

既然是機器,我覺得一定有一套它自己的規則,這套規則是到底什麼?


這個靠的是機器學習,人肉標註一些圖去訓練,之後機器就能在一定程度上判斷任意圖是否要禁。至於如何調教機器呢?錯了用小鞭抽機箱嗎?這些,就得問微軟首席鑒黃師 @grapeot 了。


我說一個最簡單的,其實最重要的一步是將圖片看成一個像素的簇。設p_i,j = 000000 (顏色的code),它代表了第i行第j列的像素顏色。不論training data還是testing data都是如此分解,以及儲存。

之後手動弄一堆違禁圖片(工作人員有福了。。。)作為training set,其中可以根據一些具體情況對這些數據做一些feature selection或者改變數據結構的操作。Classifer可以選擇NB,SVM, Decision Tree等。。。等待模型建成後,新圖片就可以直接用它來測試了


應該是模式識別、機器學習、計算機視覺領域的東西。

道理上可以這樣理解,違禁圖片作為一類圖片,是有區別與其他圖片的特徵的,人發現這些特徵,並讓計算機能夠識別這種特徵,從而讓計算機代替人去區分這些圖片。就好比讓警犬訓練時聞爆炸物的氣味,真正實戰的時候警犬就可以區別出一件物品是否是爆炸物。

簡單的說,是利用已知的訓練集訓練出分類器,然後利用分類器對輸入的圖片進行分類,分類器可以給出屬於某類的概率,從而判定輸入圖片是那一類,分類器有利用貝葉斯定理的貝葉斯分類器,支持向量機等等;

不同的分類器有不同的訓練過程,一般的話,都會有特徵提取,簡單的說,就是提取一些可以有助於分類的特徵,例如,判定一個人是男是女,就可以提取例如體重、身高、三圍等等特徵;

對於圖片,可以理解為一個大型的矩陣,通過一些變換、降維等等操作,提取它的特徵。

現在應用已經很廣泛了,例如人臉識別、指紋識別等等,都是利用了這些原理。


這個學術上叫作 Pattern Recognition,模式識別,可以用這兩個關鍵詞找找相關的信息。


現在用的演算法不清楚,我國自主創新、全國重點推廣、覆蓋所有中小學電腦的傳奇軟體綠霸曾經用的辦法是計算圖片中肉色的區域大小,超過標準的一律屏蔽。


微軟牛津計劃,Oxford project有開放API。

其中就有識別圖像是否涉黃的。這個是應用,關於原理,大概就是機器學習,先熟悉涉黃圖片的一些規律,比如像素分布、色彩等。

參見:http://www.cnblogs.com/xiaozhi_5638/p/5422498.html

API使用


這個問題其實很基礎,如果較系統地學習過machine learning和data mining就很容易理解,這裡面也涉及一些線性代數如特徵值分解的基礎知識。我在另一個提問里舉了個詳細的例子回答,請看:如何把數據挖掘演算法落實到業務中去? - 鐵褥的回答

---------------------------------------------

pca你可以提取出成百上千張圖片的前k個主成分或特徵矢量,本質上是高維數據降維的過程,降維之後幹嘛呢,你就能過濾掉次要的信息,從而減少運算量和存儲空間來方便做一些後續的運算,比如算各張圖片在低維空間彼此的距離,或數據集的皮爾森相關係數,然後給一張新圖片就能predict新圖片的categories了. 這個過程可以用clustering或classification,不然你直接用高維數據在單機上去算基本是算不動的。當然pca還有個作用是除噪。同理,把圖片矢量想像成你的客戶的一系列指標的矢量,你並不知道哪些指標的影響更主要,哪些指標需要公司投入更多精力去專註,這個時候就用pca來降維取主成分,然後再clustering或classification, 算相關係數等等。

這裡多提一點,你的問題是鑒別圖像實際上就是classification問題,training data set的圖片都有label可以識別是否為違禁圖片,比如你可以用logistic regression, 或者KNN, 或者有答主回答的SVM等等,方法很多,但是重要的一點是如何降低overfitting,可以用cross validation或者Lp norm regularization (e.g. ridge, LASSO),具體的參數和驗證還是需要case by case地調試的。最終選擇optimal的模型作為圖片識別輸出相應判斷的response就是自動識別的結果了。

我用過ImageNet database做過類似的classification項目,基本原理是相通的。

-----------------------------------------

突然想到多層(三層以上)的Neural Network做這個問題的合理性,關鍵還是overfitting的問題,像NN這種非線性程度高的模型overfitting是很難避免的,出來的結果也多半是overfitting的,所以在分類問題上不見得就比weaker learner好。有時間的話我會兩個都試試,比較一下。

-----------------------------------------

如果要進一步提高識別率的話就需要用到局部圖像的識別了,比如線條,邊緣,形狀等等,人臉識別大致就是這個原理。或者用eigenfaces.


這個首先是基於大數據的積累下,還要用到一些類似雲計算的東西(好高大上是不是)

在對圖片的特徵識別上,我比較了解的是網易旗下的易盾。它專門研發了一套圖片特徵提取演算法,支持圖片旋轉、編輯、裁剪等的識別,穩定性較好,匹配性能高。同時易盾還針對色情等圖片的特徵研發了人體膚色識別,人體特徵部位識別,人體姿勢識別等特徵檢測系統。如果是類似的圖片肯定一下就能檢測出來了


feature extraction

這個學期有個課的research project,有人做的是給定貓和狗的圖片,然後識別它是貓還是狗。基本上就是基於特徵判斷。

比如說:貓有長鬍須,狗的耳朵間夾角比貓小,貓的嘴巴有三瓣,狗的舌頭比貓長

每個特徵描述都可以在圖像上處理並找到(具體怎麼找,我也不確定,沒有深入研究過),然後給每個特徵不同的加權分,最後得出結論這個圖片更像貓還是像狗。

大致就是這樣了,至於更細節的,等專業人士回答吧…


先用特徵提取演算法提取出違禁圖片以及正常圖片的特徵(顏色,紋理等)並組成特徵向量,這個過程其實就是將圖片以數字的形式表達出來。隨後將正常以及違禁圖片的特徵向量輸給分類器(人工神經網路,支持向量機等)以訓練分類器。訓練過後,這些分類器可以得出特徵向量里各類特徵在決定一副圖像是否為違禁圖片起多大的作用,本質上就是學習判別方法。在分類器工作階段,它們根據學習到的判別方法區分出正常圖片和違禁圖片。


這是人家的商業機密,怎麼會隨便告訴你?


http://www.qcloud.com/event/pd


問得太基礎。估計是對計算機科學沒有了解多深的朋友。


推薦閱讀:

中國的算命能不能算是模式識別?特徵是生辰八字,輸出是特定的命運?
如何向外行人解釋模式識別和機器學習中的 Generalization 機制?
有沒有值得推薦的隨機森林 Random Forest教材?
EM演算法怎麼用在聚類上?
機器視覺需要學習哪些數學知識?

TAG:模式識別 | 計算機圖形學 | 演算法設計 |