訂閱
糾錯
加入自媒體

探索如何通過向AI提供大量藥丸圖像來訓(xùn)練AI檢測定制藥丸

你有沒有聽說過有人用人工智能來解決他們的行業(yè)問題,比如醫(yī)生用人工智能來識別癌細胞,閉路電視識別貨架上的產(chǎn)品,甚至是貓檢測器?這些“AI”背后的基本邏輯是自定義對象檢測。

在這個故事中,我們將探索如何通過向AI提供大量藥丸圖像來訓(xùn)練AI檢測定制藥丸。(不到30分鐘。

你可以在家里用一顆簡單的黃色藥丸在這里玩,或者訪問這里的代碼:https://github.com/manfye/react-tfjs-azure-objDetect。目標檢測目標檢測是一項計算機視覺任務(wù),涉及兩項主要任務(wù):在圖像中定位一個或多個對象,以及對圖像中的每個對象進行分類圖像分類與目標檢測(分類和定位)。

與圖像分類(圖2)相反,對象檢測的目標是通過邊界框和定位對象的類別來預(yù)測對象在圖像中的位置,輸出可以超過1個類別。自定義對象檢測目前,在線提供各種預(yù)訓(xùn)練的模型,如COCO-SSD,它能夠檢測80多種常用對象,如檢測人、鉛筆和智能手機。但是,這個模型不能滿足檢測定制對象的需要,例如,我是一名藥劑師,我想制作一個能夠在網(wǎng)絡(luò)攝像機中檢測和計數(shù)藥丸的web應(yīng)用程序。傳統(tǒng)上,要訓(xùn)練自定義對象,你需要將標簽圖像盡可能多地輸入訓(xùn)練框架,如tensorflow和pytorch。然后運行該框架,以獲得能夠檢測對象的最終訓(xùn)練模型。訓(xùn)練自定義對象檢測模型的流程:

目前,最先進的方法是使用Pytorch和tensorflow等訓(xùn)練框架來訓(xùn)練模型,但這種方法存在許多缺點,如計算密集、設(shè)置時間長、圖形卡要求高,不適合初學(xué)者。因此,出現(xiàn)了商業(yè)(可用的免費層)方法來訓(xùn)練模型。在本文中,我將展示如何使用Microsoft Azure Custom Vision方法來訓(xùn)練tensorflow.js對象檢測模型,只需單擊幾下。目標檢測模型訓(xùn)練Custom Vision是一項人工智能服務(wù),是Microsoft Azure應(yīng)用計算機視覺的端到端平臺。它為Azure用戶提供了一個免費的層來訓(xùn)練他們的對象檢測或圖像分類器模型,并將其作為API。對于免費層,它允許每個項目有多達5000張訓(xùn)練圖像,足夠大,可以檢測少數(shù)幾類對象。Azure自定義Vision的定價:

注冊完成后,單擊“新建項目”,單擊“新建”以創(chuàng)建新產(chǎn)品。創(chuàng)建新項目:

然后,創(chuàng)建一個新的資源組并選擇種類:“CustomVision,Training”和“F0”,以使用CustomVision Training的免費層創(chuàng)建新資源:

回到“創(chuàng)建新項目”頁面,你會注意到,一旦你選擇了資源,你就可以選擇項目類型和域,選擇“Object Detections”和 General (compact)。通過選擇壓縮,Microsoft Azure允許你以各種格式下載經(jīng)過訓(xùn)練的模型。

你將到達如下圖所示的訓(xùn)練平臺,單擊圖像上傳。自定義視覺訓(xùn)練平臺:

上傳未標記的圖像以進行標記。對于本文,我的藥丸圖像資源就在這里。[2]就我的案例而言,我上傳了大約50-100張用于訓(xùn)練的圖像。

接下來,逐個標記圖像(這是一個乏味的部分),幸運的是,Custom Vision確實為你提供了一個非常用戶友好的標記工具,可以簡化標記過程。

完成標記后,單擊“Train”按鈕并等待幾分鐘,你將得到以下結(jié)果:訓(xùn)練結(jié)果:

單擊導(dǎo)出并選擇Tensorflow,然后選擇Tensorflow.js導(dǎo)出。恭喜,你在Tf.js中擁有了第一個自定義對象檢測模型輸出經(jīng)過訓(xùn)練的模型:

使用React with Tensorflow.js檢測自定義對象

1.設(shè)置你的CreateReact應(yīng)用程序

通過終端中的以下命令創(chuàng)建Create React應(yīng)用程序:

npx create-react-app tfjs-azureObject

cd tfjs-azureObject

安裝tensorflow.js和Microsoft Customvision,如下所示:

npm install @tensorflow/tfjs

npm install @m(xù)icrosoft/customvision-tfjs

安裝react-webcam,如下所示:

npm install react-webcam

然后啟動應(yīng)用程序npm start

所有的代碼只會出現(xiàn)在App.js中,我只會顯示重要的代碼,完整的代碼可以參考我的GitHub存儲庫

2.導(dǎo)入所需的包

import React, { useEffect, useState, useRef } from "react";

import Webcam from "react-webcam";

import * as cvstfjs from "@m(xù)icrosoft/customvision-tfjs";

3.構(gòu)建用戶界面

此項目的UI包括:

按鈕-用于啟動檢測畫

布-用于繪制邊界框,以及

網(wǎng)絡(luò)攝像頭-用于輸入圖像/視頻//

image.png

image.png

注意:畫布和網(wǎng)絡(luò)攝像頭必須具有相同的大小和位置,才能在HTML畫布中進行繪制。

4.加載模型

將下載的模型提取到“Public”文件夾中,確保model.json與weights.bin一起正確放置在/model.json路徑中。要使用模型進行預(yù)測,代碼為:

async function predictionFunction() {

setVideoHeight(webcamRef.current.video.videoHeight);

setVideoWidth(webcamRef.current.video.videoWidth);

// 測試azure vision api

let model = new cvstfjs.ObjectDetectionModel();

await model.loadModelAsync("model.json");

const predictions = await model.executeAsync(

document.getElementById("img")

);

但是,當(dāng)預(yù)測的類必須顯示在照片中時,事情會變得復(fù)雜,這就是使用HTML畫布的原因。整個預(yù)測功能如下所示:

image.png

image.png

此函數(shù)將創(chuàng)建一個邊界框,在該框上方顯示檢測到的對象類。它包括4個部分,其中第一部分是清除繪制的HTML畫布,然后啟動對象的模型檢測。

如果模型檢測到對象,模型將返回預(yù)測數(shù)據(jù)。通過使用邊界框數(shù)據(jù),我們可以使用HTML畫布繪制邊界框。然后,500毫秒后重新運行整個功能。

最后

在本文中,我們將介紹如何使用Microsoft custom Vision層創(chuàng)建自定義對象檢測模型,這將大大減少創(chuàng)建自定義對象檢測模型的工作量和障礙(我認為減少了80%)。然后,我們使用react將該模型合并到Tensorflow.js中,并用不到100行代碼對整個web應(yīng)用程序進行編碼。

每個行業(yè)對自定義對象檢測的需求都很高,在本文中,我用創(chuàng)建了一個藥丸計數(shù)器,希望在了解自定義檢測技術(shù)后,它可以啟發(fā)你為你的行業(yè)創(chuàng)建更多的工具。

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    掃碼關(guān)注公眾號
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯
    x
    *文字標題:
    *糾錯內(nèi)容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網(wǎng)安備 44030502002758號