深度學習目標檢測之 YOLO v2

  • 論文名:《YOLO9000: Better, Faster, Stronger》
  • 原文:https://arxiv.org/pdf/1612.08242v1.pdf
  • 代碼:http://pjreddie.com/darknet/yolo/

YOLO v2 斬獲了CVPR 2017 Best Paper Honorable Mention。在這篇文章中,作者首先在YOLOv1的基礎上提出了改進的YOLOv2,在繼續保持處理速度的基礎上,從預測更準確(Better),速度更快(Faster),識別對象更多(Stronger)這三個方面進行了改進。然后提出了一種檢測與分類聯合訓練方法,使用這種聯合訓練方法在COCO檢測數據集和ImageNet分類數據集上訓練出了YOLO9000模型,其可以檢測超過9000多類物體。

YOLOv2相對v1版本,其中識別更多對象也就是擴展到能夠檢測9000種不同對象,稱之為YOLO9000。所以,這篇文章其實包含兩個模型:YOLOv2和YOLO9000,不過后者是在前者基礎上提出的,兩者模型主體結構是一致的。

摘要

  1. 提出YOLOv2:代表著目前業界最先進物體檢測的水平,它的速度要快過其他檢測系統(FasterR-CNN,ResNet,SSD),使用者可以在它的速度與精確度之間進行權衡。
  2. 提出YOLO9000:這一網絡結構可以實時地檢測超過9000種物體分類,這歸功于它使用了WordTree,通過WordTree來混合檢測數據集與識別數據集之中的數據。
  3. 提出了一種新的聯合訓練算法( Joint Training Algorithm ),使用這種聯合訓練技術同時在ImageNet和COCO數據集上進行訓練。YOLO9000進一步縮小了監測數據集與識別數據集之間的代溝。

1. 簡介

目前的檢測數據集(Detection Datasets)有很多限制,分類標簽的信息太少,圖片的數量小于分類數據集(Classi?cation Datasets),而且檢測數據集的成本太高,使其無法當作分類數據集進行使用。而現在的分類數據集卻有著大量的圖片和十分豐富分類信息。

文章提出了一種新的訓練方法–聯合訓練算法,這種算法可以把這兩種的數據集混合到一起。使用一種分層的觀點對物體進行分類,用巨量的分類數據集數據來擴充檢測數據集,從而把兩種不同的數據集混合起來。

聯合訓練算法的基本思路就是:同時在檢測數據集和分類數據集上訓練物體檢測器(Object Detectors ),用監測數據集的數據學習物體的準確位置,用分類數據集的數據來增加分類的類別量、提升健壯性。

YOLO9000就是使用聯合訓練算法訓練出來的,他擁有9000類的分類信息,這些分類信息學習自ImageNet分類數據集,而物體位置檢測則學習自COCO檢測數據集。

All of our code and pre-trained models are available online at http://pjreddie.com/yolo9000/

2. BETTER

YOLO v1有很多缺點,作者希望改進的方向是:改善recall,提升定位的準確度,同時保持分類的準確度。

