欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

利用ImageAI庫只需幾行python代碼超簡實現目標檢測

系統 1852 0

目錄

  • 什么是目標檢測
  • 目標檢測算法
    • Two Stages
    • One Stage
  • python實現
    • 依賴
    • 安裝
    • 使用
  • 附錄

什么是目標檢測

目標檢測關注圖像中特定的物體目標,需要同時解決解決定位(localization) + 識別(Recognition)。相比分類,檢測給出的是對圖片前景和背景的理解,我們需要從背景中分離出感興趣的目標,并確定這一目標的描述(類別和位置),因此檢測模型的輸出是一個列表,列表的每一項使用一個數組給出檢出目標的類別和位置(常用矩形檢測框的坐標表示)。

通俗的說,Object Detection的目的是在目標圖中將目標用一個框框出來,并且識別出這個框中的是啥,而且最好的話是能夠將圖片的所有物體都框出來。

利用ImageAI庫只需幾行python代碼超簡實現目標檢測_第1張圖片

目標檢測算法

目前目標檢測領域的深度學習方法主要分為兩類:兩階段(Two Stages)的目標檢測算法;一階段(One Stage)目標檢測算法。

Two Stages

首先由算法(algorithm)生成一系列作為樣本的候選框,再通過卷積神經網絡進行樣本(Sample)分類。也稱為基于候選區域(Region Proposal)的算法。常見的算法有R-CNN、Fast R-CNN、Faster R-CNN等等。

One Stage

不需要產生候選框,直接將目標框定位的問題轉化為回歸(Regression)問題處理,也稱為基于端到端(End-to-End)的算法。常見的算法有YOLO、SSD等等。

python實現

本文主要講述如何實現目標檢測,至于背后的原理不過多贅述,可以去看相關的論文。

ImageAI是一個簡單易用的計算機視覺Python庫,使得開發者可以輕松的將最新的最先進的人工智能功能整合進他們的應用。

ImageAI本著簡潔的原則,支持最先進的機器學習算法,用于圖像預測,自定義圖像預測,物體檢測,視頻檢測,視頻對象跟蹤和圖像預測訓練。

依賴

  • Python 3.5.1(及更高版本)
  • pip3
  • Tensorflow 1.4.0(及更高版本)
  • Numpy 1.13.1(及更高版本)
  • SciPy 0.19.1(及更高版本)
  • OpenCV
  • pillow
  • Matplotlib
  • h5py
  • Keras 2.x

安裝

  • 命令行安裝
          
            pip3 install https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl
          
        
  • 下載imageai-2.1.0-py3-none-any.whl 安裝文件并在命令行中指定安裝文件的路徑
          
            pip3 install .\imageai-2.1.0-py3-none-any.whl
          
        

使用

Image支持的深度學習的算法有 RetinaNet , YOLOv3 , TinyYoLOv3 。ImageAI已經在 COCO數據集 上預先訓練好了對應的三個模型,根據需要可以選擇不同的模型。可以通過下面的鏈接進行下載使用:

  • Download RetinaNet Model - resnet50_coco_best_v2.0.1.h5
  • Download YOLOv3 Model - yolo.h5
  • Download TinyYOLOv3 Model - yolo-tiny.h5

以上模型可以檢測并識別以下80種不同的目標:

          
            person,   bicycle,   car,   motorcycle,   airplane,
bus,   train,   truck,   boat,   traffic light,   fire hydrant, stop_sign,
parking meter,   bench,   bird,   cat,   dog,   horse,   sheep, cow,
elephant,   bear,   zebra,   giraffe,   backpack,   umbrella,
handbag,   tie,   suitcase, frisbee,   skis,   snowboard,  
sports ball,   kite,   baseball bat,   baseball glove,   skateboard,
surfboard,   tennis racket,   bottle,   wine glass,   cup,   fork,   knife,
spoon,   bowl, banana,   apple,   sandwich,   orange,   broccoli,   carrot,
hot dog,   pizza,   donot,   cake,   chair,   couch,   potted plant,   bed,
dining table,   toilet,   tv,   laptop,   mouse,   remote,   keyboard,
cell phone,   microwave,   oven,   toaster,   sink,   refrigerator,
book,   clock,   vase,   scissors,   teddy bear,   hair dryer,
toothbrush
          
        

先來看看完整的代碼,使用YOLOv3算法對13張照片進行目標識別。

          
            from imageai.Detection import ObjectDetection
import os

detector = ObjectDetection()
detector.setModelTypeAsYOLOv3()
detector.setModelPath("./model/yolo.h5")
detector.loadModel()

path = os.getcwd()
input_image_list = os.listdir(path+"\pic\input")
input_image_list = sorted(input_image_list, key = lambda i:len(i),reverse = False)
size = len(input_image_list)
for i in range(size):
    input_image_path = os.path.join(path+"\pic\input", input_image_list[i])
    output_image_path = os.path.join(path+"\pic\output", input_image_list[i])
    detections, extract_detected_objects = detector.detectObjectsFromImage(input_image=input_image_path,
                                                 output_image_path=output_image_path,
                                                 extract_detected_objects=True)
    print('------------------- %d -------------------' % int(i + 1))
    for eachObject in detections:
        print(eachObject["name"], " : ", eachObject["percentage_probability"], " : ", eachObject["box_points"])
    print('------------------- %d -------------------' % int(i + 1))
          
        

