㈠ 選擇性搜索演算法 (Selective Search)
計算機視覺領域有幾個基本的任務:
object detection 的基礎是 object recognition,只不過要先將圖片進行分割,對每個分割之後的子圖區域 region (也稱為 patch) 進行 object recognition.
由於事先並不知道物體在圖片的哪個位置,為了避免漏檢,我們應該對圖片中盡量多的 region 進行搜索。理論上野帶態來說,可以有無窮多個 region。這里就需要一種 region proposal 的演算法,以比較高效的方式提出圖片劃分 region 的方式,從而加速整個 object detection 的過程並且提高准確率。
本文將要介紹的 selective search 演算法 ,是比較經典的,也是 R-CNN 中使用的 region proposal 演算法。
參考文獻:
為了避免蠻力搜索,selective search 演算法首先需要一個基於像素的圖像分割。這里用的是 Felzenszwalb and Huttenlocher 演算法 (因為是當時速度最快的演算法,而且是公開的),得到一個 oversegmented 的圖像分割。例如:
這里之所以用 oversegmented 圖像,是為了得到盡可能細分的區域,再以此為基礎逐步合並,形成更大的區域。
image segmentation 可以用作 region proposal 的基礎,每個分割的區域都可以看作一個潛在的頌源 region,但是一個 object 往往包含了多個分割的區域,例如盛有咖啡的杯子,咖啡和杯子應該作為一個整體來看待。因此,還要根據某種相似性原則進行分割區域的合並,得到更大范圍的 region。
Selective search 演算法考慮了 4 種相似性度量,取值都在 [0,1] 之間,越大越相似。
最終的相似性度量是上述四個度量的組合:
其中 取 0 或 1.
總結起來,selective search 的演算法步驟非常簡單:
環境配置:
具體程序:
最後效果行迅如下:
顯示的 100 個 region 已經包含了我們感興趣的待檢測區域,說明了 selective search 演算法的高效。
㈡ 請問什麼是搜索演算法
搜索演算法是利用計算機的高性能來有目的的窮舉一個問題的部分或所有的可能情況,從而求出問題的解
的一種方法。搜索過程實際上是根據初始條件和擴展規則構造一棵解答樹並尋找符合目標狀態的節點的過程。
所有的搜索演算法從其最終的演算法實現上來看,都可以劃分成兩個部分——控制結構和產生系統,而所有的算
法的優化和改進主要都是通過修改其控制結構來完成的。
㈢ 幾種搜索引擎演算法研究
2.1Google和PageRank演算法
搜索引擎Google最初是斯坦福大學的博士研究生Sergey Brin和Lawrence Page實現的一個原型系統[2],現在已經發展成為WWW上最好的搜索引擎之一。Google的體系結構類似於傳統的搜索引擎,它與傳統的搜索引擎最大的不同處在於對網頁進行了基於權威值的排序處理,使最重要的網頁出現在結果的最前面。Google通過PageRank元演算法計算出網頁的PageRank值,從而決定網頁在結果集中的出現位置,PageRank值越高的網頁,在結果中出現的位置越前。
2.1.1PageRank演算法
PageRank演算法基於下面2個前提:
前提1:一個網頁被多次引用,則它可能是很重要的;一個網頁雖然沒有被多次引用,但是被重要的網頁引用,則它也可能是很重要的;一個網頁的重要性被平均的傳遞到它所引用的網頁。這種重要的網頁稱為權威(Authoritive)網頁。
前提2:假定用戶一開始隨機的訪問網頁集合中的一個網頁,以後跟隨網頁的向外鏈接向前瀏覽網頁,不回退瀏覽,瀏覽下一個網頁的概率就是被瀏覽網頁的PageRank值。
㈣ 搜索演算法的主要分類
如演算法名稱那樣,深度優先搜索所遵循的搜索策略是盡可能「深」地搜索樹。它的基本思想是:為了求得問題的解,先選擇某一種可能情況向前(子結點)探索,在探索過程中,一旦發現原來的選擇不符合要求,就回溯至父親結點重新選擇另一結點,繼續向前探索,如此反復進行,直至求得最優解。深度優先搜索的實現方式可以採用遞歸或者棧來實現。
由此可見,把通常問題轉化為樹的問題是至關重要的一步,完成了樹的轉換基本完成了問題求解。
1、優化思想
減少所遍歷的狀態總數
2、三種方法
(1)減少節點數
思想:盡可能減少生成的節點數
(2)定製回溯邊界
思想:定製回溯邊界條件,剪掉不可能得到最優解的子樹
在很多情況下,我們已經找到了一組比較好的解。但是計算機仍然會義無返顧地去搜索比它更「劣」的其他解,搜索到後也只能回溯。為了避免出現這種情況,我們需要靈活地去定製回溯搜索的邊界。
在深度優先搜索的過程當中,往往有很多走不通的「死路」。假如我們把這些「死路」排除在外,不是可以節省很多的時間嗎?打一個比方,前面有一個路徑,別人已經提示:「這是死路,肯定不通」,而你的程序仍然很「執著」地要繼續朝這個方向走,走到頭來才發現,別人的提示是正確的。這樣,浪費了很多的時間。針對這種情況,我們可以把「死路」給標記一下不走,就可以得到更高的搜索效率。
(3)記憶化
思想:運用記憶化的方法,使得一些遍歷過的子樹不要重復遍歷
3、三個原則
(1)正確性:剪去的「枝條」不包含最優答案;
我們知道,剪枝方法之所以能夠優化程序的執行效率,正如前文所述,是因為它能夠「剪去」搜索樹中的一些「枝條」。然而,如果在剪枝的時候,將「長有」我們所需要的解的枝條也剪掉了,那麼,一切優化也就都失去了意義。所以,對剪枝的第一個要求就是正確性,即必須保證不丟失正確的結果,這是剪枝優化的前提。
為了滿足這個原則,我們就應當利用「必要條件」來進行剪枝判斷。也就是說,通過解所必須具備的特徵、必須滿足的條件等方面來考察待判斷的枝條能否被剪枝。這樣,就可以保證所剪掉的枝條一定不是正解所在的枝條。當然,由必要條件的定義,我們知道,沒有被剪枝不意味著一定可以得到正解(否則,也就不必搜索了)。
(2)准確性:在保證第一條原則的情況下,盡可能的剪去更多不包含最優答案的枝條;
在保證了正確性的基礎上,對剪枝判斷的第二個要求就是准確性,即能夠盡可能多的剪去不能通向正解的枝條。剪枝方法只有在具有了較高的准確性的時候,才能真正收到優化的效果。因此,准確性可以說是剪枝優化的生命。
當然,為了提高剪枝判斷的准確性,我們就必須對題目的特點進行全面而細致的分析,力求發現題目的本質,從而設計出優秀的剪枝判斷方案。
(3)高效性:通過剪枝要能夠更快的接近到達最優解。
一般說來,設計好剪枝判斷方法之後,我們對搜索樹的每個枝條都要執行一次判斷操作。然而,由於是利用出解的「必要條件」進行判斷,所以,必然有很多不含正解的枝條沒有被剪枝。這些情況下的剪枝判斷操作,對於程序的效率的提高無疑是具有副作用的。為了盡量減少剪枝判斷的副作用,我們除了要下功夫改善判斷的准確性外,經常還需要提高判斷操作本身的時間效率。
然而這就帶來了一個矛盾:我們為了加強優化的效果,就必須提高剪枝判斷的准確性,因此,常常不得不提高判斷操作的復雜度,也就同時降低了剪枝判斷的時間效率;但是,如果剪枝判斷的時間消耗過多,就有可能減小、甚至完全抵消提高判斷准確性所能帶來的優化效果,這恐怕也是得不償失。很多情況下,能否較好的解決這個矛盾,往往成為搜索演算法優化的關鍵。 類似樹的按層遍歷,其過程為:首先訪問初始點Vi,並將其標記為已訪問過,接著訪問Vi的所有未被訪問過可到達的鄰接點Vi1、Vi2……Vit,並均標記為已訪問過,然後再按照Vi1、Vi2……Vit的次序,訪問每一個頂點的所有未被訪問過的鄰接點,並均標記為已訪問過,依此類推,直到圖中所有和初始點Vi有路徑相通的頂點都被訪問過為止。
處理和優化
對於狀態數很多時,廣度優先搜索可以採用循環隊列或動態鏈表來處理。
主要區別 遍歷方式 深度優先搜索遍歷 廣度優先搜索遍歷 所用數據結構 棧 隊列 一般優化 最優性剪枝
可行性剪枝 Hash判重
雙向搜索
㈤ 百度搜索引擎的演算法是怎樣的
衡量網頁質量的維度
網路搜索引擎在衡量網頁質量時,會從以下三個維度綜合考慮給出一個質量打分。下面會一一介紹這些影響網頁質量判斷的維度特徵:
• 內容質量
• 瀏覽體驗
• 可訪問性
一個訪問流暢,內容質量高且瀏覽體驗好的網頁具有較高的質量;反之,任何一個維度出現問題,都會影響網頁的整體質量。下面我們具體介紹下這三個維度。
衡量網頁質量的維度——內容質量
網頁主體內容是網頁的價值所在,是滿足用戶需求的前提基礎。網路搜索引擎評價網頁內容質量主要看其主體內容的好壞,以及主體內容是否可以讓用戶滿意。 不同類型網頁的主體內容不同,網路搜索引擎判斷不同網頁的內容價值時,需要關注的點也有區別,如:
• 首頁:導航鏈接和推薦內容是否清晰、有效。
• 文章頁:能否提供清晰完整的內容,圖文並茂更佳。
• 商品頁:是否提供了完整真實的商品信息和有效的購買入口。
• 問答頁:是否提供了有參考價值的答案。
• 下載頁:是否提供下載入口,是否有許可權限制,資源是否有效。
• 文檔頁:是否可供用戶閱讀,是否有許可權限制。
• 搜索結果頁:搜索出來的結果是否與標題相關。
網路搜索引擎考量網頁內容質量的維度非常多,最為重要的是:成本;內容完整;信息真實有效以及安全。下面我們通過舉例來感受一下網路搜索引擎是如何對網頁的內容質量進行分類的,請站長對比自己站點的頁面,站在搜索引擎和用戶的角度為自己打分:
1、內容質量好:
網路搜索引擎認為內容質量好的網頁,花費了較多時間和精力編輯,傾注了編者的經驗和專業知識;內容清晰、完整且豐富;資源有效且優質;信息真實有效;安全無毒;不含任何作弊行為和意圖,對用戶有較強的正收益。對這部分網頁,網路搜索引擎會提高其展現在用戶面前的機率。例如:
• 專業醫療機構發布的內容豐富的醫療專題頁面;
• 資深工程師發布的完整解決某個技術問題的專業文章;
• 專業視頻網站上,播放清晰流暢的正版電影或影視全集頁面;
• 知名B2C網站上,一個完整有效的商品購買頁;
• 權威新聞站原創或經過編輯整理的熱點新聞報道;
• 經過網友認真編輯,內容豐富的詞條;
• 問答網站內,回答的內容可以完美解決提問者的問題。
實例參考:
示例
內容質量
說明
case 3.1.1-1
好
專業醫療網站發布的豐富醫療專題頁面
case 3.1.1-2
好
資深工程師發布的完整解決某個技術問題的專業文章
case 3.1.1-3
好
專業視頻網站上,播放清晰流暢的正版影視全集頁面
case 3.1.1-4
好
京東的一個完整有效的商品購買頁
case 3.1.1-5
好
權威新聞站原創的熱點新聞的報道
case 3.1.1-6
好
經過網友認真編輯,內容豐富的網路詞條
case3.1.1-7
好
網路知道上,完美解決用戶問題的問答頁
2、內容質量中:
內容質量中等的網頁往往能滿足用戶需求,但未花費較多時間和精力進行製作編輯,不能體現出編者的經驗和專業知識;內容完整但並不豐富;資源有效但質量欠佳;信息雖真實有效但屬採集得來;安全無毒;不含作弊行為和意圖。在互聯網中,中等質量網頁其實是一個比較大的數量集合,種類面貌也繁雜多樣,網路搜索引擎在評價這類網頁時往往還要考慮其它非常多因素。在這里,我們僅部分舉例來讓各位感受一下:
• 論壇類網站里一個普通的帖子;
• 一個普通的問答網頁;
• 沒有進行任何編輯,直接轉載其它網站的新聞;
• 無版權信息的普通電影播放頁
• 採集知名小說網站的盜版小說頁。
實例參考:
示例
內容質量
說明
case 3.1.2-1
中
網易直接轉載了中國新聞網的一篇新聞。
case 3.1.2-2
中
文庫上網友上傳的「國慶放假安排」新聞
case 3.1.2-3
中
採集起點小說網的盜版小說站
case 3.1.2-4
中
網路貼吧里一個普通的帖子
3、內容質量差:
網路搜索引擎認為主體內容信息量較少,或無有效信息、信息失效過期的都屬於內容質量差網頁,對用戶沒有什麼實質性的幫助,應該減少其展現的機會。同時,如果一個網站內該類網頁的佔比過大,也會影響網路搜索引擎對站點的評級,尤其是UGC網站、電商網站、黃頁網站要尤其重視對過期、失效網頁的管理。例如:
• 已下架的商品頁,或已過期的團購頁;
• 已過有效期的招聘、交易頁面;
• 資源已失效,如視頻已刪除、軟體下載後無法使用等。
4、沒有內容質量可言:
沒有內容質量可言的網頁指那些製作成本很低,粗製濫造;從別處採集來的內容未經最起碼的編輯整理即放置線上;掛木馬等病毒;含有作弊行為或意圖;完全不能滿足用戶需求,甚至含有欺騙內容的網頁。例如:
• 內容空短,有很少量的內容,卻不能支撐頁面的主要意圖;
• 問答頁有問無答,或回答完全不能解決問題;
• 站內搜索結果頁,但沒有給出相關信息
除上述網頁外,欺騙用戶和搜索引擎的網頁在無內容質量可言集合里占很高比例。網路搜索引擎對作弊網頁的定義是:不以滿足用戶需求為目的,通過不正當手段欺騙用戶和搜索引擎從而獲利的網頁。目前互聯網上這部分網頁還屬少數,但作弊網頁的價值是負向的,對用戶的傷害非常大,對這類網頁,搜索引擎持堅決打擊態度。
衡量網頁質量的維度——瀏覽體驗
不同質量的網頁帶給用戶的瀏覽體驗會有很大差距,一個優質的網頁給用戶的瀏覽體驗應該是正向的。用戶希望看到干凈、易閱讀的網頁,排版混亂、廣告過多會影響用戶對網頁主體內容的獲取。在網路搜索引擎網頁質量體系中,用戶對網頁主體內容的獲取成本與瀏覽體驗呈反比,即獲取成本越高,瀏覽體驗越低。面對內容質量相近的網頁,瀏覽體驗佳者更容易獲得更高的排位,而對於瀏覽體驗差的網頁,網路搜索引擎會視情況降低其展現的機率甚至拒絕收錄。
影響用戶瀏覽體驗好壞的因素很多,目前網路搜索引擎主要從內容排版、廣告影響兩方面對網頁進行考量:
內容排版:用戶進入網頁第一眼看到的就是內容排版,排版決定了用戶對網頁的第一印象,也決定了用戶對內容獲取的成本。
廣告影響:網路搜索引擎理解網站的生存發展需要資金支持,對網頁上放置正當廣告持支持態度。網頁應該以滿足用戶需求為主旨,最佳狀態即「主體內容與廣告一起滿足用戶需求,內容為主,廣告為輔」,而不應讓廣告成為網頁主體。
下面我們通過舉例來感受一下網路搜索引擎是如何對網頁的瀏覽體驗進行分類的,站長可以據此對比檢驗自己站點的瀏覽體驗如何:
1、瀏覽體驗好:
頁面布局合理,用戶獲取主體內容成本低,一般具有以下特徵:
• 排版合理,版式美觀,易於閱讀和瀏覽;
• 用戶需要的內容占據網頁最重要位置;
• 能夠通過頁面標簽或頁面布局十分清楚地區分出哪些是廣告;
• 廣告不搶佔主體內容位置,不阻礙用戶對主要內容的獲取;
實例參考:
示例
瀏覽體驗
說明
case 3.2.1-1
好
招聘、房產等網站首頁也有很多廣告,但都是招聘相關的,瀏覽體驗是ok的。
case 3.2.1-2
好
文章頁,頁面布局合理,無廣告,排版好,結構合理
case 3.2.1-3
好
游戲首頁,排版美觀,布局合理,無廣告,瀏覽體驗優
2、瀏覽體驗差:
頁面布局和廣告放置影響了用戶對主體內容的獲取,提高了用戶獲取信息的成本,令用戶反感。包括但不僅限於以下情況:
• 正文內容不換行或不分段,用戶閱讀困難;
• 字體和背景顏色相近,內容辨別困難;
• 頁面布局不合理,網頁首屏看不到任何有價值的主體內容;
• 廣告遮擋主體內容;或者在通用解析度下,首屏都是廣告,看不到主體內容;
• 彈窗廣告過多;
• 影響閱讀的浮動廣告過多
• 點擊鏈接時,出現預期之外的彈窗;
• 廣告與內容混淆,不易區分;
衡量網頁質量的維度——可訪問性
用戶希望快速地從搜索引擎獲取到需要的信息,網路搜索引擎盡可能為用戶提供能一次性直接獲取所有信息的網頁結果。網路搜索引擎認為不能直接獲取到主體內容的網頁對用戶是不友好的,會視情況調整其展現機率。
網路搜索引擎會從正常打開、許可權限制、有效性三方面判斷網頁的可訪問性,對於可以正常訪問的網頁,可以參與正常排序;對於有許可權限制的網頁,再通過其它維度對其進行觀察;對於失效網頁,會降權其展現機制甚至從資料庫中刪除。
1、可正常訪問的網頁
無許可權限制,能直接訪問所有主體內容的網頁。
2、有許可權限制的網頁
此類網頁分為兩種:打開許可權和資源獲取許可權
1)打開許可權:指打開網頁都需要登錄許可權,沒有許可權完全無法看到具體內容,普通用戶無法獲取或獲取成本很高,網路搜索引擎會降低其展現機率。不包括以登錄為主要功能的網頁。
2)資源獲取許可權:指獲取網頁主要內容,如文檔、軟體、視頻等,需要許可權或者需要安裝插件才能獲得完整內容。此時會分三種情況:
• 提供優質、正版內容的網站,由於內容建設成本很高,盡管查看全文或下載時需要許可權或安裝插件,但屬於用戶預期之內,網路搜索引擎也不認為許可權行為對用戶造成傷害,給予與正常可訪問頁面相同的對待。
• 對於一些非優質、非正版的資源,來自於用戶轉載甚至機器採集,本身成本較低,內容也不獨特,用戶獲取資源還有許可權限制——需要用戶注冊登錄或者付費查看,網路搜索引擎會根據具體情況決定是否調整其展現。
• 還有一些視頻、下載資源頁,也許自身資源質量並不差,但需要安裝非常冷門的插件才能正常訪問,比如要求安裝「xx大片播放器」,網路搜索引擎會懷疑其有惡意傾向。
實例參考:
示例
可訪問性
說明
case 3.2-1
好
CNKI上的一篇論文,收費才能下載,但有版權,瀏覽體驗好
case 3.2-2
好
優酷上一部新電影,需要付費才能觀看,瀏覽體驗好。
case 3.2-3
中
內容是來,但是需要登錄才能看更多
case 3.2-4
差
入黨申請書,本身就是轉載的,網上到處都是,但這個頁面仍然要求收費才能下載。
3、失效網頁
往往指死鏈和主體資源失效的網頁。網路搜索引擎認為這部分網頁無法提供有價值信息,如果站點中此類網頁過多,也會影響網路搜索引擎對其的收錄和評級。建議站長對此類網頁進行相應設置,並及時登錄網路站長平台,使用死鏈提交工具告知網路搜索引擎。
失效網頁包括但不僅限於:
• 404、403、503等網頁;
• 程序代碼報錯網頁;
• 打開後提示內容被刪除,或因內容已不存在跳轉到首頁的網頁;
• 被刪除內容的論壇帖子,被刪除的視頻頁面(多出現在UGC站點)
具體請參閱《網路搜索引擎網頁質量白皮書》,望採納!
㈥ 深度優先搜索的系統演算法
所有的搜索演算法從其最終的演算法實現上來看,都可以劃分成兩個部分──控制結構和產生系統。正如前面所說的,搜索演算法簡而言之就是窮舉所有可能情況並找到合適的答案,所以最基本的問題就是羅列出所有可能的情況,這其實就是一種產生式系統。
我們將所要解答的問題劃分成若干個階段或者步驟,當一個階段計算完畢,下面往往有多種可選選擇,所有的選擇共同組成了問題的解空間,對搜索演算法而言,將所有的階段或步驟畫出來就類似是樹的結構(如圖)。
從根開始計算,到找到位於某個節點的解,回溯法(深度優先搜索)作為最基本的搜索演算法,其採用了一種「一隻向下走,走不通就掉頭」的思想(體會「回溯」二字),相當於採用了先根遍歷的方法來構造搜索樹。
上面的話可能難於理解,沒關系,我們通過基本框架和例子來闡述這個演算法,你會發現其中的原理非常簡單自然。
㈦ 常見演算法5、廣度優先搜索 Breadth-First Search
1、定義
廣度優先搜索 (Breadth-First Search)是最簡便的圖的搜索演算法之一,又稱 寬度優先搜索 ,這一演算法也是很多重要的圖演算法的原型。廣度優先搜索屬於一種盲目搜尋法,目的是系統地展開並檢查圖中的所有節點,以找尋結果。換句話說,它並不考慮結果的可能位置,徹底地搜索整張圖,直到找到結果為止。
2、應用
廣度優先搜索被用於解決 最短路徑問題(shortest-path problem) 。
廣度優先搜索讓你能夠找出兩樣東西之間的最短距離,不過最短距離的含義有很多!使用廣度優先搜索可以:
3、圖簡介
既然廣度優先搜索是作用於圖的一種演算法,這里對圖作一個簡單的介紹,先不深入了解。
圖由 節點 和 邊 組成。一個節點可能與多個節點相連,這些節點被稱為鄰居。
廣度優先演算法的核心思想是:從初始節點開始,應用算符生成第一層節點,檢查目標節點是否在這些後繼節點中,若沒有,再用產生式規則將所有第一層的節點逐一擴展,得到第二層節點,並逐一檢查第二層節點中是否包含目標節點。若沒有,再用算符逐一擴展第二層的所有節點……,如此依次擴展,檢查下去,直到發現目標節點為止。即
廣度優先搜索使用隊列(queue)來實現,整個過程也可以看做一個倒立的樹形。
例:假如你需要在你的人際關系網中尋找是否有職業為醫生的人,圖如下:
而使用廣度優先搜索工作原理大概如下 :
1、Python 3 :
2、php :
1、《演算法圖解》 https://www.manning.com/books/grokking-algorithms
2、SplQueue類: https://www.php.net/manual/zh/class.splqueue.php