目前計算機視覺的趨勢是更大更深的網絡,更好的性能表現通常依賴于訓練更大的網絡或者把多種model綜合到一起。但是YOLO v2則著力于簡化網絡。具體的改進見下表:
在這里插入圖片描述

  • Batch Normalization(批量歸一化)

    使用Batch Normalization對網絡進行優化,讓網絡提高了收斂性,同時還消除了對其他形式的正則化(regularization)的依賴。

    通過對YOLO的每一個卷積層增加Batch Normalization,最終使得mAP提高了2%,同時還使model正則化。使用Batch Normalization可以從model中去掉Dropout,而不會產生過擬合。

  • High resolution classifier(高分辨率圖像分類器)

    目前業界標準的檢測方法,都要先把分類器(classi?er)放在ImageNet上進行預訓練。從Alexnet開始,大多數的分類器都運行在小于256*256的圖片上。而現在YOLO從224*224增加到了448*448,這就意味著網絡需要適應新的輸入分辨率。

    為了適應新的分辨率,YOLO v2的分類網絡以448*448的分辨率先在ImageNet上進行Fine Tune,Fine Tune10個epochs,讓網絡有時間調整他的濾波器(filters),好讓其能更好的運行在新分辨率上,還需要調優用于檢測的Resulting Network。最終通過使用高分辨率,mAP提升了4%。

  • Convolution with anchor boxes(使用先驗框)

    YOLO v1包含有全連接層,從而能直接預測Bounding Boxes的坐標值。 Faster R-CNN的方法只用卷積層與Region Proposal Network來預測Anchor Box的偏移值與置信度,而不是直接預測坐標值。作者發現通過預測偏移量而不是坐標值能夠簡化問題,讓神經網絡學習起來更容易。

    借鑒Faster RCNN的做法,YOLO v2也嘗試采用先驗框(anchor)。在每個grid預先設定一組不同大小和寬高比的邊框,來覆蓋整個圖像的不同位置和多種尺度,這些先驗框作為預定義的候選區在神經網絡中將檢測其中是否存在對象,以及微調邊框的位置。

    之前YOLO v1并沒有采用先驗框,并且每個grid只預測兩個bounding box,整個圖像 7?7?2=987*7*2=987?7?2=98 個。YOLO v2如果每個grid采用9個先驗框,總共有 13?13?9=1521個13*13*9=1521個13?13?9=1521 先驗框。所以最終YOLO v2去掉了全連接層,使用Anchor Boxes來預測 Bounding Boxes。作者去掉了網絡中一個Pooling層,這讓卷積層的輸出能有更高的分辨率。收縮網絡讓其運行在416?416416*416416?416而不是448?448448*448448?448

    由于圖片中的物體都傾向于出現在圖片的中心位置,特別是那種比較大的物體,所以有一個單獨位于物體中心的位置用于預測這些物體。YOLO的卷積層采用32這個值來下采樣圖片,所以通過選擇 416?416416*416416?416 用作輸入尺寸最終能輸出一個 13?1313*1313?13 的Feature Map。 使用Anchor Box會讓精度稍微下降,但用了它能讓YOLO能預測出大于一千個框,同時recall從81%達到88%,mAP達到69.2%。

    召回率升高,mAP輕微下降的原因是:因為使用anchor boxes,YOLO v2模型預測了一千多個框,由于存在很多無用的框,這就導致了mAP值的下降。但是由于預測的框多了,所以能夠預測出來的屬于ground truth的框就多了,所以召回率就增加了。目標檢測不是只以mAP為指標的,有些應用場景下要求召回率高。

  • Dimension clusters(聚類提取先驗框的尺度信息)

    之前Anchor Box的尺寸是手動選擇的,所以尺寸還有優化的余地。 為了優化,在訓練集(training set)Bounding Boxes上跑了一下k-means聚類,來找到一個比較好的值。

    如果我們用標準的歐式距離的k-means,尺寸大的框比小框產生更多的錯誤。因為我們的目的是提高IOU分數,這依賴于Box的大小,所以距離度量的使用:

    d(box,centroid)=1?IoU(box,centroid)d(box,centroid)=1-IoU(box,centroid)d(box,centroid)=1?IoU(box,centroid)

    通過分析實驗結果(下圖),左圖:在model復雜性與high recall之間權衡之后,選擇聚類分類數K=5。右圖:是聚類的中心,大多數是高瘦的Box。

    Table1是說明用K-means選擇Anchor Boxes時,當Cluster IOU選擇值為5時,AVG IOU的值是61,這個值要比不用聚類的方法的60.9要高。選擇值為9的時候,AVG IOU更有顯著提高。總之就是說明用聚類的方法是有效果的。
    在這里插入圖片描述

  • Direct location prediction(約束預測邊框的位置)

    借鑒于Faster RCNN的先驗框方法,在訓練的早期階段,其位置預測容易不穩定。其位置預測公式為:

    x=(tx?wa)?xax = (t_x ? w_a) ? x_ax=(tx??wa?)?xa?
    y=(ty?ha)?yay = (t_y ? h_a) ? y_ay=(ty??ha?)?ya?

    其中,x,yx,yx,y 是預測邊框的中心, xa,yax_a,y_axa?,ya? 是先驗框(anchor)的中心點坐標, wa,haw_a,h_awa?,ha? 是先驗框(anchor)的寬和高, tx,tyt_x,t_ytx?,ty?是要學習的參數。 注意,YOLO論文中寫的是x=(tx?wa)?xax = (t_x ? w_a) ? x_ax=(tx??wa?)?xa? ,根據Faster RCNN,應該是x=(tx?wa)+xax = (t_x ? w_a) +x_ax=(tx??wa?)+xa?

    由于 tx,tyt_x,t_ytx?,ty? 的取值沒有任何約束,因此預測邊框的中心可能出現在任何位置,訓練早期階段不容易穩定。YOLO調整了預測公式,將預測邊框的中心約束在特定gird網格內。

    bx=σ(tx)+cxb_x = σ(t_x) + c_xbx?=σ(tx?)+cx?
    by=σ(ty)+cyb_y = σ(t_y) + c_yby?=σ(ty?)+cy?
    bw=pwetwb_w = p_{w}e^{t_w}bw?=pw?etw?
    bh=phethb_h = p_{h}e^{t_h}bh?=ph?eth?
    Pr(object)?IOU(b;object)=σ(to)Pr(object) ? IOU(b; object) = σ(t_o)Pr(object)?IOU(b;object)=σ(to?)

    其中, bx,by,bw,bhb_x,b_y,b_w,b_hbx?,by?,bw?,bh? 是預測邊框的中心和寬高。Pr(object)?IOU(b;object)=σ(to)Pr(object) ? IOU(b; object) = σ(t_o)Pr(object)?IOU(b;object)=σ(to?)是預測邊框的置信度,YOLO v1是直接預測置信度的值,這里對預測參數tot_oto? 進行σ變換后作為置信度的值。 cx,cyc_x,c_ycx?,cy? 是當前網格左上角到圖像左上角的距離,要先將網格大小歸一化,即令一個網格的寬=1,高=1。pw,php_w,p_hpw?,ph?是先驗框的寬和高。 σ是sigmoid函數。 tx,ty,tw,th,tot_x,t_y,t_w,t_h,t_otx?,ty?,tw?,th?,to?是要學習的參數,分別用于預測邊框的中心和寬高,以及置信度。
    在這里插入圖片描述
    因為使用了限制讓數值變得參數化,也讓網絡更容易學習、更穩定。

    Dimension clusters和Direct location prediction,improves YOLO by almost 5% over the version with anchor boxes.

  • Fine-Grained Features(passthrough層檢測細粒度特征)

    YOLO修改后的Feature Map大小為13*13,這個尺寸對檢測圖片中尺寸大物體來說足夠了,同時使用這種細粒度的特征對定位小物體的位置可能也有好處。Faster R-CNN、SSD都使用不同尺寸的Feature Map來取得不同范圍的分辨率,而YOLO采取了不同的方法,YOLO加上了一個Passthrough Layer來取得之前的某個26*26分辨率的層的特征。這個Passthrough layer能夠把高分辨率特征與低分辨率特征聯系在一起,聯系起來的方法是把相鄰的特征堆積在不同的Channel之中,這一方法類似與Resnet的Identity Mapping,從而把26*26*512變成13*13*2048。YOLO中的檢測器位于擴展后(expanded )的Feature Map的上方,所以他能取得細粒度的特征信息,這提升了YOLO 1%的性能。

  • Multi-ScaleTraining

    作者希望YOLO v2能健壯的運行于不同尺寸的圖片之上,所以把這一想法用于訓練model中。

    區別于之前的補全圖片的尺寸的方法,YOLO v2每迭代幾次都會改變網絡參數。每10個Batch,網絡會隨機地選擇一個新的圖片尺寸,由于使用了下采樣參數是32,所以不同的尺寸大小也選擇為32的倍數{320,352……608},最小 320?320320*320320?320,最大 608?608608*608608?608,網絡會自動改變尺寸,并繼續訓練的過程。

    這一政策讓網絡在不同的輸入尺寸上都能達到一個很好的預測效果,同一網絡能在不同分辨率上進行檢測。當輸入圖片尺寸比較小的時候跑的比較快,輸入圖片尺寸比較大的時候精度高,所以你可以在YOLO v2的速度和精度上進行權衡。

    Figure4,Table 3:在voc2007上的速度與精度
    在這里插入圖片描述

  • Further Experiments

    VOC2012 上的結果
    在這里插入圖片描述
    COCO上的結果
    在這里插入圖片描述

