色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于YoloV3對衛星圖像進行儲油罐容積占用率的研究

電子設計 ? 來源: 電子設計 ? 作者: 電子設計 ? 2020-12-10 15:01 ? 次閱讀
來源:深度學習計算機視覺
作者:磐懟懟

在1957年以前,地球上只有一顆天然衛星:月球。1957年10月4日,蘇聯發射了世界上第一顆人造衛星,從那時起,來自40多個國家大約有8900顆衛星發射升空。

這些衛星可以幫助我們進行監視、通信、導航等等。國家可以利用衛星監視另一個國家的土地及其動向,估計其經濟和實力,然而所有的國家都互相隱瞞著他們的信息

同理,全球石油市場也并非完全透明,幾乎所有的產油國都在努力隱藏著自己的總產量、消費量和儲存量,各國這樣做是為了間接地向外界隱瞞其實際經濟,并增強其國防系統的能力,這種做法可能會對其他國家造成威脅。

出于這個原因,許多初創公司,如Planet和Orbital Insight,都通過衛星圖像來關注各國的此類活動。通過收集儲油罐的衛星圖像來估算石油儲量。

但問題是,如何僅憑衛星圖像來估計儲油罐的體積呢?首先第一個條件是儲油罐為浮頂油罐,因為只有這樣,衛星才能檢測到。這種特殊類型的油罐是專門為儲存大量石油產品而設計的,如原油或凝析油,它由頂蓋組成,直接位于油的頂部,隨著油箱中油量的增加或下降,并在其周圍形成兩個陰影。如下圖所示,陰影位于北側

(外部陰影)是指儲罐的總高度,而儲罐內的陰影(內部陰影)表示浮頂的深度,體積可估計計算為1-(內部陰影區域/外部陰影區域)。

在本文,我們將使用Tensorflow2.x框架,在衛星圖像的幫助下,使用python從零開始實現一個完整的模型來估計儲油罐的占用量。

GitHub倉庫

本文的所有內容和整個代碼都可以在這個github存儲庫中找到

https://github.com/mdmub0587/...

以下是本文目錄。我們會逐一探索。

目錄

  1. 問題陳述、數據集和評估指標
  2. 現有方法
  3. 相關研究工作
  4. 有用的博客和研究論文
  5. 我們的貢獻
  6. 探索性數據分析(EDA)
  7. 數據擴充
  8. 數據預處理、擴充和TFRecords
  9. 基于YoloV3的目標檢測
  10. 儲量估算
  11. 結果
  12. 結論
  13. 參考引用

1.問題陳述、數據集和評估指標

問題陳述:

利用衛星圖像進行浮頂油罐的檢測和儲油量的估算,然后將圖像塊重新組合成具有儲油量估計的全圖像。

數據集:

數據集鏈接:https://www.kaggle.com/toward...

該數據集包含一個帶注釋的邊界框,衛星圖像是從谷歌地球(google earth)拍攝的,它包含有世界各地的工業區。數據集中有2個文件夾和3個文件,讓我們逐一看看。

  • large/_images: 這是一個文件夾,包含100個衛星原始圖像,每個大小為4800x4800,所有圖像都以id/_large.jpg格式命名。
  • Image/_patches: Image/_patches目錄包含從大圖像生成的512x512大小的子圖,每個大的圖像被分割成100個512x512大小的子圖,兩個軸上的子圖之間有37個像素的重疊,生成圖像子圖的程序以id/_row/_column.jpg格式命名
  • labels.json: 它包含所有圖像的標簽。標簽存儲為字典列表,每個圖像對應一個字典,不包含任何浮頂罐的圖像將被標記為“skip”,邊界框標簽的格式為邊界框四個角的(x,y)坐標。
  • labels/_coco.json: 它包含與前一個文件相同的標簽的COCO標簽格式。在這里,邊界框的格式為[x/_min, y/_min, width, height].
  • large/_image/_data.csv: 它包含大型圖像文件的元數據,包括每個圖像的中心坐標和海拔高度。

評估指標:

