在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 小目標(biāo)Trick | Detectron2、MMDetection、YOLOv5都通用的小目標(biāo)檢測(cè)解決方案

            小目標(biāo)Trick | Detectron2、MMDetection、YOLOv5都通用的小目標(biāo)檢測(cè)解決方案

            發(fā)布人:CV研究院 時(shí)間:2022-11-20 來源:工程師 發(fā)布文章
            檢測(cè)小目標(biāo)和遠(yuǎn)程目標(biāo)檢測(cè)是監(jiān)控應(yīng)用中的一個(gè)主要挑戰(zhàn)。這些物體由圖像中少量的像素表示,缺乏足夠的細(xì)節(jié),使得傳統(tǒng)的檢測(cè)器難以檢測(cè)。在這項(xiàng)工作中,提出了一個(gè)名為切片輔助超推理(SAHI)的開源框架,該框架為小目標(biāo)檢測(cè)提供了一個(gè)通用的切片輔助推理和微調(diào)管道。所提出的技術(shù)是通用的,因?yàn)樗梢詰?yīng)用在任何可用的目標(biāo)檢測(cè)器之上,而不需要進(jìn)行任何微調(diào)。


            00

            圖片

            前言

            圖片

            利用Visdrone和xView空中目標(biāo)檢測(cè)數(shù)據(jù)集上的目標(biāo)檢測(cè)Baseline的實(shí)驗(yàn)評(píng)估表明,該推理方法可將FCOS、VFNet和TOOD檢測(cè)器的目標(biāo)檢測(cè)AP分別提高6.8%、5.1%和5.3%。此外,通過切片輔助微調(diào)可以進(jìn)一步提高檢測(cè)精度,從而按相同的順序累計(jì)增加了12.7%、13.4%和14.5%的AP。

            所提出的技術(shù)已與Detectron2、MMDetection和YOLOv5模型完成集成。

            開源地址:https://github.com/obss/sahi

            圖片sliced_inference

            1簡(jiǎn)介

            近年來,目標(biāo)檢測(cè)在人臉檢測(cè)、視頻目標(biāo)檢測(cè)、視頻監(jiān)控、自動(dòng)駕駛汽車等不同應(yīng)用領(lǐng)域得到了廣泛的研究。在這一領(lǐng)域,深度學(xué)習(xí)架構(gòu)的采用導(dǎo)致產(chǎn)生了高度精確的方法,如Faster R-CNN、RetinaNet,進(jìn)一步發(fā)展為Cascade R-CNN、VarifocalNet和變體。

            所有這些最近的檢測(cè)器都是在著名的數(shù)據(jù)集上進(jìn)行訓(xùn)練和評(píng)估的,如ImageNet、PascalVOC12、MSCOCO。這些數(shù)據(jù)集大多涉及低分辨率圖像(640×480),包括相當(dāng)大的像素覆蓋的相當(dāng)大的目標(biāo)(平均覆蓋圖像高度的60%)。雖然訓(xùn)練后的模型對(duì)這些類型的輸入數(shù)據(jù)具有成功的檢測(cè)性能,但在高端無人機(jī)和監(jiān)視攝像機(jī)生成的高分辨率圖像中,它們對(duì)小目標(biāo)檢測(cè)任務(wù)的精度明顯較低。

            圖片

            無人機(jī)、4K攝像機(jī)和深度學(xué)習(xí)研究的最新進(jìn)展使遠(yuǎn)程目標(biāo)檢測(cè)成為可能,符合檢測(cè)、觀察、識(shí)別和DORI標(biāo)準(zhǔn)。DORI標(biāo)準(zhǔn)定義了不同任務(wù)對(duì)象的最小像素高度:10%的圖像高度需要檢測(cè),20%的圖像需要識(shí)別物體(全高清視頻中的108像素)。相對(duì)較小的像素覆蓋推動(dòng)了基于CNN的目標(biāo)檢測(cè)方法的局限性,此外,高分辨率圖像在計(jì)算和內(nèi)存需求方面需要更大的需求。

            在本文中提出了一種基于切片輔助推理和微調(diào)的通用解決方案,用于高分辨率圖像上的小目標(biāo)檢測(cè),同時(shí)保持較低的復(fù)雜度和內(nèi)存需求。圖1顯示了Visdrone測(cè)試集樣本圖像上小目標(biāo)檢測(cè)的改進(jìn)。

            2相關(guān)工作

            最近的基于學(xué)習(xí)的目標(biāo)檢測(cè)技術(shù)可分為兩種主要類型。單級(jí)探測(cè)器,如SSD、YOLO、RetinaNet,直接預(yù)測(cè)物體的位置,而沒有一個(gè)明確的建議階段。兩階段區(qū)域建議的方法,如Fast R-CNN、Faster R-CNN、Cascade R-CNN,涉及區(qū)域建議階段。然后對(duì)這些建議框進(jìn)行細(xì)化,以定義目標(biāo)的位置和大小。通常,單階段方法比兩階段方法更快,而后者具有更高的精度。

            最近,Anchor-Free檢測(cè)器開始引起人們的注意。他們消除了Anchor box的使用,并將特征金字塔上的每個(gè)點(diǎn)分類為前景或背景,并直接預(yù)測(cè)從前景點(diǎn)到GT邊界框的距離,從而產(chǎn)生檢測(cè)。FCOS是第一個(gè)目標(biāo)檢測(cè)器,消除了預(yù)定義Anchor box集的需要,并需要計(jì)算需要。VarifocalNet(VFNet)學(xué)習(xí)預(yù)測(cè)IoU-aware classification score,它將目標(biāo)存在的置信度和定位精度混合在一起,作為一個(gè)邊界框的檢測(cè)分?jǐn)?shù)。學(xué)習(xí)是由基于一個(gè)新的星形邊界框特征表示所提出的Varifocal Loss(VFL)監(jiān)督的。TOOD以基于學(xué)習(xí)的方式將2個(gè)任務(wù)(目標(biāo)分類和定位)明確對(duì)齊,通過設(shè)計(jì)的樣本分配方案和任務(wù)對(duì)齊損失,在學(xué)習(xí)任務(wù)交互和任務(wù)特定特征和任務(wù)對(duì)齊學(xué)習(xí)之間提供了更好的平衡。

            針對(duì)一般目標(biāo)檢測(cè)的算法在包含小而密集目標(biāo)的高分辨率圖像上表現(xiàn)不佳,導(dǎo)致了針對(duì)小目標(biāo)檢測(cè)的特定方法。有研究采用基于粒子群優(yōu)化(PSO)和細(xì)菌覓食優(yōu)化(BFO)的學(xué)習(xí)策略(PBLS)對(duì)分類器和損失函數(shù)進(jìn)行優(yōu)化。然而,這些對(duì)原始模型的重大修改阻止了從預(yù)訓(xùn)練的權(quán)重進(jìn)行微調(diào),需要從頭開始訓(xùn)練。

            此外,由于不尋常的優(yōu)化步驟,它們很難適應(yīng)目前的檢測(cè)器。該方法對(duì)具有小目標(biāo)的圖像進(jìn)行過采樣,并通過復(fù)制多個(gè)小目標(biāo)對(duì)其進(jìn)行擴(kuò)充。然而,這種增強(qiáng)需要分割注釋,因此,它與目標(biāo)檢測(cè)數(shù)據(jù)集不兼容。有方法可以從原始圖像中截取放大區(qū)域,從中學(xué)習(xí)到更豐富的小目標(biāo)特征。額外的特征對(duì)檢測(cè)性能有積極的貢獻(xiàn),但要擴(kuò)大的區(qū)域的選擇帶來了計(jì)算負(fù)擔(dān)。

            也有研究提出了一種用于小目標(biāo)檢測(cè)的全卷積網(wǎng)絡(luò),該網(wǎng)絡(luò)包含了一種早期的視覺注意力機(jī)制,用來選擇最有希望的包含小目標(biāo)及其上下文的區(qū)域。還有研究提出了一種基于切片的技術(shù),但其實(shí)現(xiàn)并不通用,僅適用于特定的目標(biāo)檢測(cè)器。也有研究提出了一種新型的小型行人檢測(cè)網(wǎng)絡(luò)(JCS-Net),該網(wǎng)絡(luò)將分類任務(wù)和超分辨率任務(wù)整合在一個(gè)統(tǒng)一的框架中。

            有學(xué)者提出了一種利用生成式對(duì)抗網(wǎng)絡(luò)(GAN)從模糊的小人臉直接生成清晰的高分辨率人臉的算法。然而,由于這些技術(shù)提出了新的檢測(cè)器體系結(jié)構(gòu),它們需要從頭開始用大型數(shù)據(jù)集進(jìn)行預(yù)訓(xùn)練,這是昂貴的。

            3本文方法

            為了解決小目標(biāo)檢測(cè)問題,作者提出了一個(gè)在微調(diào)和推理階段基于切片的通用框架。將輸入圖像劃分為重疊的切片,對(duì)于小目標(biāo)相對(duì)于輸入網(wǎng)絡(luò)的圖像產(chǎn)生相對(duì)較大的像素區(qū)域。

            3.1 Slicing Aided Fine-tuning(SF)

            圖片圖2 Slicing Aided Fine-tuning(SF)

            廣泛使用的目標(biāo)檢測(cè)框架,如Detectron2、MMDetection和YOLOv5,在ImageNet和MSCOCO等數(shù)據(jù)集上提供預(yù)訓(xùn)練的權(quán)重。這允許使用更小的數(shù)據(jù)集和更短的訓(xùn)練跨度來對(duì)模型進(jìn)行微調(diào),而不是使用大數(shù)據(jù)集從頭開始進(jìn)行訓(xùn)練。

            這些常見的數(shù)據(jù)集大多涉及低分辨率的圖像(640×480),它們具有相當(dāng)大的目標(biāo)和較大的像素覆蓋(平均覆蓋圖像高度的60%)。使用這些數(shù)據(jù)集進(jìn)行預(yù)訓(xùn)練的模型為相似的輸入提供了非常成功的檢測(cè)性能。另一方面,在由高端無人機(jī)和監(jiān)視攝像頭生成的高分辨率圖像中,它們對(duì)小目標(biāo)檢測(cè)任務(wù)的精度明顯較低。

            為了克服這個(gè)問題,作者通過從圖像微調(diào)數(shù)據(jù)集中提取patch來增強(qiáng)數(shù)據(jù)集,如圖2所示。每幅圖像、、...、被分割成重疊的patch 、、…在預(yù)定義范圍內(nèi)選擇N和N的被視為超參數(shù)。然后在微調(diào)過程中,通過保留高寬比來調(diào)整patch的大小,使圖像寬度在800~1333像素之間,以獲得增強(qiáng)圖像、、...、,因此相對(duì)的目標(biāo)大小比原始圖像更大。

            這些圖像、...、,以及原始圖像、、...、(便于檢測(cè)大物體),在微調(diào)過程中被利用。需要注意的是,隨著patch size的減小,較大的物體可能不適合一個(gè)切片和交叉區(qū)域,這可能導(dǎo)致對(duì)較大物體的檢測(cè)性能較差。

            3.2 Slicing Aided Hyper Inference(SAHI)

            圖片圖3 Slicing Aided Hyper Inference(SAHI)

            在推理步驟中也使用了切片方法,如圖3所示。首先,將原始查詢圖像I分割成1個(gè)M×N個(gè)重疊的patch 、、……。然后,在保持高寬比的同時(shí),調(diào)整每個(gè)patch的大小。然后,對(duì)每個(gè)重疊的patch都獨(dú)立地應(yīng)用目標(biāo)檢測(cè)正向傳遞。使用原始圖像的一個(gè)可選的全推理(FI)可以用于檢測(cè)較大的目標(biāo)。最后,重疊的預(yù)測(cè)結(jié)果,如果使用,F(xiàn)I結(jié)果使用NMS合并回原始大小。在NMS過程中,具有比預(yù)定義匹配閾值Tm的Union(IoU)比值更高的box被匹配,并且對(duì)于每個(gè)匹配,具有檢測(cè)概率低于的檢測(cè)被刪除。

            def slice_image(
                image: Union[str, Image.Image],
                coco_annotation_list: Optional[CocoAnnotation] = None,
                output_file_name: Optional[str] = None,
                output_dir: Optional[str] = None,
                slice_height: int = 512,
                slice_width: int = 512,
                overlap_height_ratio: float = 0.2,
                overlap_width_ratio: float = 0.2,
                min_area_ratio: float = 0.1,
                out_ext: Optional[str] = None,
                verbose: bool = False,
            )
             -> SliceImageResult:

                # define verboseprint
                verboselog = logger.info if verbose else lambda *a, **k: None

                def _export_single_slice(image: np.ndarray, output_dir: str, slice_file_name: str):
                    image_pil = read_image_as_pil(image)
                    slice_file_path = str(Path(output_dir) / slice_file_name)
                    # export sliced image
                    image_pil.save(slice_file_path)
                    verboselog("sliced image path: " + slice_file_path)

                # create outdir if not present
                if output_dir is not None:
                    Path(output_dir).mkdir(parents=True, exist_ok=True)

                # read image
                image_pil = read_image_as_pil(image)
                verboselog("image.shape: " + str(image_pil.size))

                image_width, image_height = image_pil.size
                if not (image_width != 0 and image_height != 0):
                    raise RuntimeError(f"invalid image size: {image_pil.size} for 'slice_image'.")
                slice_bboxes = get_slice_bboxes(
                    image_height=image_height,
                    image_width=image_width,
                    slice_height=slice_height,
                    slice_width=slice_width,
                    overlap_height_ratio=overlap_height_ratio,
                    overlap_width_ratio=overlap_width_ratio,
                )

                t0 = time.time()
                n_ims = 0

                # init images and annotations lists
                sliced_image_result = SliceImageResult(original_image_size=[image_height, image_width], image_dir=output_dir)

                # iterate over slices
                for slice_bbox in slice_bboxes:
                    n_ims += 1

                    # extract image
                    image_pil_slice = image_pil.crop(slice_bbox)

                    # process annotations if coco_annotations is given
                    if coco_annotation_list is not None:
                        sliced_coco_annotation_list = process_coco_annotations(coco_annotation_list, slice_bbox, min_area_ratio)

                    # set image file suffixes
                    slice_suffixes = "_".join(map(str, slice_bbox))
                    if out_ext:
                        suffix = out_ext
                    else:
                        try:
                            suffix = Path(image_pil.filename).suffix
                        except AttributeError:
                            suffix = ".jpg"

                    # set image file name and path
                    slice_file_name = f"{output_file_name}_{slice_suffixes}{suffix}"

                    # create coco image
                    slice_width = slice_bbox[2] - slice_bbox[0]
                    slice_height = slice_bbox[3] - slice_bbox[1]
                    coco_image = CocoImage(file_name=slice_file_name, height=slice_height, width=slice_width)

                    # append coco annotations (if present) to coco image
                    if coco_annotation_list:
                        for coco_annotation in sliced_coco_annotation_list:
                            coco_image.add_annotation(coco_annotation)

                    # create sliced image and append to sliced_image_result
                    sliced_image = SlicedImage(image=np.asarray(image_pil_slice), coco_image=coco_image, starting_pixel=[slice_bbox[0], slice_bbox[1]],)
                    sliced_image_result.add_sliced_image(sliced_image)

                # export slices if output directory is provided
                if output_file_name and output_dir:
                    conc_exec = concurrent.futures.ThreadPoolExecutor(max_workers=MAX_WORKERS)
                    conc_exec.map(_export_single_slice, sliced_image_result.images, [output_dir] * len(sliced_image_result), sliced_image_result.filenames,)

                verboselog("Num slices: " + str(n_ims) + " slice_height: " + str(slice_height) + " slice_width: " + str(slice_width),)

                return sliced_image_result

            4實(shí)驗(yàn)結(jié)果

            本文采用了MS COCO評(píng)估協(xié)議進(jìn)行評(píng)估,包括總體和尺寸方面的AP50評(píng)分。具體來說,AP50在所有類別的單個(gè)IoU閾值0.5處計(jì)算,最大檢測(cè)數(shù)設(shè)置為500。

            在表1和表2對(duì)原始圖像的常規(guī)推理中,以FI(Full inference)作為Baseline。SF(切片輔助微調(diào))是在表1和表2中patch大小分別為480-640和300-500的增強(qiáng)數(shù)據(jù)集上進(jìn)行微調(diào)的模型。

            SAHI(切片輔助Hyper Inference)是指表1和表2中patch大小分別為640×640和400×400的推理。OP(Overlap Patch)表示切片推理過程中Patch之間有25%的重疊。

            圖片表1

            從表1可以看出,SAHI使目標(biāo)檢測(cè)AP分別提高了6.8%、5.1%和5.3%。SF可進(jìn)一步提高檢測(cè)精度,F(xiàn)COS、VFNet和tod檢測(cè)器的累計(jì)AP分別提高12.7%、13.4%和14.5%。在推理過程中,應(yīng)用切片間25%的重疊,會(huì)增加小/中物體AP和整體AP,但略微降低大物體AP。增加是由切片預(yù)測(cè)的額外小目標(biāo)真陽性引起,減少是由匹配大GT框的切片預(yù)測(cè)的假陽性引起。小目標(biāo)檢測(cè)AP以SF最佳,SI次之,大目標(biāo)檢測(cè)AP以SF最佳,F(xiàn)I次之,證實(shí)了FI對(duì)大目標(biāo)檢測(cè)的貢獻(xiàn)。

            圖片表2

            xView數(shù)據(jù)集的結(jié)果如表2所示。由于xView目標(biāo)非常小,經(jīng)常使用原始圖像進(jìn)行訓(xùn)練,檢測(cè)性能較差,SF大大提高了結(jié)果。FI的集成使大目標(biāo)AP增加了3.0%,但導(dǎo)致小型/中型目標(biāo)AP略有下降,這是預(yù)期的,因?yàn)橐恍┹^大的目標(biāo)可能無法從較小的切片中檢測(cè)到。切片間25%的重疊可以增加2.9%的檢測(cè)AP。

            圖片圖3

            xView包含高度不平衡的60個(gè)目標(biāo)類別,盡管FCOS是一個(gè)較老的,據(jù)說較弱的檢測(cè)器,但對(duì)于這個(gè)數(shù)據(jù)集,F(xiàn)COS比VFNet有更好的性能。這一觀察結(jié)果證實(shí)了FCOS中Focal Loss的有效性,該方法旨在處理類別失衡。TOOD在訓(xùn)練過程中也受益于Focal Loss,在3種檢測(cè)器中檢測(cè)效果最好。tod檢測(cè)器在Visdrone和xView數(shù)據(jù)集上的誤差分析結(jié)果分別如圖3和圖4所示。

            圖片圖4

            5參考

            [1].SLICING AIDED HYPER INFERENCE AND FINE-TUNING FOR SMALL OBJECT DETECTION


            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



            關(guān)鍵詞: AI

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