3. Faster

YOLO v1使用的是GoogleLeNet,比VGG-16快,YOLO完成一次前向過程只用8.52 billion 運算,而VGG-16要30.69billion,但是YOLO精度稍低于VGG-16。

  • Draknet19(backbone網絡)

    YOLO v2基于一個新的分類model,有點類似與VGG。YOLO v2使用3*3filter,每次Pooling之后都增加一倍Channels的數量。YOLO v2使用全局平均Pooling,使用Batch Normilazation來讓訓練更穩定,加速收斂,使model規范化。

    最終的 model–Darknet19,有19個卷積層和5個maxpooling層,處理一張圖片只需要5.58 billion次運算,在ImageNet上達到72.9%top-1精確度,91.2%top-5精確度。結構如下圖所示。
    在這里插入圖片描述

  • Training for classi?cation

    網絡訓練在 ImageNet 1000類分類數據集,訓練了160epochs,使用隨機梯度下降,初始學習率為0.1, polynomial rate decay with a power of 4, weight decay of 0.0005 and momentum of 0.9 。訓練期間使用標準的數據擴大方法:隨機裁剪、旋轉、變換顏色(hue)、變換飽和度(saturation), 變換曝光度(exposure shifts)。
    在訓練時,把整個網絡在更大的448*448分辨率上Fine Turnning 10個 epoches,初始學習率設置為0.001,這種網絡達到達到76.5%top-1精確度,93.3%top-5精確度。

  • Training for detection

    網絡去掉了最后一個卷積層,而加上了三個3*3卷積層,每個卷積層有1024個Filters,每個卷積層緊接著一個1*1卷積層。
    對于VOC數據,網絡預測出每個網格單元預測五個Bounding Boxes,每個Bounding Boxes預測5個坐標和20類,所以一共125個Filters,增加了Passthough層來獲取前面層的細粒度信息,網絡訓練了160epoches,初始學習率0.001,dividing it by 10 at 60 and 90 epochs,a weight decay of 0.0005 and momentum of 0.9,數據擴大方法相同,對COCO與VOC數據集的訓練對策相同。