對于儲油罐的檢測,我們將使用每種儲油罐的平均精度(Average Precision,AP)和各種儲油罐的mAP(Mean Average Precision,平均精度)來作為評估指標。浮頂罐的估計容積沒有度量標準。

mAP 是目標檢測模型的標準評估指標。mAP 的詳細說明可以在下面的youtube播放列表中找到

https://www.youtube.com/watch?list=PL1GQaVhO4f/_jE5pnXU/_Q4MSrIQx4wpFLM&v=e4G9H18VYmA

2.現有方法

Karl Keyer [1]在他的存儲庫中使用RetinaNet來完成儲油罐探測任務。他從頭開始創建模型,并將生成的錨框應用于該數據集,他的研究使得浮頂罐的平均精度(AP)達到76.3%,然后他應用陰影增強和像素閾值法來計算它的體積。

據我所知,這是互聯網上唯一可用的方法。

3.相關研究工作

Estimating the Volume of Oil Tanks Based on High-Resolution Remote Sensing Images [2]:

這篇文章提出了一種基于衛星圖像的油罐容量/容積估算方法。為了計算一個儲油罐的總容積,他們需要儲油罐的高度和半徑。為了計算高度,他們使用了與投影陰影長度的幾何關系,但是計算陰影的長度并不容易,為了突出陰影使用了HSV(即色調飽和度值)顏色空間,因為通常陰影在HSV顏色空間中具有高飽和度,然后采用基于亞像素細分定位(sub-pixel subdivision positioning)的中值法來計算陰影長度,最后利用Hough變換算法得到油罐半徑。

在本文的相關工作中,提出了基于衛星圖像的建筑物高度計算方法。

4.有用的博客和研究論文

A Beginner’s Guide To Calculating Oil Storage Tank Occupancy With Help Of Satellite Imagery [3]:

本博客作者為TankerTracker.com,其中的一項工作是利用衛星圖像跟蹤幾個感興趣的地理位置的原油儲存情況。

在這篇博客中,他們詳細描述了儲油罐的外部和內部陰影如何幫助我們估計其中的石油含量,還比較了衛星在特定時間和一個月后拍攝的圖像,顯示了一個月來儲油罐的變化。這個博客給了我們一個直觀的知識,即如何估計量。

A Gentle Introduction to Object Recognition With Deep Learning [4] :

本文會介紹對象檢測初學者頭腦中出現的最令人困惑的概念。首先,描述了目標分類、目標定位、目標識別和目標檢測之間的區別,然后討論了一些最新的深度學習算法來展開目標識別任務。

對象分類是指將標簽分配給包含單個對象的圖像,而對象定位是指在圖像中的一個或多個對象周圍繪制一個邊界框,目標檢測任務結合了目標分類和定位。這意味著這是一個更具挑戰性/復雜的任務,首先通過本地化技術在感興趣對象(OI)周圍繪制一個邊界框,然后借助分類為每個OI分配一個標簽。目標識別是上述所有任務的集合(即分類、定位和檢測)。


最后,本文還討論了兩種主要的目標檢測算法/模型:Region-Based Convolutional Neural Networks (R-CNN)和You Only Look Once (YOLO)。

Selective Search for Object Recognition [5]:

在目標檢測任務中,最關鍵的部分是目標定位,因為目標分類是在此基礎上進行的,它依賴于定位所輸出的目標區域(簡稱區域建議)。更完美的定位可以實現更完美的目標檢測。選擇性搜索是一種新興的算法,在一些物體識別模型中被用于物體定位,如R-CNN和Fast-R-CNN。

該算法首先使用高效的基于圖的圖像分割方法生成輸入圖像的子段,然后使用貪婪算法將較小的相似區域合并為較大的相似區域。分段相似性基于顏色、紋理、大小和填充四個屬性。

Region Proposal Network — A detailed view[6]:

RPN(Region-proposition Network)由于其比傳統選擇性搜索算法更快而被廣泛地應用于目標定位,它從特征圖中學習目標的最佳位置,就像CNN從特征圖中學習分類一樣。

它負責三個主要任務,首先生成錨定框(每個特征映射點生成9個不同形狀的錨定框),然后將每個錨定框分類為前景或背景(即是否包含對象),最后學習錨定框的形狀偏移量以使其適合對象。

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[7]:

