<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          以圖搜圖:Python實(shí)現(xiàn)dHash算法

          共 3905字,需瀏覽 8分鐘

           ·

          2022-02-19 16:12

          4d0ea5432f32f973690e0dc95027db24.webp

          向AI轉(zhuǎn)型的程序員都關(guān)注了這個(gè)號(hào)??????

          機(jī)器學(xué)習(xí)AI算法工程?? 公眾號(hào):datayx


          期研究了一下以圖搜圖這個(gè)炫酷的東西。百度和谷歌都有提供以圖搜圖的功能,有興趣可以找一下。當(dāng)然,不是很深入。深入的話,得運(yùn)用到深度學(xué)習(xí)這貨。Python深度學(xué)習(xí)當(dāng)然不在話下。


          這個(gè)功能最核心的東西就是怎么讓電腦識(shí)別圖片。


          這個(gè)問(wèn)題也是困擾了我,在偶然的機(jī)會(huì),看到哈希感知算法。這個(gè)分兩種,一種是基本的均值哈希感知算法(dHash),一種是余弦變換哈希感知算法(pHash)。dHash是我自己命名的,為了和pHash區(qū)分。這里兩種方法,我都用Python實(shí)現(xiàn)了^_^


          哈希感知算法基本原理如下:

          1、把圖片轉(zhuǎn)成一個(gè)可識(shí)別的字符串,這個(gè)字符串也叫哈希值

          2、和其他圖片匹配字符串


          算法不是耍耍嘴皮子就行了,重點(diǎn)是怎么把圖片變成一個(gè)可識(shí)別的字符串。(鄙視網(wǎng)上那些抄來(lái)抄去的文章,連字都一模一樣)拿一張圖片舉例。


          836ae8daf7803c9d254b3d4fcc1bf993.webp




          首先,把這個(gè)圖片縮小到8x8大小,并改成灰度模式。這樣是為了模糊化處理圖片,并減少計(jì)算量。

          8x8的圖片太小了,放大圖片給大家看一下。



          a47f5ec89b4ad727a71125666ddbb489.webp




          x8大小的圖片就是有64個(gè)像素值。計(jì)算這64個(gè)像素的平均值,進(jìn)一步降噪處理。


          像素值=[

          ? ? ?247, 245, 250, 253, 251, 244, 240, 240,?

          ? ? ?247, 253, 228, 208, 213, 243, 247, 241,?

          ? ? ?252, 226, 97, 80, 88, 116, 231, 247,?

          ? ? ?255, 172, 79, 65, 51, 58, 191, 255,?

          ? ? ?255, 168, 71, 60, 53, 69, 205, 255,?

          ? ? ?255, 211, 65, 58, 56, 104, 244, 252,?

          ? ? ?248, 253, 119, 42, 53, 181, 252, 243,?

          ? ? ?244, 240, 218, 175, 185, 230, 242, 244]


          平均值=185.359375



          得到這個(gè)平均值之后,再和每個(gè)像素對(duì)比。像素值大于平均值的標(biāo)記成1,小于或等于平均值的標(biāo)記成0。組成64個(gè)數(shù)字的字符串(看起來(lái)也是一串二進(jìn)制的)。


          降噪結(jié)果=[

          ? ? ? ?1, 1, 1, 1, 1, 1, 1, 1,?

          ? ? ? ?1, 1, 1, 1, 1, 1, 1, 1,?

          ? ? ? ?1, 1, 0, 0, 0, 0, 1, 1,?

          ? ? ? ?1, 0, 0, 0, 0, 0, 1, 1,?

          ? ? ? ?1, 0, 0, 0, 0, 0, 1, 1,?

          ? ? ? ?1, 1, 0, 0, 0, 0, 1, 1,?

          ? ? ? ?1, 1, 0, 0, 0, 0, 1, 1,?

          ? ? ? ?1, 1, 1, 0, 0, 1, 1, 1]


          64位字符串 =

          '1111111111111111110000111000001110000011110000111100001111100111'


          由于64位太長(zhǎng),比較起來(lái)也麻煩。每4個(gè)字符為1組,由2進(jìn)制轉(zhuǎn)成16進(jìn)制。這樣就剩下一個(gè)長(zhǎng)度為16的字符串。這個(gè)字符串也就是這個(gè)圖片可識(shí)別的哈希值。

          哈希值 = 'ffffc38383c3c3e7'


          Python代碼如下:

          6daf29557b9162bdef53aad8e6f28eff.webp


          看看其他圖片的哈希值:


          37f4d48710f829fb1d8f02bc4218f55a.webp



          2ac8d009b159d56c3b37a61c67fe265d.webp



          2bae7d308f691db7ed0b7fd93244506c.webp



          這3張圖片的哈希值分別和a.jpg(舉例的那張圖片)的哈希值對(duì)比。對(duì)比方法用漢明距離:相同位置上的字符不同的個(gè)數(shù)。例如a.jpg和b.jpg對(duì)比


          abfb77e1bd62f46ea6a51ae9ed250cbd.webp


          有11個(gè)位置的字符不一樣,則漢明距離是11。漢明距離越小就說(shuō)明圖片越相識(shí)。超過(guò)10就說(shuō)明圖片很不一樣。


          a.jpg和c.jpg的漢明距離是8;

          a.jpg和d.jpg的漢明距離是7。

          說(shuō)明在這3張圖片中,d.jpg和a.jpg最相似。


          大致算法就是這樣,漢明距離的代碼我沒(méi)給出,這個(gè)比較簡(jiǎn)單。一般都是在數(shù)據(jù)庫(kù)里面進(jìn)行計(jì)算,得到比較小的那些圖片感知哈希值。

          當(dāng)然,實(shí)際應(yīng)用中很少用這種算法,因?yàn)檫@種算法比較敏感。同一張圖片旋轉(zhuǎn)一定角度或者變形一下,那個(gè)哈希值差別就很大。不過(guò),它的計(jì)算速度是最快的,通??梢杂糜诓檎铱s略圖。


          現(xiàn)有3張圖片,用前面的dHash均值哈希感知算法計(jì)算哈希值。

          adcda90eed6a3099f59db5b4098626c2.webp




          6fcc87a1119b82f9959f827a6c41f082.webp



          77435e234fe300b9b0245dded9857897.webp


          Hash均值哈希感知算法計(jì)算結(jié)果:

          1.jpg:270f078fd1fdffff

          2.jpg:f8f0e1f0eaefcfff

          3.jpg:e70f058f81f1f1ff


          1.jpg和2.jpg(旋轉(zhuǎn)90度)的漢明距離是13;1.jpg和3.jpg(旋轉(zhuǎn)5度)的漢明距離是5。(漢明距離是兩個(gè)字符串對(duì)應(yīng)位置對(duì)比,總共不同的個(gè)數(shù))

          很明顯,旋轉(zhuǎn)了90度漢明距離變得很大。在dHash算法中,它們是不同的。而我們?nèi)庋劭梢钥闯銎鋵?shí)是一樣的。前面說(shuō)過(guò)dHash算法比較較真、比較敏感。若要處理一定程度的變形,得要調(diào)整一下這個(gè)算法。

          pHash算法就是基于dHash算法調(diào)整而來(lái)的,用第一次計(jì)算得到的值進(jìn)行余弦變換。所以命名為余弦哈希感知算法。它可以識(shí)別變形程度在25%以內(nèi)的圖片。


          大致原理和處理過(guò)程是這樣:

          把圖片縮小到32x32的尺寸,并轉(zhuǎn)為灰度模式。


          9d5d5be80ec1696443a9a481eaca7327.webp


          得到這個(gè)平均值之后,再和每個(gè)像素對(duì)比。像素值大于平均值的標(biāo)記成1,小于或等于平均值的標(biāo)記成0。組成64個(gè)數(shù)字的字符串(看起來(lái)也是一串二進(jìn)制的)。


          降噪結(jié)果 =?[

          ? ? 0, 1, 1, 1, 0, 0, 1, 1,

          ? ? 0, 1, 1, 0, 0, 0, 0, 1,

          ? ? 0, 0, 0, 0, 0, 0, 0, 0,

          ? ? 0, 0, 0, 0, 0, 0, 0, 0,

          ? ? 1, 1, 1, 1, 1, 1, 1, 1,

          ? ? 1, 1, 1, 1, 1, 1, 1, 1,

          ? ? 0, 0, 0, 1, 1, 1, 0, 0,

          ? ? 0, 0, 0, 0, 0, 0, 0, 0]

          64位字符串 = '0111001101100001000000000000000011111111111111110001110000000000'

          每4個(gè)數(shù)字,由2進(jìn)制轉(zhuǎn)成16進(jìn)制,得到哈希值 = '73610000ffff1c00'


          Python代碼如下:


          ffc0ebded3355784c161fe6be49a9fb6.webp

          a5d26327250aee04e31724ea8318caf1.webp


          用這個(gè)算法計(jì)算2.jpg和3.jpg的哈希值和與1.jpg對(duì)比的漢明距離分別是:

          2.jpg:7ffc0000ffffe000,漢明距離是5

          3.jpg:7fff0000fffff800,漢明距離是5

          很明顯,pHash算法得到的漢明距離更加符合我們的要求。

          ????

          原文地址

          https://yshblog.com/blog/44



          機(jī)器學(xué)習(xí)算法AI大數(shù)據(jù)技術(shù)

          ?搜索公眾號(hào)添加:?datanlp

          長(zhǎng)按圖片,識(shí)別二維碼




          閱讀過(guò)本文的人還看了以下文章:


          TensorFlow 2.0深度學(xué)習(xí)案例實(shí)戰(zhàn)


          基于40萬(wàn)表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測(cè)


          《基于深度學(xué)習(xí)的自然語(yǔ)言處理》中/英PDF


          Deep Learning 中文版初版-周志華團(tuán)隊(duì)


          【全套視頻課】最全的目標(biāo)檢測(cè)算法系列講解,通俗易懂!


          《美團(tuán)機(jī)器學(xué)習(xí)實(shí)踐》_美團(tuán)算法團(tuán)隊(duì).pdf


          《深度學(xué)習(xí)入門:基于Python的理論與實(shí)現(xiàn)》高清中文PDF+源碼


          《深度學(xué)習(xí):基于Keras的Python實(shí)踐》PDF和代碼


          特征提取與圖像處理(第二版).pdf


          python就業(yè)班學(xué)習(xí)視頻,從入門到實(shí)戰(zhàn)項(xiàng)目


          2019最新《PyTorch自然語(yǔ)言處理》英、中文版PDF+源碼


          《21個(gè)項(xiàng)目玩轉(zhuǎn)深度學(xué)習(xí):基于TensorFlow的實(shí)踐詳解》完整版PDF+附書代碼


          《深度學(xué)習(xí)之pytorch》pdf+附書源碼


          PyTorch深度學(xué)習(xí)快速實(shí)戰(zhàn)入門《pytorch-handbook》


          【下載】豆瓣評(píng)分8.1,《機(jī)器學(xué)習(xí)實(shí)戰(zhàn):基于Scikit-Learn和TensorFlow》


          《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼


          汽車行業(yè)完整知識(shí)圖譜項(xiàng)目實(shí)戰(zhàn)視頻(全23課)


          李沐大神開源《動(dòng)手學(xué)深度學(xué)習(xí)》,加州伯克利深度學(xué)習(xí)(2019春)教材


          筆記、代碼清晰易懂!李航《統(tǒng)計(jì)學(xué)習(xí)方法》最新資源全套!


          《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》最新2018版中英PDF+源碼


          將機(jī)器學(xué)習(xí)模型部署為REST API


          FashionAI服裝屬性標(biāo)簽圖像識(shí)別Top1-5方案分享


          重要開源!CNN-RNN-CTC 實(shí)現(xiàn)手寫漢字識(shí)別


          yolo3 檢測(cè)出圖像中的不規(guī)則漢字


          同樣是機(jī)器學(xué)習(xí)算法工程師,你的面試為什么過(guò)不了?


          前海征信大數(shù)據(jù)算法:風(fēng)險(xiǎn)概率預(yù)測(cè)


          【Keras】完整實(shí)現(xiàn)‘交通標(biāo)志’分類、‘票據(jù)’分類兩個(gè)項(xiàng)目,讓你掌握深度學(xué)習(xí)圖像分類


          VGG16遷移學(xué)習(xí),實(shí)現(xiàn)醫(yī)學(xué)圖像識(shí)別分類工程項(xiàng)目


          特征工程(一)


          特征工程(二) :文本數(shù)據(jù)的展開、過(guò)濾和分塊


          特征工程(三):特征縮放,從詞袋到 TF-IDF


          特征工程(四): 類別特征


          特征工程(五): PCA 降維


          特征工程(六): 非線性特征提取和模型堆疊


          特征工程(七):圖像特征提取和深度學(xué)習(xí)


          如何利用全新的決策樹集成級(jí)聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?


          Machine Learning Yearning 中文翻譯稿


          螞蟻金服2018秋招-算法工程師(共四面)通過(guò)


          全球AI挑戰(zhàn)-場(chǎng)景分類的比賽源碼(多模型融合)


          斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


          python+flask搭建CNN在線識(shí)別手寫中文網(wǎng)站


          中科院Kaggle全球文本匹配競(jìng)賽華人第1名團(tuán)隊(duì)-深度學(xué)習(xí)與特征工程



          不斷更新資源

          深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、python

          ?搜索公眾號(hào)添加:?datayx??


          瀏覽 79
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲精品黄色电影网站 | 日韩国产高清无码 | 一级二级黄色视屏 | 91久久爽无码人妻AⅤ精品蜜桃 | 色婷婷在线精品 |