4. Stronger

在訓練的過程中,當網絡遇到一個來自檢測數據集的圖片與標記信息,那么就把這些數據用完整的YOLO v2 loss功能反向傳播這個圖片。當網絡遇到一個來自分類數據集的圖片和分類標記信息,只用整個結構中分類部分的loss功能反向傳播這個圖片。

但是檢測數據集只有粗粒度的標記信息,像“貓“、“ 狗”之類,而分類數據集的標簽信息則更細粒度,更豐富。比如狗這一類就包括”哈士奇“”牛頭梗“”金毛狗“等等。所以如果想同時在監測數據集與分類數據集上進行訓練,那么就要用一種一致性的方法融合這些標簽信息。

再者,用于分類的方法,大多是用softmax layer方法,softmax意味著分類的類別之間要互相獨立的。而盲目地混合數據集訓練,就會出現比如:檢測數據集的分類信息中”狗“這一分類,在分類數據集合中,就會有的不同種類的狗”哈士奇“”牛頭梗“”金毛“這些分類,這兩種數據集之間的分類信息不相互獨立。所以使用一種多標簽的model來混合數據集,假設一個圖片可以有多個分類信息,并假定分類信息必須是相互獨立的規則可以被忽略。

  • Hierarchical classification(分層分類)

    作者通過ImageNet訓練分類、COCO和VOC數據集來訓練檢測,這是一個很有價值的思路,可以讓我們達到比較優的效果。 通過將兩個數據集混合訓練,如果遇到來自分類集的圖片則只計算分類的Loss,遇到來自檢測集的圖片則計算完整的Loss。

    但是ImageNet對應分類有9000種,而COCO則只提供80種目標檢測,作者使用multi-label模型,即假定一張圖片可以有多個label,并且不要求label間獨立。通過作者Paper里的圖來說明,由于ImageNet的類別是從WordNet選取的,作者采用以下策略重建了一個樹形結構(稱為分層樹):

    1.遍歷Imagenet的label,然后在WordNet中尋找該label到根節點(指向一個物理對象)的路徑;
    2.如果路徑直有一條,那么就將該路徑直接加入到分層樹結構中;
    3.否則,從剩余的路徑中選擇一條最短路徑,加入到分層樹。
    這個分層樹我們稱之為 WordTree,作用就在于將兩種數據集按照層級進行結合。

    分類時的概率計算借用了決策樹思想,某個節點的概率值等于該節點到根節點的所有條件概率之積。最終結果是一顆 WordTree (視覺名詞組成的層次結構模型)。用WordTree執行分類時,預測每個節點的條件概率。如果想求得特定節點的絕對概率,只需要沿著路徑做連續乘積。例如,如果想知道一張圖片是不是“Norfolk terrier ”需要計算:
    在這里插入圖片描述

    為了驗證這一個方法,在WordTree上訓練Darknet19的model,使用1000類的ImageNet進行訓練,為了建立WordtTree 1K,把所有中間詞匯加入到WordTree上,把標簽空間從1000擴大到了1369。在訓練過程中,如果有一個圖片的標簽是”Norfolk terrier“,那么這個圖片還會獲得”狗“(dog)以及“哺乳動物”(mammal)等標簽。總之現在一張圖片是多標記的,標記之間不需要相互獨立。

    如Figure5所示,之前的ImageNet分類是使用一個大softmax進行分類。而現在,WordTree只需要對同一概念下的同義詞進行softmax分類。

    使用相同的訓練參數,這種分層結構的Darknet19達到71.9%top-1精度和90.4%top-5精確度,精度只有微小的下降。

    這種方法的好處:在對未知或者新的物體進行分類時,性能降低的很優雅(gracefully)。比如看到一個狗的照片,但不知道是哪種種類的狗,那么就高置信度(confidence)預測是”狗“,而其他狗的種類的同義詞如”哈士奇“”牛頭梗“”金毛“等這些則低置信度。
    在這里插入圖片描述

  • Datasets combination with wordtree

    用WordTree 把數據集合中的類別映射到分層樹中的同義詞上,例如上圖Figure 6,WordTree混合ImageNet與COCO。

  • Joint classification and detection

    作者的目的是:訓練一個Extremely Large Scale檢測器。所以訓練的時候使用WordTree混合了COCO檢測數據集與ImageNet中的Top9000類,混合后的數據集對應的WordTree有9418個類。另一方面,由于ImageNet數據集太大了,作者為了平衡一下兩個數據集之間的數據量,通過過采樣(oversampling)COCO數據集中的數據,使COCO數據集與ImageNet數據集之間的數據量比例達到1:4。

    YOLO9000的訓練基于YOLO v2的構架,但是使用3priors而不是5來限制輸出的大小。當網絡遇到檢測數據集中的圖片時則正常地反方向傳播,當遇到分類數據集圖片的時候,只使用分類的loss功能進行反向傳播。同時作者假設IOU最少為 .3。最后根據這些假設進行反向傳播。

    使用聯合訓練法,YOLO9000使用COCO檢測數據集學習檢測圖片中的物體的位置,使用ImageNet分類數據集學習如何從大量的類別中進行分類。
    為了評估這一方法,使用ImageNet Detection Task對訓練結果進行評估。
    評估結果:
    YOLO9000取得19.7mAP。
    在未學習過的156個分類數據上進行測試,mAP達到16.0。
    YOLO9000的mAP比DPM高,而且YOLO有更多先進的特征,YOLO9000是用部分監督的方式在不同訓練集上進行訓練,同時還能檢測9000個物體類別,并保證實時運行。