首先第一行導入 ImageAI Object Detection 類,在第二行導入 os 庫。
然后創建了ObjectDetection類的新實例,接著就可以選擇要使用的算法。分別有以下三個函數:

          
            .setModelTypeAsRetinaNet() 
.setModelTypeAsYOLOv3()
.setModelTypeAsTinyYOLOv3()
          
        

選擇好算法之后就要設置模型文件路徑,這里給出的路徑必須要和選擇的算法一樣。

          
            .setModelPath() 
- 參數path(必須):模型文件的路徑
          
        

載入模型。

          
            .loadModel()
- 參數detection_speed(可選):最多可以減少80%的時間,但是會導致精確度的下降。可選的值有: “normal”, “fast”, “faster”, “fastest” 和 “flash”。默認值是 “normal”。
          
        

通過os庫的函數得到輸入輸出文件的路徑等,這不是本文重點,跳過不表。
開始對圖像進行目標檢測。

          
            .detectObjectsFromImage()
- 參數input_image(必須):待檢測圖像的路徑
- 參數output_image(必須):輸出圖像的路徑
- 參數parameter minimum_percentage_probability(可選):能接受的最低預測概率。默認值是50%。
- 參數display_percentage_probability(可選):是否展示預測的概率。默認值是True。
- 參數display_object_name(可選):是否展示識別物品的名稱。默認值是True。
- 參數extract_detected_objects(可選):是否將識別出的物品圖片保存。默認是False。
          
        

返回值根據不同的參數也有不同,但都會返回一個an array of dictionaries。字典包括以下幾個屬性:

          
            * name (string)
* percentage_probability (float)
* box_points (tuple of x1,y1,x2 and y2 coordinates)
          
        

前面說過可以識別80種目標,在這里也可以選擇只識別自己想要的目標。

          
            custom = detector.CustomObjects(person=True, dog=True)

detections = detector.detectCustomObjectsFromImage( custom_objects=custom, input_image=os.path.join(execution_path , "image3.jpg"), output_image_path=os.path.join(execution_path , "image3new-custom.jpg"), minimum_percentage_probability=30)
          
        

首先用定義自己想要的目標,其余的目標會被設置為False。然后配合 .detectCustomObjectsFromImage() 進行目標檢測。

主要的代碼基本如上所述,接下來看結果。先看看圖片中只有一個目標的效果。

利用ImageAI庫只需幾行python代碼超簡實現目標檢測_第2張圖片

利用ImageAI庫只需幾行python代碼超簡實現目標檢測_第3張圖片

          
            ------------------- 10 -------------------
dog  :  98.83476495742798  :  (117, 91, 311, 360)
dog  :  99.24255609512329  :  (503, 133, 638, 364)
dog  :  99.274742603302  :  (338, 38, 487, 379)
------------------- 10 -------------------
          
        

效果還是不錯的。再看看如果圖片中有多個目標識別的結果如何。
利用ImageAI庫只需幾行python代碼超簡實現目標檢測_第4張圖片

利用ImageAI庫只需幾行python代碼超簡實現目標檢測_第5張圖片

          
            ------------------- 4 -------------------
book  :  55.76887130737305  :  (455, 74, 487, 146)
book  :  82.22097754478455  :  (466, 11, 482, 69)
tv  :  99.34800863265991  :  (25, 40, 182, 161)
bed  :  88.7190580368042  :  (60, 264, 500, 352)
cat  :  99.54025745391846  :  (214, 125, 433, 332)
------------------- 4 -------------------

          
        

識別度還是很高的,背后人眼都看不清的書本都能被識別。

附錄

GitHub:https://github.com/Professorchen/Computer-Vision/tree/master/object-detection


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产 高清 在线 | 热99这里只有精品 | 91偷拍精品一区二区三区 | 亚洲免费资源 | 一级少妇女片 | 久久视屏这里只有精品6国产 | 欧美日韩成人影院 | 国产色司机在线视频免费观看 | 国产在线观看午夜不卡 | 深夜福利久久久 | 日韩欧美在线观看视频 | 久久久精品视频免费观看 | 午夜小网站| 5g免费影院永久天天影院在线 | 午夜小视频在线观看 | 成人午夜18免费看 | 日韩高清不卡 | 亚洲精品成人 | 日韩城人网站 | 在线91 | 久久精品一区二区三区四区 | 欧美成人h版在线观看 | 天堂资源8中文最新版 | 国产欧美精品一区二区三区 | 久久综合九色综合欧美狠狠 | 四虎tv在线观看884aa | 狠狠骚| 在线欧美一区 | 久久久久久久亚洲视频 | a毛片在线看免费观看 | 奇米影视4444| 成人在线不卡视频 | 波多野结衣免费线在线 | 久章操 | 国产精彩视频 | 国产精品欧美一区二区在线看 | 成人爽a毛片免费啪啪红桃视频 | 午夜小视频免费观看 | 欧美国产日韩在线 | 婷婷丁香色综合图亚洲 | 成年视频在线观看免费 |