最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TorchVision Transforms API目標(biāo)檢測實例語義分割視頻類

 更新時間:2022年11月09日 15:37:09   作者:神經(jīng)星星  
這篇文章主要為大家介紹了TorchVision Transforms API大升級,支持目標(biāo)檢測、實例/語義分割及視頻類任務(wù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

內(nèi)容導(dǎo)讀

TorchVision Transforms API 擴展升級,現(xiàn)已支持目標(biāo)檢測、實例及語義分割以及視頻類任務(wù)。新 API 尚處于測試階段,開發(fā)者可以試用體驗。

本文首發(fā)自微信公眾號:PyTorch 開發(fā)者社區(qū)

TorchVision 現(xiàn)已針對 Transforms API 進(jìn)行了擴展, 具體如下:

  • 除用于圖像分類外,現(xiàn)在還可以用其進(jìn)行目標(biāo)檢測、實例及語義分割以及視頻分類等任務(wù);
  • 支持從 TorchVision 直接導(dǎo)入 SoTA 數(shù)據(jù)增強,如 MixUp、 CutMix、Large Scale Jitter 以及 SimpleCopyPaste。
  • 支持使用全新的 functional transforms 轉(zhuǎn)換視頻、Bounding box 以及分割掩碼 (Segmentation Mask)。

Transforms 當(dāng)前的局限性

穩(wěn)定版 TorchVision Transforms API,也也就是我們常說的 Transforms V1,只支持單個圖像,因此,只適用于分類任務(wù):

from torchvision import transforms
trans = transforms.Compose([
   transforms.ColorJitter(contrast=0.5),
   transforms.RandomRotation(30),
   transforms.CenterCrop(480),
])
imgs = trans(imgs)

上述方法不支持需要使用 Label 的目標(biāo)檢測、分割或分類 Transforms, 如 MixUp 及 cutMix。這使分類以外的計算機視覺任務(wù)都不能用 Transforms API 執(zhí)行必要的擴展。同時,這也加大了用 TorchVision 原語訓(xùn)練高精度模型的難度。

為了克服這個局限性,TorchVision 在其 reference script 中提供了自定義實現(xiàn), 用于演示所有任務(wù)中的增強是如何執(zhí)行的。

盡管這種做法使得開發(fā)者能夠訓(xùn)練出高精度的分類、目標(biāo)檢測及分割模型,但做法比較粗糙,TorchVision 二進(jìn)制文件中還是不能導(dǎo)入 Transforms。

全新的 Transforms API

Transforms V2 API 支持視頻、bounding box、label 以及分割掩碼, 這意味著它為許多計算機視覺任務(wù)提供了本地支持。新的解決方案是一種更為直接的替代方案:

from torchvision.prototype import transforms
# Exactly the same interface as V1:
trans = transforms.Compose([
    transforms.ColorJitter(contrast=0.5),
    transforms.RandomRotation(30),
    transforms.CenterCrop(480),
])
imgs, bboxes, labels = trans(imgs, bboxes, labels)

全新的 Transform Class 無需強制執(zhí)行特定的順序或結(jié)構(gòu),就可以接收任意數(shù)量的輸入:

# Already supported:
trans(imgs)  # Image Classification
trans(videos)  # Video Tasks
trans(imgs_or_videos, labels)  # MixUp/CutMix-style Transforms
trans(imgs, bboxes, labels)  # Object Detection
trans(imgs, bboxes, masks, labels)  # Instance Segmentation
trans(imgs, masks)  # Semantic Segmentation
trans({"image": imgs, "box": bboxes, "tag": labels})  # Arbitrary Structure
# Future support:
trans(imgs, bboxes, labels, keypoints)  # Keypoint Detection
trans(stereo_images, disparities, masks)  # Depth Perception
trans(image1, image2, optical_flows, masks)  # Optical Flow

functional API 已經(jīng)更新,支持所有輸入必要的 signal processing kernel,如 resizing, cropping, affine transforms, padding 等:

from torchvision.prototype.transforms import functional as F
# High-level dispatcher, accepts any supported input type, fully BC
F.resize(inpt, resize=[224, 224])
# Image tensor kernel
F.resize_image_tensor(img_tensor, resize=[224, 224], antialias=True)
# PIL image kernel
F.resize_image_pil(img_pil, resize=[224, 224], interpolation=BILINEAR)
# Video kernel
F.resize_video(video, resize=[224, 224], antialias=True)
# Mask kernel
F.resize_mask(mask, resize=[224, 224])
# Bounding box kernel
F.resize_bounding_box(bbox, resize=[224, 224], spatial_size=[256, 256])

API 使用 Tensor subclassing 來包裝輸入,附加有用的元數(shù)據(jù),并 dispatch 到正確的內(nèi)核。 利用 TorchData Data Pipe 的 Datasets V2 相關(guān)工作完成后,就不再需要手動包裝輸入了。目前,用戶可以通過以下方式手動包裝輸入:

from torchvision.prototype import features
imgs = features.Image(images, color_space=ColorSpace.RGB)
vids = features.Video(videos, color_space=ColorSpace.RGB)
masks = features.Mask(target["masks"])
bboxes = features.BoundingBox(target["boxes"], format=BoundingBoxFormat.XYXY, spatial_size=imgs.spatial_size)
labels = features.Label(target["labels"], categories=["dog", "cat"])

除新 API 之外,PyTorch 官方還為 SoTA 研究中用到的一些數(shù)據(jù)增強提供了重要實現(xiàn),如 MixUp、 CutMix、Large Scale Jitter、 SimpleCopyPaste、AutoAugmentation 方法以及一些新的 Geometric、Colour 和 Type Conversion transforms。

該 API 繼續(xù)支持 single image 或 batched input image 的 PIL 和 Tensor 后端,并在 functional API 上保留了 JIT-scriptability。這使得圖像映射得以從 uint8 延遲到 float, 帶來了性能的進(jìn)一步提升。

它目前可以在 TorchVision 的原型區(qū)域 (prototype area) 中使用,并且支持從 nightly build 版本中導(dǎo)入。經(jīng)驗證,新 API 與先前實現(xiàn)的準(zhǔn)確性一致。

當(dāng)前的局限性

functional API (kernel) 仍然保持 JIT-scriptable 及 fully-BC,Transform Class 提供了相同的接口,卻無法使用腳本。

這是因為 Transform Class 使用的是張量子類 (Tensor Subclassing),且接收任意數(shù)量的輸入,這是 JIT 所不支持的。該局限將在后續(xù)版本中不斷優(yōu)化。

一個端到端示

以下是一個新 API 示例,它可以同時使用 PIL 圖像和張量。

測試圖片:

代碼示例:

import PIL
from torchvision import io, utils
from torchvision.prototype import features, transforms as T
from torchvision.prototype.transforms import functional as F
# Defining and wrapping input to appropriate Tensor Subclasses
path = "COCO_val2014_000000418825.jpg"
img = features.Image(io.read_image(path), color_space=features.ColorSpace.RGB)
# img = PIL.Image.open(path)
bboxes = features.BoundingBox(
    [[2, 0, 206, 253], [396, 92, 479, 241], [328, 253, 417, 332],
     [148, 68, 256, 182], [93, 158, 170, 260], [432, 0, 438, 26],
     [422, 0, 480, 25], [419, 39, 424, 52], [448, 37, 456, 62],
     [435, 43, 437, 50], [461, 36, 469, 63], [461, 75, 469, 94],
     [469, 36, 480, 64], [440, 37, 446, 56], [398, 233, 480, 304],
     [452, 39, 463, 63], [424, 38, 429, 50]],
    format=features.BoundingBoxFormat.XYXY,
    spatial_size=F.get_spatial_size(img),
)
labels = features.Label([59, 58, 50, 64, 76, 74, 74, 74, 74, 74, 74, 74, 74, 74, 50, 74, 74])
# Defining and applying Transforms V2
trans = T.Compose(
    [
        T.ColorJitter(contrast=0.5),
        T.RandomRotation(30),
        T.CenterCrop(480),
    ]
)
img, bboxes, labels = trans(img, bboxes, labels)
# Visualizing results
viz = utils.draw_bounding_boxes(F.to_image_tensor(img), boxes=bboxes)
F.to_pil_image(viz).show()

以上就是TorchVision Transforms API目標(biāo)檢測實例語義分割視頻類的詳細(xì)內(nèi)容,更多關(guān)于TorchVision Transforms API的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python 函數(shù)返回值的示例代碼

    Python 函數(shù)返回值的示例代碼

    這篇文章主要介紹了Python 函數(shù)返回值的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 基于Python爬蟲采集天氣網(wǎng)實時信息

    基于Python爬蟲采集天氣網(wǎng)實時信息

    這篇文章主要介紹了基于Python爬蟲采集天氣網(wǎng)實時信息,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 使用ChatGPT進(jìn)行Abaqus二次開發(fā)詳解

    使用ChatGPT進(jìn)行Abaqus二次開發(fā)詳解

    這篇文章主要為大家介紹了使用ChatGPT進(jìn)行Abaqus二次開發(fā)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • python 函數(shù)內(nèi)部修改外部變量的方法

    python 函數(shù)內(nèi)部修改外部變量的方法

    今天小編就為大家分享一篇python 函數(shù)內(nèi)部修改外部變量的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python 字典一個鍵對應(yīng)多個值的方法

    Python 字典一個鍵對應(yīng)多個值的方法

    這篇文章主要介紹了Python 字典一個鍵對應(yīng)多個值的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python判斷回文鏈表的方法

    Python判斷回文鏈表的方法

    這篇文章主要介紹了Python判斷回文鏈表,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • Django實現(xiàn)自定義路由轉(zhuǎn)換器

    Django實現(xiàn)自定義路由轉(zhuǎn)換器

    有時候上面的內(nèi)置的url轉(zhuǎn)換器并不能滿足我們的需求,因此django給我們提供了一個接口可以讓我們自己定義自己的url轉(zhuǎn)換器,那么如何實現(xiàn),本文就來介紹一下
    2021-05-05
  • Python設(shè)計模式中的行為型策略模式

    Python設(shè)計模式中的行為型策略模式

    這篇文章主要介紹了Python設(shè)計模式中的行為型策略模式,策略模式即Strategy?Pattern,其定義了算法家族,分別封裝起來,讓他們之間可以相互替換,此模式讓算法的變化,不會影響到使用算法的客戶,下文相關(guān)資料具有一點的參考價值,需要的小伙伴可以參考一下
    2022-02-02
  • 詳解Python 中的容器 collections

    詳解Python 中的容器 collections

    這篇文章主要介紹了Python 中的容器 collections的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • 詳解Python prometheus_client使用方式

    詳解Python prometheus_client使用方式

    本文主要介紹了Python prometheus_client使用方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論

卓尼县| 平山县| 循化| 大石桥市| 扎兰屯市| 溆浦县| 红安县| 宜丰县| 保康县| 日土县| 和静县| 霍林郭勒市| 宿迁市| 铅山县| 怀安县| 建瓯市| 张家口市| 长葛市| 淮滨县| 太康县| 洛扎县| 九龙坡区| 高安市| 吉安县| 朔州市| 芒康县| 绵阳市| 鲁甸县| 金阳县| 淮阳县| 肃宁县| 庆安县| 澄城县| 淮安市| 高台县| 北碚区| 鄯善县| 潜山县| 兴海县| 汉川市| 玉树县|