雖然YOLO9000對動物的識別性能很好,但是對類別為”sungalsses“或者”swimming trunks“這些衣服或者裝備的類別,它的識別性能不是很好,見table 7。這跟數據集的數據組成有很大關系。

總結

YOLO v2 代表著目前最先進物體檢測的水平,在多種監測數據集中都要快過其他檢測系統,并可以在速度與精確度上進行權衡。

YOLO 9000 的網絡結構允許實時地檢測超過9000種物體分類,這歸功于它能同時優化檢測與分類功能。使用WordTree來混合來自不同的資源的訓練數據,并使用聯合優化技術同時在ImageNet和COCO數據集上進行訓練,YOLO9000進一步縮小了監測數據集與識別數據集之間的大小代溝。

文章還提出了WordTree,數據集混合訓練,多尺寸訓練等全新的訓練方法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453705.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453705.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453705.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

tcpmp 編譯 源代碼分析

TCPMP源代碼分析 TCPMP源代碼分析 播放器主要由核心框架模塊(common工程)和解碼器、分離器插件組成。TCPMP的插件非常多,其中主要的插件有:interface插件實現了TCPMP的界面,ffmpeg是系統主要的音視頻解碼模塊&#xff…

使用zerorpc踩的第一個坑:

Server端代碼:注意s.run() 和 s.run的區別,一個括號搞死我了.如果不加括號,服務端服務是不會啟動的,客戶端就會報連接超時的錯誤 Server端在本機所有IP上監聽4242端口的tcp協議 import zerorpcclass HelloRPC(object):   def __…