Faster R-CNN模型解決了前兩個相關模型(R-CNN和Fast R-CNN)的所有問題,并使用RPN作為區域建議生成器。它的架構與Fast R-CNN完全相同,只是它使用了RPN而不是選擇性搜索,這使得它比Fast R-CNN快34倍。

Real-time Object Detection with YOLO, YOLOv2, and now YOLOv3 [8]:

在介紹Yolo系列模型之前,讓我們先看一下首席研究員約瑟夫·雷德曼在Ted演講上的演講。

https://youtu.be/Cgxsv1riJhI

這個模型在對象檢測模型列表中占據首位的原因有很多,然而,最主要的原因是它的牢固性,它的推理時間非常短,這是為什么它很容易匹配視頻的正常速度(即25fps)并應用于實時數據的原因。

與其他對象檢測模型不同,Yolo模型具有以下特性。

  • 單神經網絡模型(即分類和定位任務都將從同一個模型中執行):以一張照片作為輸入,直接預測每個邊界框的邊界框和類標簽,這意味著它只看一次圖像。
  • 由于它對整個圖像而不是圖像的一部分執行卷積,因此它產生的背景錯誤非常少。
  • YOLO學習對象的一般化表示。在對自然圖像進行訓練和藝術品測試時,YOLO的性能遠遠超過DPM和R-CNN等頂級檢測方法。由于YOLO具有高度的通用性,所以當應用于新的域或意外的輸入時,它不太可能崩潰。

是什么讓YoloV3比Yolov2更好。

  • 如果你仔細看一下yolov2論文的標題,那就是“YOLO9000: Better, Faster, Stronger”。yolov3比yolov2更好嗎?答案是肯定的,它更好,但不是更快更強,因為體系的復雜性增加了。
  • Yolov2使用了19層DarkNet架構,沒有任何殘差塊、skip連接和上采樣,因此它很難檢測到小對象,然而在Yolov3中,這些特性被添加了,并且使用了在Imagenet上訓練的53層DarkNet網絡,除此之外,還堆積了53個卷積層,形成了106個卷積層結構。

  • Yolov3在三種不同的尺度上進行預測,首先是大對象的13X13網格,其次是中等對象的26X26網格,最后是小對象的52X52網格。
  • YoloV3總共使用9個錨箱,每個標度3個,用K均值聚類法選出最佳錨盒。
  • Yolov3可以對圖像中檢測到的對象執行多標簽分類,通過logistic回歸預測對象置信度和類預測。

5.我們的貢獻

我們的問題陳述包括兩個任務,第一個是浮頂罐的檢測,另一個是陰影的提取和已識別罐容積的估計。第一個任務是基于目標檢測,第二個任務是基于計算機視覺技術。讓我們描述一下解決每個任務的方法。

儲罐檢測:

我們的目標是估算浮頂罐的容積。我們可以為一個類建立目標檢測模型,但是為了減少一個模型與另一種儲油罐(即其他類型儲油罐)的混淆,并使其具有魯棒性,我們提出了三個類別的目標檢測模型。使用帶有轉移學習的YoloV3進行目標檢測是因為它更容易在機器上訓練,此外為了提高度量分值,還采用了數據增強的方法。

陰影提取和體積估計:

陰影提取涉及許多計算機視覺技術,由于RGB顏色方案對陰影不敏感,必須先將其轉換成HSV和LAB顏色空間,我們使用(l1+l3)/(V+1) (其中l1是LAB顏色空間的第一個通道值)的比值圖像來增強陰影部分。

然后,通過閾值0.5×t1+0.4×t2(其中t1是最小像素值,t2是平均值)來過濾增強圖像,再對閾值圖像進行形態學處理(即去除噪聲、清晰輪廓等)。

最后,提取出兩個儲油罐的陰影輪廓,然后根據上述公式估算出所占用的體積。這些想法摘自以下Notebook。

https://www.kaggle.com/towardsentropy/oil-tank-volume-estimation

遵循整個流程來解決這個案例研究如下所示。

