天天看點

[Open Source]基于YOLOv3與Django架構的Web應用-YOLOv3_Detect_Web

YOLOv3_Detect_Web

Use Yolov3 detect on Web

[Open Source]基于YOLOv3與Django架構的Web應用-YOLOv3_Detect_Web

使用 YOLOv3(PyTorch 和 Django 實作)的對象檢測應用程式。

網頁和 REST API由Django Web架構實作。

1. Introduction 介紹

1.1 概述

這是一個使用 YOLOv3 提供對象檢測并生成 REST API 的 Web 應用程式。

它是使用 Django 架構和 PyTorch(用于 YOLO 模型)實作的。

這裡開發了接受圖像作為請求的 Django API,API 的響應是 JSON 對象。

輸入圖像被轉換為 float32 類型的 NumPy 數組并傳遞給 YOLOv3 對象檢測模型。

該模型對圖像執行對象檢測,并生成一個 JSON 對象,其中包含所有對象的名稱及其在圖像中各自的置信度。

1.2 視訊Demo

2. Required Libraries 依賴庫對應版本及環境配置

2.1 所需依賴庫

下面提到了所需的庫及其版本:

  • Python (3.7)
  • Django (3.0.3)
  • PyTorch (1.3.1)
  • Pillow (7.1.2)
  • OpenCV (4.2.0)
  • NumPy (1.18.5)

可見requirements.txt。

2.2 配置測試環境

  • 利用Anaconda建立名為web的虛拟環境
conda create -n web python=3.7
           
  • 進入虛拟環境
conda activate web
           
  • 根據requirements檔案在清華源下進行依賴庫安裝(推薦使用)
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
           

3. Required files for Detection 檢測必需的檔案

要使用預訓練模型的對象檢測,我們需要三個重要檔案,分别為以下:

  • yolov3.cfg - cfg:

    該檔案用來逐塊描述網絡的布局。官方 cfg 檔案可在Darknet github 存儲庫中找到。

    但是,為了獲得更好的性能,我對配置檔案做了一些更改。

  • yolov3.weights:

    我們使用來自 darknet53 模型的權重。

  • coco.names:

    檔案包含我們的模型經過訓練可以識别的不同對象的名稱。

4.Steps to Follow (Working)

這個存儲庫可以做兩件事:

  1. 基于YOLOv3和Django的網頁程式應用實作
  2. REST API的生成(API測試使用POSTMAN完成)

4.1 網頁應用實作

  • step-1.克隆 GitHub 存儲庫
git clone https://github.com/isLinXu/YOLOv3_Detect_Web.git
           
  • step-2.将目錄更改為克隆的 Repository 檔案夾。
cd YOLOv3_Detect_Web
           
  • step-3.由于.cfg 和 coco.names 檔案已在此存儲庫中預設設定好, 可根據需要進行自行修改。

    現在,我們需要做的就是下載下傳權重檔案。

    在指令提示符中使用以下指令下載下傳 yolov3.weights:

wget https://pjreddie.com/media/files/yolov3.weights
           
  • step-4.安裝所有必需的庫。
  • step-5.執行下面的代碼:(這條指令隻需要執行一次,用來初始化建立)
python manage.py collectstatic
           

此指令啟動 Django 并收集所有靜态檔案。

  • step-6.然後,開始服務:
python manage.py runserver
           

此指令啟動 Django 伺服器。

現在我們都準備好運作應用程式了。

  • step-7..執行上述代碼後,您将看到如下内容:
[Open Source]基于YOLOv3與Django架構的Web應用-YOLOv3_Detect_Web
  • step-8.點選連結。這會将您定向到 Web 浏覽器。
    [Open Source]基于YOLOv3與Django架構的Web應用-YOLOv3_Detect_Web
  • step-9.通過拖放或浏覽模式選擇圖像。
    [Open Source]基于YOLOv3與Django架構的Web應用-YOLOv3_Detect_Web
  • setp-10:上傳圖檔
[Open Source]基于YOLOv3與Django架構的Web應用-YOLOv3_Detect_Web
[Open Source]基于YOLOv3與Django架構的Web應用-YOLOv3_Detect_Web
  • step-11: 點選DEDECT-OBJECT,進行檢測圖檔,這時會将結果解析為json并顯示出來。

    Django Web-app 的輸入是一個圖像。此輸入圖像被轉換為​​ float32 類型的 NumPy 數組并傳遞給 YOLOv3 模型。

    該模型對圖像執行對象檢測,并生成一個 JSON 對象,其中包含所有對象的名稱及其在圖像中各自的頻率。

    [Open Source]基于YOLOv3與Django架構的Web應用-YOLOv3_Detect_Web
    表單響應是 JSON 對象。此 JSON 對象如上所示顯示。
  • step-12: 單擊“Show Predictions”顯示檢測結果,檢視帶有邊界框的圖像。
[Open Source]基于YOLOv3與Django架構的Web應用-YOLOv3_Detect_Web
  • step-13: 要嘗試其他圖像,請單擊"Choose a New File"

4.2 REST API 實作——POSTMAN

Postman 是一個可擴充的 API 測試工具。要遵循的步驟是:

  1. 按照上面提到的前 6 個步驟進行操作。
  2. 確定伺服器正常運作
    [Open Source]基于YOLOv3與Django架構的Web應用-YOLOv3_Detect_Web
  3. 打開 POSTMAN 并選擇 POST 選項。輸入上面顯示的伺服器連結并将 /object_detection/api_request/ 附加到它。
  4. 點選body,輸入key value作為"image",選擇圖檔檔案點選“Send”進行發送
  5. 輸入圖像被轉換為 float32 類型的 NumPy 數組并傳遞給 YOLOv3 模型。該模型對圖像執行對象檢測,并生成一個 JSON 對象,其中包含所有對象的名稱及其在圖像中各自的頻率。
    [Open Source]基于YOLOv3與Django架構的Web應用-YOLOv3_Detect_Web
  6. HttpResponse 是 JSON 對象。其中此 JSON 對象如上所示顯示。

例如:127.0.0.1:8000/object_detection/api_request/

Talk is cheap. Show me the code