django存入mysql數據庫_django如何存數據到一個mysql數據表里面

讓我們聊聊這個話題, django如何存數據至mysql數據表里面,你會用什么方法?正常情況下,我們form邏輯處理后,直接form.save(),是,這個方法沒毛病;但有沒有其他的方法呢?假如…

【Luogu】P3343地震后的幻想鄉(對積分概率進行DP)

題目鏈接 神難qwq。配合rqy的博客食用。 首先我們學到有一個概率函數$p(x)$表示某事件發生概率取值小于x的函數。這個函數有什么特點呢? 那就是$\int_{-∞}^{∞}p(x)dx1$ 這個是顯然的 然后我們令p(x)為首次聯通的時間的概率分布函數 這其實等價于生成樹的最大權邊等…

深度學習目標檢測之 YOLO v3

論文名:《YOLOv3: An Incremental Improvement》論文地址 https://pjreddie.com/media/files/papers/YOLOv3.pdfhttps://arxiv.org/abs/1804.02767v1 論文代碼 https://github.com/yjh0410/yolov2-yolov3_PyTorchkeras:https://github.com/qqwweee/keras…

30本pdf完整版的經典Linux學習和開發教程和資料下載 android arm java 資料大全

史上最牛的Linux內核學習方法論 點擊下載我的arm_linux移植筆記 點擊下載S3C2440完全開發流程 點擊下載Linux系統命令及其使用詳解完整版 點擊下載Linux主要shell命令詳解 點擊下載深入理解Linux內核(第三版 pdf英文版) 點擊下載深入分析Linux內核源代碼教程pdf完整版 點擊下…

Fedex Ship Manager Software安裝

本文出自Simmy的個人blog:西米在線 http://simmyonline.com/archives/552.html 這個軟件的安裝頗費了我一番周章,特地Log之。下載:http://www.fedex.com/apac_english/fsmsoftware/ 安裝完后,接著輸入用戶信息,然后連…

mysql5.7.11解壓版安裝_Mysql5.7.11在windows10上的安裝與配置(解壓版)

第一步my-default.ini 添加配置:#綁定IPv4和3306端bind-address 127.0.0.1port 3306# 設置mysql的安裝目basedir E:\mysql# 設置mysql數據庫的數據的存放目datadirE:\mysql\data# 允許最大連接數max_connections200#設置默認字符集為utf8default-character-setutf…

【轉】博客美化(3)為博客添加一個漂亮的分享按鈕