讓我們從數據集的探索性數據分析EDA開始吧!!

6.探索性數據分析(EDA)

探索Labels.json文件:

json/_labels=json.load(open(os.path.join('data','labels.json')))  
print('NumberofImages:',len(json/_labels))  
json/_labels/[25:30/]  

所有的標簽都存儲在字典列表中,總共有10萬張圖片。不包含任何儲罐的圖像將標記為Skip,而包含儲罐的圖像將標記為tank、tank Cluster或Floating Head tank,每個tank對象都有字典格式的四個角點的邊界框坐標。

計數:

在10K個圖像中,8187個圖像沒有標簽(即它們不包含任何儲油罐對象,此外有81個圖像包含至少一個儲油罐簇對象,1595個圖像包含至少一個浮頂儲油罐。

在條形圖中,可以觀察到,在包含圖像的1595個浮頂罐中,26.45%的圖像僅包含一個浮頂罐對象,單個圖像中浮頂儲罐對象的最高數量為34。

探索labels/_coco.json文件:

json/_labels/_coco=json.load(open(os.path.join('data','labels/_coco.json')))  
print('NumberofFloatingtanks:',len(json/_labels/_coco/['annotations'/]))  
no/_unique/_img/_id=set()  
foranninjson/_labels/_coco/['annotations'/]:  
no/_unique/_img/_id.add(ann/['image/_id'/])  
print('NumberofImagesthatcontainsFloatingheadtank:',len(no/_unique/_img/_id))  
json/_labels/_coco/['annotations'/]/[:8/] 

此文件僅包含浮頂罐的邊界框及其在字典格式列表中的_image/_id_

打印邊界框:

儲油罐有三種:

  1. Tank(T 油罐)
  2. Tank Cluster(TC 油罐組),
  3. Floating Head Tank(FHT,浮頂罐)

7.數據擴充

在EDA中,人們觀察到10000幅圖像中有8171幅是無用的,因為它們不包含任何對象,此外1595個圖像包含至少一個浮頂罐對象。眾所周知,所有的深度學習模型都需要大量的數據,沒有足夠的數據會導致性能的下降。

因此,我們先進行數據擴充,然后將獲得的擴充數據擬合到Yolov3目標檢測模型中。

8.數據預處理、擴充和TFRecords

數據預處理:

對象的注釋是以Jason格式給出的,其中有4個角點,首先,從這些角點提取左上角點和右下角點,然后屬于單個圖像的所有注釋及其對應的標簽都保存在CSV文件的一行列表中。

從角點提取左上角點和右下角點的代碼

defconv/_bbox(box/_dict):  
"""  
input:box/_dict->字典中有4個角點  
Function:獲取左上方和右下方的點  
output:tuple(ymin,xmin,ymax,xmax)  
"""  
xs=np.array(list(set(/[i/['x'/]foriinbox/_dict/])))  
ys=np.array(list(set(/[i/['y'/]foriinbox/_dict/])))  
x/_min=xs.min()  
x/_max=xs.max()  
y/_min=ys.min()  
y/_max=ys.max()  
  
returny/_min,x/_min,y/_max,x/_max  

CSV文件將如下所示

為了評估模型,我們將保留10%的圖像作為測試集。

#訓練和測試劃分  
df/_train,df/_test=model/_selection.train/_test/_split(  
df,#CSV文件注釋  
test/_size=0.1,  
random/_state=42,  
shuffle=True,  
)  
df/_train.shape,df/_test.shape  

數據擴充:

我們知道目標檢測需要大量的數據,但是我們只有1645幅圖像用于訓練,這是非常少的,為了增加數據,我們必須執行數據擴充。我們通過翻轉和旋轉原始圖像來生成新圖像。我們轉到下面的GitHub存儲庫,從中提取代碼進行擴充

https://blog.paperspace.com/data-augmentation-for-bounding-boxes/

通過執行以下操作從單個原始圖像生成7個新圖像:

  1. 水平翻轉
  2. 旋轉90度
  3. 旋轉180度
  4. 旋轉270度
  5. 水平翻轉和90度旋轉
  6. 水平翻轉和180度旋轉
  7. 水平翻轉和270度旋轉

示例如下所示

TFRecords:

TFRecords是TensorFlow自己的二進制存儲格式。當數據集太大時,它通常很有用。它以二進制格式存儲數據,并對訓練模型的性能產生顯著影響。二進制數據復制所需的時間更少,而且由于在訓練時只加載了一個batch數據,所以占用的空間也更少。你可以在下面的博客中找到它的詳細描述。

https://medium.com/mostly-ai/tensorflow-records-what-they-are-and-how-to-use-them-c46bc4bbb564

也可以查看下面的Tensorflow文檔。

https://www.tensorflow.org/tutorials/load/_data/tfrecord

我們的數據集已轉換成RFRecords格式,但是我們沒有必要執行此任務,因為我們的數據集不是很大,如果你感興趣,可以在我的GitHub存儲庫中找到代碼。

9.基于YoloV3的目標檢測

訓練:

為了訓練yolov3模型,采用了遷移學習。第一步包括加載DarkNet網絡的權重,并在訓練期間凍結它以保持權重不變。

defcreate/_model():  
tf.keras.backend.clear/_session()  
pret/_model=YoloV3(size,channels,classes=80)  
load/_darknet/_weights(pret/_model,'Pretrained/_Model/yolov3.weights')  
print('//nPretrainedWeightLoaded')  
  
model=YoloV3(size,channels,classes=3)  
model.get/_layer('yolo/_darknet').set/_weights(  
pret/_model.get/_layer('yolo/_darknet').get/_weights())  
print('YoloDarkNetweightloaded')  
  
freeze/_all(model.get/_layer('yolo/_darknet'))  
print('FrozenDarkNetlayers')  
returnmodel  
  
model=create/_model()  
model.summary()  

我們使用adam優化器(初始學習率=0.001)來訓練我們的模型,并根據epoch應用余弦衰減來降低學習速率。在訓練過程中使用模型檢查點保存最佳權重,訓練結束后保存最后一個權重。

tf.keras.backend.clear/_session()  
epochs=100  
learning/_rate=1e-3  
  
optimizer=get/_optimizer(  
optim/_type='adam',  
learning/_rate=1e-3,  
decay/_type='cosine',  
decay/_steps=10/*600  
)  
loss=/[YoloLoss(yolo/_anchors/[mask/],classes=3)formaskinyolo/_anchor/_masks/]  
  
  
model=create/_model()  
model.compile(optimizer=optimizer,loss=loss)  
  
#Tensorbaord  
!rm-rf./logs/  
logdir=os.path.join("logs",datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))  
%tensorboard--logdir$logdir  
tensorboard/_callback=tf.keras.callbacks.TensorBoard(logdir,histogram/_freq=1)  
  
callbacks=/[  
EarlyStopping(monitor='val/_loss',min/_delta=0,patience=15,verbose=1),  
ModelCheckpoint('Weights/Best/_weight.hdf5',verbose=1,save/_best/_only=True),  
tensorboard/_callback,  
/]  
  
history=model.fit(train/_dataset,  
epochs=epochs,  
callbacks=callbacks,  
validation/_data=valid/_dataset)  
model.save('Weights/Last/_weight.hdf5')  

損失函數:

YOLO損失函數:

Yolov3模型訓練中所用的損失函數相當復雜。Yolo在三個不同的尺度上計算三個不同的損失,并對反向傳播進行總結(正如你在上面的代碼單元中看到的,最終損失是三個不同損失的列表),每個loss都通過4個子函數來計算檢測損失和分類損失。

  1. 中心(x,y) 的MSE損失.
  2. 邊界框的寬度和高度的均方誤差(MSE)
  3. 邊界框的二元交叉熵得分與無目標得分
  4. 邊界框多類預測的二元交叉熵或稀疏范疇交叉熵

讓我們看看Yolov2中使用的損失公式

Yolov2中的最后三項是平方誤差,而在Yolov3中,它們被交叉熵誤差項所取代,換句話說,Yolov3中的對象置信度和類預測現在通過logistic回歸來進行預測。

看看Yolov3損失函數的實現

defYoloLoss(anchors,classes=3,ignore/_thresh=0.5):  
defyolo/_loss(y/_true,y/_pred):  
#1.轉換所有預測輸出  
#y/_pred:(batch/_size,grid,grid,anchors,(x,y,w,h,obj,...cls))  
pred/_box,pred/_obj,pred/_class,pred/_xywh=yolo/_boxes(  
y/_pred,anchors,classes)  
#predicted(tx,ty,tw,th)  
pred/_xy=pred/_xywh/[...,0:2/]#x,yoflastchannel  
pred/_wh=pred/_xywh/[...,2:4/]#w,hoflastchannel  
  
#2.轉換所有真實輸出  
#y/_true:(batch/_size,grid,grid,anchors,(x1,y1,x2,y2,obj,cls))  
true/_box,true/_obj,true/_class/_idx=tf.split(  
y/_true,(4,1,1),axis=/-1)  
  
#轉換x1,y1,x2,y2tox,y,w,h  
#x,y=(x2-x1)/2,(y2-y1)/2  
#w,h=(x2-x1),(y2-y1)  
true/_xy=(true/_box/[...,0:2/]+true/_box/[...,2:4/])/2  
true/_wh=true/_box/[...,2:4/]-true/_box/[...,0:2/]  
  
#小的box要更高權重  
#shape->(batch/_size,grid,grid,anchors)  
box/_loss/_scale=2-true/_wh/[...,0/]/*true/_wh/[...,1/]  
  
  
#3.對predbox進行反向  
#把(bx,by,bw,bh)變為(tx,ty,tw,th)  
grid/_size=tf.shape(y/_true)/[1/]  
grid=tf.meshgrid(tf.range(grid/_size),tf.range(grid/_size))  
grid=tf.expand/_dims(tf.stack(grid,axis=/-1),axis=2)  
true/_xy=true/_xy/*tf.cast(grid/_size,tf.float32)-tf.cast(grid,tf.float32)  
true/_wh=tf.math.log(true/_wh/anchors)  
true/_wh=tf.where(tf.logical/_or(tf.math.is/_inf(true/_wh),  
tf.math.is/_nan(true/_wh)),  
tf.zeros/_like(true/_wh),true/_wh)  
  
#4.計算所有掩碼  
#從張量的形狀中去除尺寸為1的維度。  
#obj/_mask:(batch/_size,grid,grid,anchors)  
obj/_mask=tf.squeeze(true/_obj,/-1)  
#當iou超過臨界值時,忽略假正例  
#best/_iou:(batch/_size,grid,grid,anchors)  
best/_iou=tf.map/_fn(  
lambdax:tf.reduce/_max(broadcast/_iou(x/[0/],tf.boolean/_mask(  
x/[1/],tf.cast(x/[2/],tf.bool))),axis=/-1),  
(pred/_box,true/_box,obj/_mask),  
tf.float32)  
ignore/_mask=tf.cast(best/_iou(batch,1)  
xy/_loss=tf.reduce/_sum(xy/_loss,axis=(1,2,3))  
wh/_loss=tf.reduce/_sum(wh/_loss,axis=(1,2,3))  
obj/_loss=tf.reduce/_sum(obj/_loss,axis=(1,2,3))  
class/_loss=tf.reduce/_sum(class/_loss,axis=(1,2,3))  
  
returnxy/_loss+wh/_loss+obj/_loss+class/_loss  
returnyolo/_loss  

分數:

為了評估我們的模型,我們使用了AP和mAP來評估訓練和測試數據

測試集分數

get/_mAP(model,'data/test.csv')  

訓練集分數

get/_mAP(model,'data/train.csv')  

推理

讓我們看看這個模型是如何執行的

10.儲量估算

體積估算是本案例研究的主要內容。雖然沒有評估估計容積的標準,但我們試圖找到圖像的最佳閾值像素值,以便能夠在很大程度上檢測陰影區域(通過計算像素數)。

我們將使用衛星拍攝到的4800X4800形狀的大圖像,并將其分割成100個512x512的子圖,兩個軸上的子圖之間重疊37像素。圖像修補程序在id/_row/_column.jpg命名。

每個生成的子圖預測都將存儲在一個CSV文件中,然后再估計每個浮頂儲油罐的體積(代碼和解釋以Notebook格式在我的GitHub存儲庫中提供)。

最后,將所有的圖像塊和邊界框與標簽合并,輸出估計的體積,形成一個大的圖像。你可以看看下面的例子:

11.結果

測試集上浮頂罐的AP分數為0.874,訓練集上的AP分數為0.942。

12.結論

  • 只需有限的圖像就可以得到相當好的結果。
  • 數據增強工作得很到位。
  • 在本例中,與RetinaNet模型的現有方法相比,yolov3表現得很好。

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1791

    文章

    47229

    瀏覽量

    238330
  • 圖像分析
    +關注

    關注

    0

    文章

    82

    瀏覽量

    18677
收藏 人收藏

    評論

    相關推薦

    在RK3568教學實驗箱上實現基于YOLOV5的算法物體識別案例詳解

    非常流行的實時目標檢測模型,它提供了出色的性能和精度。YOLOv5可以分為三個部分,分別是: 1、主干特征提取網絡(Backbone) 2、加強特征提取網絡(FPN) 3、分類器與回歸器(Yolo
    發表于 12-03 14:56

    在樹莓派上部署YOLOv5進行動物目標檢測的完整流程

    卓越的性能。本文將詳細介紹如何在性能更強的計算機上訓練YOLOv5模型,并將訓練好的模型部署到樹莓派4B上,通過樹莓派的攝像頭進行實時動物目標檢測。 一、在電腦上訓練YOLOv5模型
    的頭像 發表于 11-11 10:38 ?948次閱讀
    在樹莓派上部署<b class='flag-5'>YOLOv</b>5<b class='flag-5'>進行</b>動物目標檢測的完整流程

    YOLOv6在LabVIEW中的推理部署(含源碼)

    YOLOv6 是美團視覺智能部研發的一款目標檢測框架,致力于工業應用。如何使用python進行該模型的部署,官網已經介紹的很清楚了,但是對于如何在LabVIEW中實現該模型的部署,筆者目前還沒有看到
    的頭像 發表于 11-06 16:07 ?253次閱讀
    <b class='flag-5'>YOLOv</b>6在LabVIEW中的推理部署(含源碼)

    RK3588 技術分享 | 在Android系統中使用NPU實現Yolov5分類檢測

    NPU。 應用領域 圖像識別: NPU能夠迅速對圖像進行分類、檢測和分割等操作,大大提升了處理效率。 語音識別: NPU實現了實時語音轉換和語音合成功能,為語音交互提供了更自然的體驗。 自然語言處理
    發表于 10-24 10:13

    CPU占用率過高的常見原因

    排查系統問題時,CPU 飆升是一個常見的問題。
    的頭像 發表于 10-23 09:33 ?492次閱讀

    服務器cpu占用率高怎么解決

    服務器CPU占用率高是一個常見的問題,它可能會導致服務器性能下降,甚至影響用戶體驗。 一、了解服務器CPU占用率高的原因 應用程序問題 應用程序設計不合理,導致CPU占用率高 應用程序存在死循環或者
    的頭像 發表于 10-10 15:14 ?908次閱讀

    RK3588 技術分享 | 在Android系統中使用NPU實現Yolov5分類檢測

    NPU。 應用領域 圖像識別: NPU能夠迅速對圖像進行分類、檢測和分割等操作,大大提升了處理效率。 語音識別: NPU實現了實時語音轉換和語音合成功能,為語音交互提供了更自然的體驗。 自然語言處理
    發表于 08-20 11:13

    油罐安全:ThingsBoard物聯網網關實時監控

    儲油罐是采油、煉油企業儲存油品的重要設備,對儲油罐液位、溫度的實時數據監測對企業的庫存和安全管理有著重大意義。 場景 對于企業,尤其是加油站來說,高效的罐體液位、溫度監測對于優化燃油庫存、防止短缺或
    的頭像 發表于 05-24 16:56 ?535次閱讀
    <b class='flag-5'>油罐</b>安全:ThingsBoard物聯網網關實時監控

    想通過perf工具來檢查2段不同代碼的內存占用率,但一直沒找到,怎么辦?

    想通過perf工具來檢查2段不同代碼的內存占用率,但一直沒找到,怎么辦?
    發表于 05-17 13:33

    maixcam部署yolov5s 自定義模型

    ://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt 訓練(博主使用的是學校的集群進行訓練) python3
    發表于 04-23 15:43

    Linux系統CPU占用率100%的排查思路

    今天浩道跟大家分享linux硬核干貨,工作中當你服務器CPU達到100%時,干著急是沒有用的,該查問題還得自己去查。本文將給大家羅列排查異常故障思路,并且文末附上相關shell腳本,去實際一番,你會發現原來解決問題的方法如此之簡單!
    的頭像 發表于 01-23 10:26 ?5951次閱讀
    Linux系統CPU<b class='flag-5'>占用率</b>100%的排查思路

    如何使用TCM提高CPU性能?

    你好 我們正在使用 TRAVEO? T2G CYT4BF 的項目,CPU 占用率非常高。 我們已經啟用了 Icache。 1。 我們想了解如何以最佳方式使用 ITCM 和 DTCM(CM7_0
    發表于 01-18 07:01

    YOLOv8實現旋轉對象檢測

    YOLOv8框架在在支持分類、對象檢測、實例分割、姿態評估的基礎上更近一步,現已經支持旋轉對象檢測(OBB),基于DOTA數據集,支持航拍圖像的15個類別對象檢測,包括車輛、船只、典型各種場地等。包含2800多張圖像、18W個實
    的頭像 發表于 01-11 10:43 ?1811次閱讀
    <b class='flag-5'>YOLOv</b>8實現旋轉對象檢測

    深入淺出Yolov3Yolov4

    Yolov3是目標檢測Yolo系列非常非常經典的算法,不過很多同學拿到Yolov3或者Yolov4的cfg文件時,并不知道如何直觀的可視化查看網絡結構。
    的頭像 發表于 01-11 10:42 ?786次閱讀
    深入淺出<b class='flag-5'>Yolov3</b>和<b class='flag-5'>Yolov</b>4

    全志V853 NPU開發之Demo使用說明

    上一章節中配置 NPU 擴展包后可以在 menuconfig 里看到兩個 Demo 測試應用程序。這里我們來介紹一下怎么使用這兩個 Demo。 YOLOV3在 NPU Package 中我們提供了
    發表于 01-08 10:04
    主站蜘蛛池模板: 丰满少妇被猛烈进出69影院| 亚洲AV无码影院在线播放| 久久影院毛片一区二区| 精品久久久99大香线蕉| 国产三区在线成人AV| 国产精品亚洲国产三区| 国产精品免费久久久久影院| 国产成人精品免费视频软件| 国产AV一区二区三区日韩| 粗壮挺进邻居人妻无码| 港台三级大全| 国产国产成人人免费影院| 国产精品ⅴ视频免费观看| 国产大片51精品免费观看| 国产精品久AAAAA片| 国产午夜人成在线视频麻豆| 果冻传媒2021在线观看| 精品视频在线一区| 久久久精品久久| 美女用手扒开粉嫩的屁股| 暖暖 免费 日本 高清 在线1| 嫩B人妻精品一区二区三区| 欧美人与禽ZOZO性伦交视频| 日本阿v直播在线| 深夜草逼逼| 亚洲国产综合久久久无码色伦| 亚洲精品婷婷无码成人A片在线| 亚洲视频无码高清在线| 中国字字幕在线播放2019| 97人妻无码AV碰碰视频| 扒开屁股眼往里面夹东西| 国产激情一级毛片久久久| 果冻传媒视频在线播放 免费观看| 久久yy99re66| 嗯啊好爽视频| 色偷偷男人的天堂a v| 亚洲爱视频| 67194免费入口| 调教日本美女| 教室里的激情电影| 男女啪啪抽搐呻吟高潮动态图|