在那做網(wǎng)站ps做網(wǎng)站字體大小
鶴壁市浩天電氣有限公司
2026/01/24 15:54:15
在那做網(wǎng)站,ps做網(wǎng)站字體大小,手工藝品網(wǎng)站建設(shè)側(cè)胡順,wordpress 主題 mip文章目錄1 前言2 實(shí)現(xiàn)效果3 CNN卷積神經(jīng)網(wǎng)絡(luò)4 Yolov56 數(shù)據(jù)集處理及模型訓(xùn)練1 前言
#x1f525;這兩年開始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升#xff0c;傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn)#xff0c;往往達(dá)不到畢業(yè)答辯的要求#xff0c;這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長(zhǎng)…文章目錄1 前言2 實(shí)現(xiàn)效果3 CNN卷積神經(jīng)網(wǎng)絡(luò)4 Yolov56 數(shù)據(jù)集處理及模型訓(xùn)練1 前言這兩年開始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn)往往達(dá)不到畢業(yè)答辯的要求這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長(zhǎng)自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。并且很難找到完整的畢設(shè)參考學(xué)習(xí)資料。為了大家能夠順利以及最少的精力通過畢設(shè)學(xué)長(zhǎng)分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目提供大家參考學(xué)習(xí)今天要分享的是 **基于深度學(xué)習(xí)YOLOv5車輛顏色識(shí)別檢測(cè) **學(xué)長(zhǎng)這里給一個(gè)題目綜合評(píng)分(每項(xiàng)滿分5分)難度系數(shù)3分工作量3分創(chuàng)新點(diǎn)4分選題指導(dǎo), 項(xiàng)目分享見文末2 實(shí)現(xiàn)效果3 CNN卷積神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)(CNN)是由多層卷積結(jié)構(gòu)組成的一種神經(jīng)網(wǎng)絡(luò)。卷積結(jié)構(gòu)可以減少網(wǎng)絡(luò)的內(nèi)存占用、參數(shù)和模型的過擬合。卷積神經(jīng)網(wǎng)絡(luò)是一種典型的深度學(xué)習(xí)算法。廣泛應(yīng)用于視覺處理和人工智能領(lǐng)域特別是在圖像識(shí)別和人臉識(shí)別領(lǐng)域。與完全連接的神經(jīng)網(wǎng)絡(luò)相比CNN輸入是通過交換參數(shù)和局部感知來提取圖像特征的圖像。卷積神經(jīng)網(wǎng)絡(luò)是由輸入層、卷積層、池化層、全連接層和輸出層五層結(jié)構(gòu)組成。其具體模型如下圖所示。(1)輸入層(Input layer)輸入層就是神經(jīng)網(wǎng)絡(luò)的輸入端口就是把輸入傳入的入口。通常傳入的圖像的RGB三個(gè)通道的數(shù)據(jù)。數(shù)據(jù)的輸入一般是多維的矩陣向量其中矩陣中的數(shù)值代表的是圖像對(duì)應(yīng)位置的像素點(diǎn)的值。(2)卷積層(Convolution layer)卷積層在CNN中主要具有學(xué)習(xí)功能它主要提取輸入的數(shù)據(jù)的特征值。(3)池化層(Pooling layer)池化層通過對(duì)卷積層的特征值進(jìn)行壓縮來獲得自己的特征值減小特征值的矩陣的維度減小網(wǎng)絡(luò)計(jì)算量加速收斂速度可以有效避免過擬合問題。(4)全連接層(Full connected layer)全連接層主要實(shí)現(xiàn)是把經(jīng)過卷積層和池化層處理的數(shù)據(jù)進(jìn)行集合在一起形成一個(gè)或者多個(gè)的全連接層該層在CNN的功能主要是實(shí)現(xiàn)高階推理計(jì)算。(5)輸出層(Output layer)輸出層在全連接層之后是整個(gè)神經(jīng)網(wǎng)絡(luò)的輸出端口即把處理分析后的數(shù)據(jù)進(jìn)行輸出。cnn卷積神經(jīng)網(wǎng)絡(luò)的編寫如下編寫卷積層、池化層和全連接層的代碼conv1_1tf.layers.conv2d(x,16,(3,3),paddingsame,activationtf.nn.relu,nameconv1_1)conv1_2tf.layers.conv2d(conv1_1,16,(3,3),paddingsame,activationtf.nn.relu,nameconv1_2)pool1tf.layers.max_pooling2d(conv1_2,(2,2),(2,2),namepool1)conv2_1tf.layers.conv2d(pool1,32,(3,3),paddingsame,activationtf.nn.relu,nameconv2_1)conv2_2tf.layers.conv2d(conv2_1,32,(3,3),paddingsame,activationtf.nn.relu,nameconv2_2)pool2tf.layers.max_pooling2d(conv2_2,(2,2),(2,2),namepool2)conv3_1tf.layers.conv2d(pool2,64,(3,3),paddingsame,activationtf.nn.relu,nameconv3_1)conv3_2tf.layers.conv2d(conv3_1,64,(3,3),paddingsame,activationtf.nn.relu,nameconv3_2)pool3tf.layers.max_pooling2d(conv3_2,(2,2),(2,2),namepool3)conv4_1tf.layers.conv2d(pool3,128,(3,3),paddingsame,activationtf.nn.relu,nameconv4_1)conv4_2tf.layers.conv2d(conv4_1,128,(3,3),paddingsame,activationtf.nn.relu,nameconv4_2)pool4tf.layers.max_pooling2d(conv4_2,(2,2),(2,2),namepool4)flattentf.layers.flatten(pool4)fc1tf.layers.dense(flatten,512,tf.nn.relu)fc1_dropouttf.nn.dropout(fc1,keep_probkeep_prob)fc2tf.layers.dense(fc1,256,tf.nn.relu)fc2_dropouttf.nn.dropout(fc2,keep_probkeep_prob)fc3tf.layers.dense(fc2,2,None)4 Yolov5簡(jiǎn)介我們選擇當(dāng)下YOLO最新的卷積神經(jīng)網(wǎng)絡(luò)YOLOv5來進(jìn)行火焰識(shí)別檢測(cè)。6月9日Ultralytics公司開源了YOLOv5離上一次YOLOv4發(fā)布不到50天。而且這一次的YOLOv5是完全基于PyTorch實(shí)現(xiàn)的在我們還對(duì)YOLOv4的各種高端操作、豐富的實(shí)驗(yàn)對(duì)比驚嘆不已時(shí)YOLOv5又帶來了更強(qiáng)實(shí)時(shí)目標(biāo)檢測(cè)技術(shù)。按照官方給出的數(shù)目現(xiàn)版本的YOLOv5每個(gè)圖像的推理時(shí)間最快0.007秒即每秒140幀F(xiàn)PS但YOLOv5的權(quán)重文件大小只有YOLOv4的1/9。目標(biāo)檢測(cè)架構(gòu)分為兩種一種是two-stage一種是one-stage區(qū)別就在于 two-stage 有region proposal過程類似于一種海選過程,網(wǎng)絡(luò)會(huì)根據(jù)候選區(qū)域生成位置和類別而one-stage直接從圖片生成位置和類別。今天提到的 YOLO就是一種 one-stage方法。YOLO是You Only Look Once的縮寫,意思是神經(jīng)網(wǎng)絡(luò)只需要看一次圖片就能輸出結(jié)果。YOLO 一共發(fā)布了五個(gè)版本其中 YOLOv1 奠定了整個(gè)系列的基礎(chǔ)后面的系列就是在第一版基礎(chǔ)上的改進(jìn)為的是提升性能。YOLOv5有4個(gè)版本性能如圖所示網(wǎng)絡(luò)架構(gòu)圖YOLOv5是一種單階段目標(biāo)檢測(cè)算法該算法在YOLOv4的基礎(chǔ)上添加了一些新的改進(jìn)思路使其速度與精度都得到了極大的性能提升。主要的改進(jìn)思路如下所示輸入端在模型訓(xùn)練階段提出了一些改進(jìn)思路主要包括Mosaic數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框計(jì)算、自適應(yīng)圖片縮放Mosaic數(shù)據(jù)增強(qiáng)Mosaic數(shù)據(jù)增強(qiáng)的作者也是來自YOLOv5團(tuán)隊(duì)的成員通過隨機(jī)縮放、隨機(jī)裁剪、隨機(jī)排布的方式進(jìn)行拼接對(duì)小目標(biāo)的檢測(cè)效果很不錯(cuò)基準(zhǔn)網(wǎng)絡(luò)融合其它檢測(cè)算法中的一些新思路主要包括Focus結(jié)構(gòu)與CSP結(jié)構(gòu)Neck網(wǎng)絡(luò)在目標(biāo)檢測(cè)領(lǐng)域?yàn)榱烁玫奶崛∪诤咸卣魍ǔT贐ackbone和輸出層會(huì)插入一些層這個(gè)部分稱為Neck。Yolov5中添加了FPNPAN結(jié)構(gòu)相當(dāng)于目標(biāo)檢測(cè)網(wǎng)絡(luò)的頸部也是非常關(guān)鍵的。FPNPAN的結(jié)構(gòu)這樣結(jié)合操作FPN層自頂向下傳達(dá)強(qiáng)語(yǔ)義特征High-Level特征而特征金字塔則自底向上傳達(dá)強(qiáng)定位特征Low-Level特征)兩兩聯(lián)手從不同的主干層對(duì)不同的檢測(cè)層進(jìn)行特征聚合。FPNPAN借鑒的是18年CVPR的PANet當(dāng)時(shí)主要應(yīng)用于圖像分割領(lǐng)域但Alexey將其拆分應(yīng)用到Y(jié)olov4中進(jìn)一步提高特征提取的能力。Head輸出層輸出層的錨框機(jī)制與YOLOv4相同主要改進(jìn)的是訓(xùn)練時(shí)的損失函數(shù)GIOU_Loss以及預(yù)測(cè)框篩選的DIOU_nms。對(duì)于Head部分可以看到三個(gè)紫色箭頭處的特征圖是40×40、20×20、10×10。以及最后Prediction中用于預(yù)測(cè)的3個(gè)特征圖①40×40×255 ②20×20×255 ③10×10×255相關(guān)代碼classDetect(nn.Module):strideNone# strides computed during buildonnx_dynamicFalse# ONNX export parameterdef__init__(self,nc80,anchors(),ch(),inplaceTrue):# detection layersuper().__init__()self.ncnc# number of classesself.nonc5# number of outputs per anchorself.nllen(anchors)# number of detection layersself.nalen(anchors[0])//2# number of anchorsself.grid[torch.zeros(1)]*self.nl# init gridself.anchor_grid[torch.zeros(1)]*self.nl# init anchor gridself.register_buffer(anchors,torch.tensor(anchors).float().view(self.nl,-1,2))# shape(nl,na,2)self.mnn.ModuleList(nn.Conv2d(x,self.no*self.na,1)forxinch)# output convself.inplaceinplace# use in-place ops (e.g. slice assignment)defforward(self,x):z[]# inference outputforiinrange(self.nl):x[i]self.m[i](x[i])# convbs,_,ny,nxx[i].shape# x(bs,255,20,20) to x(bs,3,20,20,85)x[i]x[i].view(bs,self.na,self.no,ny,nx).permute(0,1,3,4,2).contiguous()ifnotself.training:# inferenceifself.onnx_dynamicorself.grid[i].shape[2:4]!x[i].shape[2:4]:self.grid[i],self.anchor_grid[i]self._make_grid(nx,ny,i)yx[i].sigmoid()ifself.inplace:y[...,0:2](y[...,0:2]*2-0.5self.grid[i])*self.stride[i]# xyy[...,2:4](y[...,2:4]*2)**2*self.anchor_grid[i]# whelse:# for YOLOv5 on AWS Inferentia https://github.com/ultralytics/yolov5/pull/2953xy(y[...,0:2]*2-0.5self.grid[i])*self.stride[i]# xywh(y[...,2:4]*2)**2*self.anchor_grid[i]# whytorch.cat((xy,wh,y[...,4:]),-1)z.append(y.view(bs,-1,self.no))returnxifself.trainingelse(torch.cat(z,1),x)def_make_grid(self,nx20,ny20,i0):dself.anchors[i].deviceifcheck_version(torch.__version__,1.10.0):# torch1.10.0 meshgrid workaround for torch0.7 compatibilityyv,xvtorch.meshgrid([torch.arange(ny).to(d),torch.arange(nx).to(d)],indexingij)else:yv,xvtorch.meshgrid([torch.arange(ny).to(d),torch.arange(nx).to(d)])gridtorch.stack((xv,yv),2).expand((1,self.na,ny,nx,2)).float()anchor_grid(self.anchors[i].clone()*self.stride[i]).view((1,self.na,1,1,2)).expand((1,self.na,ny,nx,2)).float()returngrid,anchor_grid6 數(shù)據(jù)集處理及模型訓(xùn)練數(shù)據(jù)集準(zhǔn)備由于目前汽車顏色圖片并沒有現(xiàn)成的數(shù)據(jù)集我們使用Python爬蟲利用關(guān)鍵字在互聯(lián)網(wǎng)上獲得的圖片數(shù)據(jù)編寫程序爬了1w張篩選后用于訓(xùn)練。深度學(xué)習(xí)圖像標(biāo)注軟件眾多按照不同分類標(biāo)準(zhǔn)有多中類型本文使用LabelImg單機(jī)標(biāo)注軟件進(jìn)行標(biāo)注。LabelImg是基于角點(diǎn)的標(biāo)注方式產(chǎn)生邊界框?qū)D片進(jìn)行標(biāo)注得到xml格式的標(biāo)注文件由于邊界框?qū)z測(cè)精度的影響較大因此采用手動(dòng)標(biāo)注并沒有使用自動(dòng)標(biāo)注軟件??紤]到有的朋友時(shí)間不足博主提供了標(biāo)注好的數(shù)據(jù)集和訓(xùn)練好的模型需要請(qǐng)聯(lián)系。數(shù)據(jù)標(biāo)注簡(jiǎn)介通過pip指令即可安裝pip install labelimg在命令行中輸入labelimg即可打開后續(xù)課查看其他標(biāo)注教程不難。開始訓(xùn)練模型處理好數(shù)據(jù)集和準(zhǔn)備完yaml文件就可以開始yolov5的訓(xùn)練了。首先我們找到train.py這個(gè)py文件。然后找到主函數(shù)的入口這里面有模型的主要參數(shù)。修改train.py中的weights、cfg、data、epochs、batch_size、imgsz、device、workers等參數(shù)至此就可以運(yùn)行train.py函數(shù)訓(xùn)練自己的模型了。訓(xùn)練代碼成功執(zhí)行之后會(huì)在命令行中輸出下列信息接下來就是安心等待模型訓(xùn)練結(jié)束即可。 項(xiàng)目分享:大家可自取用于參考學(xué)習(xí)獲取方式見文末!