閱讀目錄 1.社會化分享2.選擇一個分享按鈕3.添加到博客園博客博客園美化相關文章目錄:博客園博客美化相關文章目錄 在前2篇博客“博客美化(1)基本后臺設置與樣式設置”與"博客美化(2)自定義博客樣式細節"中詳細介紹了博客樣式設置的相關問題,當…

深度學習目標檢測之 YOLO v4

論文原文:https://arxiv.org/abs/2004.10934代碼 原版c: https://github.com/AlexeyAB/darknetkeras:https://github.com/Ma-Dan/keras-yolo4pytorch:https://github.com/Tianxiaomo/pytorch-YOLOv4 前言 2020年YOLO系列的作者…

[Android] 年年有魚手機主題

自制的年年有魚手機主題,希望大家喜歡!~ 下載地址:https://yunpan.cn/cqauQbiM97idd (提取碼:d272) 本文轉自haiyang45751CTO博客,原文鏈接: http://blog.51cto.com/haiyang457/1…

mysql 小數做索引_10 分鐘掌握 MySQL 的索引查詢優化技巧

本文的內容是總結一些MySQL的常見使用技巧,以供沒有DBA的團隊參考。如無特殊說明,存儲引擎以InnoDB為準。MySQL的特點了解MySQL的特點有助于更好的使用MySQL,MySQL和其它常見數據庫最大的不同在于存在存儲引擎這個概念,存儲引擎負…

模塊與包

一 模塊介紹 1、什么是模塊? #常見的場景:一個模塊就是一個包含了一組功能的python文件,比如spam.py,模塊名為spam,可以通過import spam使用。#在python中,模塊的使用方式都是一樣的,但其實細說的話&#x…

Linux 狀態命令之 sar

簡介 sar(System Activity Reporter 系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁盤 I/O、CPU 效率、內存使用狀…

解決eclipse + pydev 編譯過程中有中文的問題

最近在學習python編程,開發環境設置好了,是用eclipse pydev 來做開發的環境,配置好了之后,需要解決的一個關鍵問題就是老問題了:如何解決代碼中的中文問題。。。 其實但我們在配置編程環境的時候,就需要設…

程序員的思考--終于確定了自己的技術發展方向

經過了將近5年的工作沉淀以后,終于確定了自己的職業發展方向。從現在開始終于可以有的放矢了,不再迷茫了。回想以往,找到這個方向,確實不是一件容易的事情,一路也是迷茫的走過來,隨著知識和工作經驗的積累&…

mysql正在運行安全文件怎么辦_MySQL服務器運行的安全文件化選項,所以它不能執行該語句什么情? 愛問知識人...

MySQL的事務支持不是綁定在MySQL服務器本身,而是與存儲引擎相關1。MyISAM:不支持事務,用于只讀程序提高性能 2。InnoDB:支持ACID事務、行級鎖、并發 3。Berkeley DB:支持事務一個事務是一個連續的一組數據庫操作&#…

C++項目參考解答:累加求圓周率

【項目-累加求圓周率】 用例如以下公式求π的近似值&#xff08;計算直到最后一項的絕對值小于10?5&#xff09; π41?1315?17...【參考解答】 #include <iostream> using namespace std; int main( ) {int n,sign;double total,f;n1;total0;sign1;f1; //用f代表待累加…

[ASP.NET AJAX]類似.NET框架的JavaScript擴展

最近AJAX風靡全世界&#xff0c;在CommunityServer中他運用了自己定義的封裝了js&#xff0c;并且可以跨瀏覽器&#xff0c;在較小的應用程序中&#xff0c;他比較適合&#xff0c;而且使用也比較簡單。但是對微軟的Microsoft AJAX還是一點不了解的我&#xff0c;從今天開始也要…

mysql 連接 指定字符集_關于Mysql連接池配置指定字符集的問題

問題是這樣的&#xff0c;我在寫一個網站&#xff0c;打算使用連接池。我使用J2EE開發&#xff0c;開始使用的是直連的方式&#xff0c;附上代碼public class ConnDb {private String getDriver "com.mysql.jdbc.Driver";private String getUrl "jdbc:mysql:/…