<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>

          基于計算機視覺的裂紋檢測方案

          共 3509字,需瀏覽 8分鐘

           ·

          2021-01-15 03:33

          ↑ 點擊藍字?關(guān)注極市平臺

          聲明:非常抱歉,未來一周我們可能都無法為大家推出優(yōu)質(zhì)的原創(chuàng)內(nèi)容。因為近期極市遭遇了惡意舉報,我們目前正在申訴中。極市一直致力于為計算機視覺開發(fā)者分享優(yōu)質(zhì)的技術(shù)內(nèi)容,并以一種開放包容的心態(tài)與大家相處。我們希望和大家一起堅決抵制這種惡意舉報行為,同時也希望能與大家一起共創(chuàng)一個良好和諧的AI技術(shù)內(nèi)容分享環(huán)境。


          作者丨努比
          來源丨小白學(xué)視覺
          編輯丨極市平臺

          極市導(dǎo)讀

          ?

          本篇文章中,作者為異常識別和定位提供了一種機器學(xué)習(xí)解決方案。所有這些功能都可以通過實現(xiàn)單個分類模型來訪問。在訓(xùn)練過程中,該神經(jīng)網(wǎng)絡(luò)會獲取所有相關(guān)信息,從而可以進行分類,并在最后給出墻壁裂紋的信息。?>>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿

          01. 數(shù)據(jù)集

          我們首先需要從互聯(lián)網(wǎng)上獲取包含墻壁裂縫的圖像(URL格式)數(shù)據(jù)。總共包含1428張圖像:其中一半是新的且未損壞的墻壁;其余部分顯示了各種尺寸和類型的裂縫。

          第一步:讀取圖像,并調(diào)整大小。
          images = []for url in tqdm.tqdm(df['content']):    response = requests.get(url)    img = Image.open(BytesIO(response.content))    img = img.resize((224, 224))    numpy_img = img_to_array(img)    img_batch = np.expand_dims(numpy_img, axis=0)    images.append(img_batch.astype('float16'))images = np.vstack(images)
          從下面的示例中您可以看到,在我們的數(shù)據(jù)中顯示了不同類型的墻體裂縫,其中一些對我來說也不容易識別。
          圖例

          02. 機器學(xué)習(xí)模型

          我們想要建立一個機器學(xué)習(xí)模型,該模型能夠?qū)Ρ趫D像進行分類并同時檢測異常的位置。為了達到這個目的需要建立一個有效的分類器。它將能夠讀取輸入圖像并將其分類為“損壞”或“未損壞”兩個部分。在最后一步,我們將利用分類器學(xué)到的知識來提取有用的信息,這將有助于我們檢測異常情況。對于這個類任務(wù),我們選擇在Keras中重載VGG16來完成它。
          vgg_conv = vgg16.VGG16(weights='imagenet', include_top=False, input_shape = (224, 224, 3))for layer in vgg_conv.layers[:-8]:    layer.trainable = False
          導(dǎo)入了VGG架構(gòu),并允許訓(xùn)練最后兩個卷積模塊,以便我們的模型能夠具有一定的特殊性。除此之外,我們還需要去除原始模型的頂層,并將其替換為另一種結(jié)構(gòu)。
          x = vgg_conv.outputx = GlobalAveragePooling2D()(x)x = Dense(2, activation="softmax")(x)model = Model(vgg_conv.input, x)model.compile(loss = "categorical_crossentropy", optimizer = optimizers.SGD(lr=0.0001, momentum=0.9), metrics=["accuracy"])
          在分類階段,GlobalAveragePooling層通過提取每個要素圖的平均值來減小前一層的大小,這種選擇加上中間致密層的省略用法可以避免過度擬合。如果小伙伴可以使用GPU,則培訓(xùn)非常簡單。COLAB為我們提供了加快這一過程所需的武器。我們還使用了Keras提供的簡單數(shù)據(jù)生成器進行圖像增強。

          最終,我們能夠達到0.90的整體精度,還不錯!
          局部異常
          現(xiàn)在我們要對檢測出異常的圖像進行一定的操作,使墻壁圖像裂縫被突出。我們需要的有用信息位于頂層。因此我們可以訪問:卷積層:上層是VGG結(jié)構(gòu),還有網(wǎng)絡(luò)創(chuàng)建的更多重要功能。我們選擇了最后一個卷積層(“?block5_conv3?”),并在此處剪切了我們的分類模型。我們已經(jīng)重新創(chuàng)建了一個中間模型,該模型以原始圖像為輸入,輸出相關(guān)的激活圖。考慮到維度,我們的中間模型增加了初始圖像的通道(新功能)并減小了尺寸(高度和寬度)。

          最終密度層:對于每個感興趣的類別,我們都需要這些權(quán)重,這些權(quán)重負責(zé)提供分類的最終結(jié)果。

          有了這些壓縮的物體,我們掌握了定位裂縫的所有知識。我們希望將它們“繪制”在原始圖像上,以使結(jié)果易于理解且易于看清。“解壓縮”此信息在python中很容易:我們只需進行雙線性上采樣即可調(diào)整每個激活圖的大小并計算點積。

          執(zhí)行一個簡單的函數(shù)即可訪問:
          def plot_activation(img):    pred = model.predict(img[np.newaxis,:,:,:])    pred_class = np.argmax(pred)    weights = model.layers[-1].get_weights()[0]    class_weights = weights[:, pred_class]    intermediate = Model(model.input,                         model.get_layer("block5_conv3").output)    conv_output = intermediate.predict(img[np.newaxis,:,:,:])    conv_output = np.squeeze(conv_output)    h = int(img.shape[0]/conv_output.shape[0])    w = int(img.shape[1]/conv_output.shape[1])    act_maps = sp.ndimage.zoom(conv_output, (h, w, 1), order=1)    out = np.dot(act_maps.reshape((img.shape[0]*img.shape[1],512)),                  class_weights).reshape(img.shape[0],img.shape[1])    plt.imshow(img.astype('float32').reshape(img.shape[0],               img.shape[1],3))    plt.imshow(out, cmap='jet', alpha=0.35)    plt.title('Crack' if pred_class == 1 else 'No Crack')
          我在下面的圖像中顯示結(jié)果,在該圖像中,我已在分類為裂紋的測試圖像上繪制了裂紋熱圖。我們可以看到,熱圖能夠很好地泛化并指出包含裂縫的墻塊。
          在裂紋圖像中顯示異常

          03. 總結(jié)

          在這篇文章中,我們?yōu)楫惓WR別和定位提供了一種機器學(xué)習(xí)解決方案。所有這些功能都可以通過實現(xiàn)單個分類模型來訪問。在訓(xùn)練過程中,我們的神經(jīng)網(wǎng)絡(luò)會獲取所有相關(guān)信息,從而可以進行分類,并在最后給出墻壁裂紋的信息。



          推薦閱讀



          添加極市小助手微信(ID : cvmart2),備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳),即可申請加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術(shù)交流群:每月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

          △長按添加極市小助手

          △長按關(guān)注極市平臺,獲取最新CV干貨

          覺得有用麻煩給個在看啦~??
          瀏覽 53
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  黄色日本免费 | 一道本一区二区三区在线视频 | 青青草黄视频 | 豆花成人理论在线电影一区二区 | 成人肏屄视频 |