訂閱
糾錯(cuò)
加入自媒體

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

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

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

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

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

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

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

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

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

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

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

接下來,逐個(gè)標(biāo)記圖像(這是一個(gè)乏味的部分),幸運(yùn)的是,Custom Vision確實(shí)為你提供了一個(gè)非常用戶友好的標(biāo)記工具,可以簡(jiǎn)化標(biāo)記過程。

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

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

使用React with Tensorflow.js檢測(cè)自定義對(duì)象

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

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

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

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)建用戶界面

此項(xiàng)目的UI包括:

按鈕-用于啟動(dòng)檢測(cè)畫

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

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

image.png

image.png

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

4.加載模型

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

async function predictionFunction() {

setVideoHeight(webcamRef.current.video.videoHeight);

setVideoWidth(webcamRef.current.video.videoWidth);

// 測(cè)試azure vision api

let model = new cvstfjs.ObjectDetectionModel();

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

const predictions = await model.executeAsync(

document.getElementById("img")

);

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

image.png

image.png

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

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

最后

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

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

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

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

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

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