wpf esc key 检测不到_自己动手丰衣足食!想让你的车能检测和识别物体?试试这个实验...
全文共7733字,預(yù)計(jì)學(xué)習(xí)時(shí)長(zhǎng)23分鐘
來源:Pexels
幾個(gè)月前,筆者有一些想法,想讓自己的車能檢測(cè)和識(shí)別物體。筆者之所以有如此想法,主要是因?yàn)橐呀?jīng)見識(shí)了特斯拉的能力,雖然并不想馬上買一輛特斯拉(不得不說,Model 3看起來一天比一天誘人),但筆者認(rèn)為應(yīng)該嘗試實(shí)現(xiàn)自己的夢(mèng)想。
所以,筆者實(shí)施了這個(gè)想法。
動(dòng)圖來自結(jié)果的預(yù)測(cè)視頻。
下文記錄了項(xiàng)目中的每個(gè)步驟。如果只想看到檢測(cè)器運(yùn)行的視頻或者GitHub鏈接,請(qǐng)?zhí)降撞俊?/p>
第一步,確定項(xiàng)目范圍
起初,筆者思考了這樣一個(gè)系統(tǒng)應(yīng)該有什么能力。如果說筆者這輩子學(xué)到了什么,那就是從小范圍開始永遠(yuǎn)是最好的策略:小步走。所以,除了車道保持任務(wù)(每個(gè)人都已經(jīng)做過),筆者只是想在駕駛時(shí)簡(jiǎn)單地識(shí)別車牌。此識(shí)別過程包括兩個(gè)步驟:
1、檢測(cè)車牌。
2、識(shí)別每個(gè)車牌邊框內(nèi)的文字。
筆者認(rèn)為,如果能做到這一點(diǎn),那么繼續(xù)進(jìn)行其他任務(wù)應(yīng)該是相當(dāng)容易的(比如確定碰撞風(fēng)險(xiǎn)、距離等)。甚至可以創(chuàng)建一個(gè)向量空間來表示環(huán)境,這就十分炫酷了。
在過于擔(dān)心細(xì)節(jié)之前,筆者需要:
· 一個(gè)機(jī)器學(xué)習(xí)模型,將未標(biāo)記圖像作為輸入并檢測(cè)車牌。
· 一些硬件。粗略地說,需要一個(gè)連接到一個(gè)或多個(gè)攝像機(jī)的計(jì)算機(jī)系統(tǒng)來查詢模型。
首先著手構(gòu)建對(duì)象檢測(cè)的正確模型。
第二步,選擇正確模型
經(jīng)過仔細(xì)研究,決定采用以下機(jī)器學(xué)習(xí)模型:
1. YOLOv3——這是迄今為止速度最快的模型,具有可與其他先進(jìn)模型相媲美的映射。這個(gè)模型是用來檢測(cè)對(duì)象的。
2. CRAFT文本檢測(cè)器——用于檢測(cè)圖像中的文本。
3. CRNN ——一個(gè)循環(huán)的CNN(卷積神經(jīng)網(wǎng)絡(luò))模型。它必須進(jìn)行循環(huán),因?yàn)樗枰獙z測(cè)到的字符按正確的順序組成單詞。
這三個(gè)模型如何協(xié)同?操作流程如下:
1. 首先,YOLOv3模型在攝像頭接收到的每一幀中檢測(cè)每個(gè)車牌的邊框。不建議預(yù)測(cè)的邊框非常精確,超過檢測(cè)到的對(duì)象的范圍較為合適。如果范圍太狹窄,那么可能會(huì)影響后續(xù)進(jìn)程的性能。這與下面的模型是并行不悖的。
2. CRAFT文本檢測(cè)器從YOLOv3接收裁剪后的車牌。如果裁剪的幀太狹窄,那么很有可能會(huì)漏掉車牌的部分文字,導(dǎo)致預(yù)測(cè)失敗。但當(dāng)邊框較大時(shí),可以讓CRAFT模型檢測(cè)字的位置。這可以非常精確地預(yù)測(cè)每個(gè)字的位置。
3. 最后,可以將CRAFT中每個(gè)單詞的邊框輸入CRNN模型來預(yù)測(cè)實(shí)際單詞。
有了基本的模型架構(gòu),接下來可以解決硬件了。
第三步,設(shè)計(jì)硬件
當(dāng)筆者知道自己需要一些簡(jiǎn)單的東西時(shí),便想起了舊愛:樹莓派。它有足夠的計(jì)算能力來用合適的幀數(shù)對(duì)幀進(jìn)行預(yù)處理,它也有Pi Camera。Pi Camera是樹莓派的攝像機(jī)系統(tǒng)。它有一個(gè)非常棒的存儲(chǔ)庫(kù),而且非常成熟。
至于互聯(lián)網(wǎng)接入,可以只用一個(gè)EC25-E來實(shí)現(xiàn)4G接入,也有來自筆者曾經(jīng)的項(xiàng)目的一個(gè)GPS模塊嵌入。
筆者決定從外殼開始。把它掛在汽車的后視鏡上應(yīng)該會(huì)很好用,所以最后設(shè)計(jì)了一個(gè)雙組件支撐結(jié)構(gòu):
1. 后視鏡一側(cè),樹莓派+GPS模塊+4G模塊。可以查看筆者關(guān)于EC25-E模塊的文章,看看筆者對(duì)GPS和4G天線的選擇。
2. 在另一側(cè),將用一個(gè)球關(guān)節(jié)臂來支撐Pi Camera進(jìn)行定位。
這些支架/外殼將用筆者信任的Prusa i3 MK3S 3D打印機(jī)打印。
圖1—樹莓派+4G/GPS防護(hù)外殼
圖2—用球關(guān)節(jié)支撐Pi Camera進(jìn)行定位
圖1和圖2顯示了實(shí)施時(shí)的結(jié)構(gòu)。請(qǐng)注意,C型夾持器是可插拔的,所以已經(jīng)打印的支架不附帶樹莓派的外殼和Pi Camera的支架。它們有一個(gè)插座,可將支架插入其中。如某一個(gè)讀者決定復(fù)制該項(xiàng)目,這是非常有用的。只需調(diào)整支架,使其適應(yīng)汽車后視鏡。目前,筆者車上(是一臺(tái)路虎神行者)的夾持器功能良好。
圖3—PiCamera支架結(jié)構(gòu)的側(cè)視圖
圖4—Pi Camera支架結(jié)構(gòu)以及樹莓派夾持器的正視圖
圖5—對(duì)攝像機(jī)視野的預(yù)測(cè)
圖6—4G/GPS模塊、Pi Camera和樹莓派的嵌入式系統(tǒng)的特寫照片
顯然,這些需要一些時(shí)間來建模。筆者需要幾次迭代來使結(jié)構(gòu)更加堅(jiān)固。筆者在200微米的層高使用了PETG材料。PETG能夠在80-90攝氏度中運(yùn)行,并且抗紫外線輻射性很強(qiáng),雖然不如ASA。
第四步,訓(xùn)練模型
一旦有了硬件,就開始訓(xùn)練模型。
不出所料,最好不要自己重新創(chuàng)造,而是盡可能重復(fù)使用別人的。這就是遷移學(xué)習(xí)的全部?jī)?nèi)容——利用來自其他非常龐大的數(shù)據(jù)集的見解。筆者幾天前在這篇文章中讀到了關(guān)于遷移學(xué)習(xí)的一個(gè)例子。文中談到了一個(gè)哈佛醫(yī)學(xué)院的附屬團(tuán)隊(duì),該團(tuán)隊(duì)能夠微調(diào)一個(gè)模型,“從胸片中預(yù)測(cè)長(zhǎng)期死亡率,包括非癌癥死亡”。他們只有5萬張標(biāo)記圖像的小數(shù)據(jù)集,但是使用的預(yù)訓(xùn)練模型(Inception-v4)是在大約1400萬張圖像上訓(xùn)練的。他們只花了不到一小部分的原始模型所需的訓(xùn)練成本(時(shí)間和金錢方面),而且已經(jīng)達(dá)到了相當(dāng)高的精確度。
筆者也打算這么做。
YOLOv3
筆者在網(wǎng)上尋找預(yù)先訓(xùn)練過的車牌模型,沒有最初預(yù)期的那么多,但找到了一個(gè)在大約3600張車牌圖像上訓(xùn)練過的模型。它并不多,但也比什么都沒有強(qiáng),而且除此之外,它也是在Darknet的預(yù)訓(xùn)練模型上訓(xùn)練的,可以使用。
而且因?yàn)楣P者已經(jīng)有了一個(gè)可以錄制的硬件系統(tǒng),所以筆者決定在鎮(zhèn)上駕駛幾個(gè)小時(shí),收集幀,來對(duì)上述模型進(jìn)行微調(diào)。
筆者使用VOTT對(duì)收集到的幀進(jìn)行注釋(當(dāng)然還有車牌)。最后創(chuàng)建了一個(gè)由534幅圖像組成的小數(shù)據(jù)集,其中帶有標(biāo)記的車牌邊框。
然后筆者找到了YOLOv3網(wǎng)絡(luò)在Keras上的應(yīng)用。用它來訓(xùn)練數(shù)據(jù)集,然后把筆者的模型再放到這個(gè)庫(kù)中,這樣其他人也可以使用它。筆者在測(cè)試集上得到的映射是90%,在如此小的數(shù)據(jù)集上能有如此表現(xiàn)已經(jīng)很不錯(cuò)了。
CRAFT以及CRNN
在無數(shù)次嘗試尋找一種好的網(wǎng)絡(luò)來識(shí)別文本之后,筆者偶然發(fā)現(xiàn)了keras-ocr,它是CRAFT和CRNN包的一個(gè)靈活版本。而且它還附帶了他們預(yù)先訓(xùn)練好的模型。那太棒了。筆者決定不對(duì)模型進(jìn)行微調(diào),讓它們保持原樣。
最重要的是,用keras-ocr預(yù)測(cè)文本非常簡(jiǎn)單。基本上只是幾行代碼。可以去他們的主頁(yè)看看是怎么做的。
第五步,將筆者的車牌部署到檢測(cè)器模型
可以采用兩種主要的模型部署方法:
1、在本地處理所有推理。
2、在云端處理所有推理。
這兩種方法都有一些困難。第一種方法意味著要有一個(gè)龐大的“大腦”計(jì)算機(jī)系統(tǒng),這很復(fù)雜而且昂貴。第二個(gè)挑戰(zhàn)涉及延時(shí)和基礎(chǔ)設(shè)施,特別是用GPU進(jìn)行推理。
筆者在研究中,偶然發(fā)現(xiàn)了一個(gè)叫做cortex的開源項(xiàng)目。這是相當(dāng)新鮮的,但它作為人工智能開發(fā)工具下一步的進(jìn)化肯定是有一定意義的。
從根本上說,cortex是一個(gè)用于將機(jī)器學(xué)習(xí)模型部署為一鍵切換的生產(chǎn)web服務(wù)的平臺(tái)。這意味著筆者可以專注于應(yīng)用程序,剩下的事情交給cortex來管理。在本例中,它完成了AWS上的所有配置,而筆者要做的唯一一件事就是使用模板模型來編寫預(yù)測(cè)器。更牛的是,每個(gè)模型只要寫幾十行即可。
這是GitHub庫(kù)中cortex在終端中的作用。除了美麗和簡(jiǎn)單,筆者想不出還能用什么詞來形容:
圖源: Cortex GitHub
由于這個(gè)計(jì)算機(jī)視覺系統(tǒng)不是自動(dòng)駕駛使用的,延遲對(duì)筆者來說就不那么重要了,筆者可以用cortex來解決這個(gè)問題。如果它是自動(dòng)駕駛系統(tǒng)的一部分,那么使用通過云提供商提供的服務(wù)就不是一個(gè)好主意,至少目前不是。
使用cortex部署機(jī)器學(xué)習(xí)模型僅需以下步驟:
1. 確定cortex.yaml文件,這是API的配置文件。每個(gè)API將處理一種類型的任務(wù)。筆者指定的yolov3 API用于檢測(cè)指定幀上車牌的邊框,而crnn API用于通過CRAFT文本檢測(cè)器和CRNN來預(yù)測(cè)車牌。
2. 確定每個(gè)API的預(yù)測(cè)器。基本上,就是在cortex中定義一個(gè)特定類的預(yù)測(cè)法以接收一個(gè)有效負(fù)載(所有檢測(cè)的部分已經(jīng)由平臺(tái)處理),使用有效負(fù)載預(yù)測(cè)結(jié)果,然后返回預(yù)測(cè)。就這么簡(jiǎn)單!
在不深入討論筆者是如何完成這一工作的具體細(xì)節(jié)的情況下(為了保持文章的適當(dāng)長(zhǎng)度),這里有一個(gè)經(jīng)典虹膜數(shù)據(jù)集的預(yù)測(cè)器示例。cortex實(shí)現(xiàn)這兩個(gè)API的鏈接可以在這里的存儲(chǔ)庫(kù)中找到,這個(gè)項(xiàng)目的所有其他資源都在本文末尾。
#predictor.pyimport boto3import picklelabels = ["setosa", "versicolor","virginica"]class PythonPredictor: def __init__(self, config): s3 = boto3.client("s3") s3.download_file(config["bucket"], config["key"],"model.pkl") self.model =pickle.load(open("model.pkl", "rb")) def predict(self, payload): measurements = [ payload["sepal_length"], payload["sepal_width"], payload["petal_length"], payload["petal_width"], ] label_id =self.model.predict([measurements])[0] return labels[label_id]然后做一個(gè)預(yù)測(cè),只需使用curl,就像這樣
curl http://***.amazonaws.com/iris-classifier -X POST -H "Content-Type:application/json" -d '{"sepal_length": 5.2,"sepal_width": 3.6, "petal_length": 1.4,"petal_width": 0.3}'做出的預(yù)測(cè)就像這個(gè)“Setosa”。非常簡(jiǎn)單!
第六步,開發(fā)客戶端
通過cortex完成部署,筆者可以繼續(xù)設(shè)計(jì)客戶端——這是比較棘手的部分。
筆者想出了以下結(jié)構(gòu):
1. 以30幀每秒的速度從Pi Camera以相當(dāng)高的分辨率(800x450或480x270)收集幀,并將每個(gè)幀推入公用隊(duì)列。
2. 在一個(gè)單獨(dú)的進(jìn)程中,筆者將從隊(duì)列中取出幀,并將它們分發(fā)給不同工作線程。
3. 每個(gè)工作線程(或筆者所稱的推理線程)都將向cortex API發(fā)出API請(qǐng)求。首先,向yolov3API發(fā)出一個(gè)請(qǐng)求,然后,如果檢測(cè)到任何車牌,則向crnn API發(fā)出另一個(gè)帶有一批裁剪過的車牌的請(qǐng)求。作出的響應(yīng)將包含文本格式的預(yù)測(cè)車牌。
4. 將每個(gè)檢測(cè)到的車牌(有或無識(shí)別的文本)推送到另一個(gè)隊(duì)列,最終將其廣播到瀏覽器頁(yè)面。同時(shí),還將車牌預(yù)測(cè)推送到另一個(gè)隊(duì)列,以便稍后將它們保存到磁盤(csv格式)。
5. 廣播隊(duì)列將接收一串無序幀。它的用戶的任務(wù)是在每次向客戶端廣播新幀時(shí)將它們放在一個(gè)非常小的緩沖區(qū)中(只有幾個(gè)幀大小),從而重新排序它們。這個(gè)用戶正在另一個(gè)進(jìn)程上單獨(dú)運(yùn)行。該用戶還必須嘗試將隊(duì)列上的大小保持在指定值,以便幀能夠以一致的幀數(shù)(即30幀每秒)顯示。顯然,如果隊(duì)列大小減少,那么幀數(shù)就會(huì)成比例減少,反之亦然,當(dāng)隊(duì)列大小增加時(shí),幀數(shù)也會(huì)成比例增加。最初,筆者想實(shí)現(xiàn)一個(gè)滯后函數(shù),但筆者認(rèn)為它會(huì)給工作流造成極大影響。
6. 同時(shí),主進(jìn)程中會(huì)有另一個(gè)線程運(yùn)行,從另一個(gè)隊(duì)列和GPS數(shù)據(jù)中提取預(yù)測(cè)。當(dāng)客戶端接收到終止信號(hào)時(shí),預(yù)測(cè)、GPS數(shù)據(jù)和時(shí)間也轉(zhuǎn)存到csv文件中。
下圖是客戶端與AWS上的云API相關(guān)的流程圖。
圖7——cortex提供的云API相關(guān)的客戶端流程圖
在本例中,客戶端是樹莓派,推理請(qǐng)求發(fā)送到的云API是由AWS(Amazon Web Services)上的cortex提供的。
客戶端的源代碼也可以在其GitHub 存儲(chǔ)庫(kù)中進(jìn)行查看。
必須克服的一個(gè)困難是4G的帶寬。最好降低此應(yīng)用程序所需的帶寬,以減少可能的問題或?qū)捎脭?shù)據(jù)的過度使用。筆者決定在Pi Camera上使用非常低的分辨率:480x270(可以使用小分辨率,因?yàn)镻i Camera的視野非常窄,所以仍然可以很容易地識(shí)別車牌)。然而,即使在該分辨率下,幀的JPEG在10兆比特處為約100千字節(jié)。乘以30幀/秒,得到3000千字節(jié),大約是24兆字節(jié)/秒,這還不包括HTTPoverhead——這是一個(gè)很大的數(shù)目。
筆者采用了以下策略:
· 將寬度降至416像素,這正是YOLOv3模型調(diào)整圖像大小的結(jié)果。尺寸保持完好。
· 將圖像轉(zhuǎn)換為灰度。
· 移除圖像頂部45%的部分。一般認(rèn)為車牌不會(huì)出現(xiàn)在車架的頂部,因?yàn)槠嚥粫?huì)飛起來,對(duì)吧?從筆者觀察到的情況來看,剪掉45%的圖像并不會(huì)影響預(yù)測(cè)器的性能。
· 再次將圖像轉(zhuǎn)換為JPEG,但質(zhì)量較低。
得到的框架大小約為7-10KB,非常好。這相當(dāng)于2.8 兆字節(jié)/秒。但是算上所有的overhead,它大約是3.5兆字節(jié)/秒(也包括響應(yīng))。
對(duì)于crnn API,裁剪后的車牌根本不需要太多,即使不用壓縮技巧。每一部分大約為2-3千字節(jié)。
總而言之,要以30幀/秒的速度運(yùn)行,推理API所需的帶寬約為6兆字節(jié)/秒。這個(gè)數(shù)字可以接受。
結(jié)論
這確實(shí)行之有效!
上述是通過cortex運(yùn)行推理的實(shí)時(shí)示例。筆者需要大約20個(gè)配備GPU的實(shí)例才能順利運(yùn)行。根據(jù)集群的延遲,可能需要更多或更少的實(shí)例。從捕獲幀到廣播到瀏覽器窗口之間的平均延遲約為0.9秒,而且推理還可以更深入,這真是太神奇了。
文本識(shí)別部分可能不是最好的,但它至少證明了這一點(diǎn)——通過提高視頻的分辨率,或者通過縮小攝像機(jī)的視野,或者通過微調(diào),它可以精確得多。
高GPU可以通過優(yōu)化來減少。例如,轉(zhuǎn)換模型以使用混合/全半精度(FP16/BFP16)。一般來說,使用混合精度的模型對(duì)精度的影響最小,因此并不需要進(jìn)行太多的權(quán)衡。
T4和V100 GPU具有特殊的張量核心,用于在半精度類型上進(jìn)行超快的矩陣乘法。在T4上,半精度運(yùn)算比單精度運(yùn)算的加速比約為8倍,在V100上,半精度運(yùn)算比單精度運(yùn)算的加速比約為10倍。這是一個(gè)數(shù)量級(jí)的差異,意味著一個(gè)已轉(zhuǎn)換為使用單精度/混合精度的模型可以少花多達(dá)8倍的時(shí)間來進(jìn)行推理,而在V100上則少花十分之一的時(shí)間。
筆者還沒有轉(zhuǎn)換模型以使用單精度/混合精度,因?yàn)檫@超出了這個(gè)項(xiàng)目的范圍。就筆者而言,這只是一個(gè)優(yōu)化問題。筆者最有可能在cortex 0.14版本發(fā)布時(shí)完成這項(xiàng)工作(如果有真正的多進(jìn)程支持和基于隊(duì)列的自動(dòng)縮放),這樣筆者也可以利用多進(jìn)程網(wǎng)絡(luò)服務(wù)器。
總而言之,如果所有優(yōu)化都到位,將集群的規(guī)模從20個(gè)配備GPU的實(shí)例減少到只有一個(gè)實(shí)際上是可行的。如果優(yōu)化得當(dāng),甚至連一個(gè)配備GPU的實(shí)例都不用。
為了更加節(jié)約成本,在AWS上使用Elastic Inference可以減少高達(dá)75%的成本,這是一個(gè)很大的數(shù)目!形象地說,可以花一毛錢就擁有一個(gè)用于實(shí)時(shí)處理流的管道。不幸的是,目前cortex還無法支持Elastic Inference,但可以看到這一點(diǎn)在不久的將來就能實(shí)現(xiàn),因?yàn)樗呀?jīng)進(jìn)入了他們的視野中。參見cortexlabs/cortex/issues/618。
注意:YOLOv3和CRNN模型,可以通過在更大的數(shù)據(jù)集(大約50-100K樣本)上對(duì)其進(jìn)行微調(diào)來改進(jìn)。此處,幀的尺寸還可以進(jìn)一步減小,以減少數(shù)據(jù)的使用,而不對(duì)精確度造成很大影響:“補(bǔ)償某處,以便從其他地方取走”。這與轉(zhuǎn)換所有這些模型以使用半精度類型(以及可能的Elastic Inference)相結(jié)合,可以形成一種非常有效或降低成本的推理機(jī)器。
更新
來源:Pexels
cortex的0.14版本支持網(wǎng)絡(luò)服務(wù)器的多進(jìn)程工作器,筆者能夠?qū)olov3 API的GPU實(shí)例數(shù)量從8個(gè)減少到2個(gè),將crnn API(在CRNN和CRAFT模型上運(yùn)行推理)的GPU實(shí)例數(shù)量從12個(gè)減少到10個(gè)。這意味著實(shí)例的總數(shù)減少了40%,這是一個(gè)非常好的增益。所有這些實(shí)例每個(gè)都配備了單個(gè)T4 GPU和4個(gè)vCPU。
筆者發(fā)現(xiàn)最需要計(jì)算的模型是CRAFT模型,它是建立在約138兆的VGG-16模型之上的。請(qǐng)記住,由于在一次拍攝中可以有多個(gè)檢測(cè)到的車牌,因此通常需要對(duì)每一幀進(jìn)行多次推理。這大大增加了對(duì)它的計(jì)算需求。從理論上講,應(yīng)該取消CRAFT模型,并且改進(jìn)(微調(diào))CRNN模型,以更好地識(shí)別車牌。這樣,crnn API就可以縮小很多——只縮小到1或2個(gè)實(shí)例。
結(jié)語(yǔ)(包含如何將5G應(yīng)用其中)
筆者看到設(shè)備開始越來越依賴云計(jì)算,特別是對(duì)于計(jì)算能力有限的邊緣設(shè)備。而且由于5G目前正在部署,理論上應(yīng)該會(huì)讓云更接近這些受計(jì)算限制的設(shè)備。因此,云的影響力應(yīng)該隨之增長(zhǎng)。5G網(wǎng)絡(luò)越可靠、越普及,人們就越有信心將所謂的關(guān)鍵任務(wù)(比如自動(dòng)駕駛汽車)的計(jì)算卸載到云端。
筆者在這個(gè)項(xiàng)目中學(xué)到的另一件事是,隨著在云中部署機(jī)器學(xué)習(xí)模型的流線型平臺(tái)的出現(xiàn),使得更多事情變得如此容易。5年前,這將是一個(gè)相當(dāng)大的挑戰(zhàn):但現(xiàn)在,一個(gè)人就可以在相對(duì)較短的時(shí)間內(nèi)做這么多事情。
資源
·查看所有3D打印夾持器的SLDPRT/SLDASM/STL/gcode。https://www.dropbox.com/sh/fw16vy1okrp606y/AAAwkoWXODmoaOP4yR-z4T8Va?dl=0
·查看本項(xiàng)目的客戶端實(shí)施。https://github.com/RobertLucian/cortex-license-plate-reader-client
·查看本項(xiàng)目的cortex實(shí)施。https://github.com/cortexlabs/cortex/tree/master/examples/tensorflow/license-plate-reader
·查看YOLOv3模型的Keras存儲(chǔ)庫(kù)。https://github.com/experiencor/keras-yolo3
·查看CRAFT 文本檢測(cè)器+ CRNN 文本識(shí)別器的存儲(chǔ)庫(kù)。https://github.com/faustomorales/keras-ocr
·查看歐洲車牌數(shù)據(jù)集(由筆者的Pi Camera捕獲的534個(gè)樣本組成)。https://github.com/RobertLucian/license-plate-dataset
·查看可以找到Keras(License_Plate.h5)和SavedModel(YOLOv3文件夾/zip)格式的YOLOv3模型。https://www.dropbox.com/sh/4ltffycnzfeul01/AACe85GoIzlmjEnIhuh5JQPma?dl=0
留言點(diǎn)贊關(guān)注
我們一起分享AI學(xué)習(xí)與發(fā)展的干貨
如轉(zhuǎn)載,請(qǐng)后臺(tái)留言,遵守轉(zhuǎn)載規(guī)范
總結(jié)
以上是生活随笔為你收集整理的wpf esc key 检测不到_自己动手丰衣足食!想让你的车能检测和识别物体?试试这个实验...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小白也能看懂的缓存雪崩、穿透、击穿
- 下一篇: java 可选参数_超干货详解:kotl