近日,何愷明團隊所在的Facebook AI推出ResNeXt-101模型,利用Instagram上的用戶標記圖片作為預訓練數據集,省去了人工標記數據的巨額成本,而且使用中只需微調,性能即超越了ImageNet任務的SOTA水平。
目前,幾乎所有最先進的視覺感知算法都依賴于相同的范式:(1)在手動注釋的大型圖像分類數據集上預訓練卷積網絡,(2)在較小的特定任務的數據集上微調網絡。這個模式已經廣泛使用了好多年,并取得了明顯的進展。比如:物體檢測,語義分割,人體姿勢估計,視頻識別,單眼深度估計等。
事實上,如果沒有有監督式預訓練,很多方法現在還被認為是一種蠻干 ImageNet數據集實際上是預訓練數據集。我們現在實際上對數據集的預訓練了解相對較少。其原因很多:比如現存的預訓練數據集數量很少,構建新數據集是勞動密集型的工作,需要大量的計算資源來進行實驗。然而,鑒于預訓練過程在機器學習相關領域的核心作用,擴大我們在這一領域的科學知識是非常重要的。
本文試圖通過研究一個未開發的數據體系來解決這個復雜的問題:使用外部社交媒體上數十億的帶有標簽的圖像作為數據源。該數據源具有大而且不斷增長的優點,而且是“免費”注釋的,因為數據不需要手動標記。顯而易見,對這些數據的訓練將產生良好的遷移學習結果。
本文的主要成果是,在不使用手動數據集管理或復雜的數據清理的情況下,利用數千個不同主題標簽作為標記的數十億幅Instagram圖像進行訓練的模型,表現出了優異的傳輸學習性能。在目標檢測和圖像分類任務上實現了對當前SOTA性能的提升。在ImageNet-1k圖像分類數據集上獲得single-crop 最高準確率達到了85.4%,AP達到了45.2%。當在ImageNet-1k上訓練(或預訓練)相同模型時,分數分別為79.8%和43.7%。然而,我們的主要目標是提供關于此前未開發的制度的新實驗數據。為此,我們進行了大量實驗,揭示了一些有趣的趨勢。
表1:圖像分類數據集的摘要。每個數據集標明數據來源和功能(訓練集,驗證集,測試集),圖像數量I和標簽數量L。
ImageNet數據集和模型
除了標準的IN-1k數據集之外,我們還嘗試了包含1420萬幅圖像和22000標簽的完整ImageNet2011完整版本的更大子集。我們構建了包含5k和9k標簽的訓練集和驗證集。
對于5k標簽集組,我們使用現在標準的IN-5k(6.6M訓練圖像)。對于9k標簽集,我們遵循用于構建IN-5k數據集的相同協議,采用下一個最頻繁的4k標簽和所有相關圖像(10.5M訓練圖像)。在兩種情況下,均使用50個圖像進行驗證。
我們使用具有分組卷積層的殘差網絡ResNeXt 。實驗中使用ResNeXt-101 32×Cd,它有101層,32組,組寬分別為:4(8B乘加FLOPs,43M參數),8(16B,88M),16(36B,193M), 32(87B,466M)和48(153B,829M)。我們認為實驗結果可以推廣到其他架構。
與ImageNet相比,我們使用的Instagram數據集可能包含每個圖像的多個標簽(因為用戶指定了多個主題標簽)。每個圖像的平均標簽數量因數據集而異;例如,train-IG-1B-17k每個圖像最多包含2個主題標簽。
實驗結果與性能
表2:使用不同規模、不同參數配置的ResNeXt-101模型獲得的不同性能結果比較
圖1:使用不同規模和參數配置的ResNeXt-101模型在ImageNet和Instagram標記數據集的分類性能的比較
運行實例及相關代碼
# Download an example image from the pytorch websiteimport urlliburl, filename = ("https://github.com/pytorch/hub/raw/master/dog.jpg", "dog.jpg")try: urllib.URLopener().retrieve(url, filename)except: urllib.request.urlretrieve(url, filename)
# sample execution (requires torchvision)from PIL import Imagefrom torchvision import transformsinput_image = Image.open(filename)preprocess = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),])input_tensor = preprocess(input_image)input_batch = input_tensor.unsqueeze(0) # create a mini-batch as expected by the model# move the input and model to GPU for speed if availableif torch.cuda.is_available(): input_batch = input_batch.to('cuda') model.to('cuda')with torch.no_grad(): output = model(input_batch)# Tensor of shape 1000, with confidence scores over Imagenet's 1000 classesprint(output[0])# The output has unnormalized scores. To get probabilities, you can run a softmax on it.print(torch.nn.functional.softmax(output[0], dim=0))
-
圖像分類
+關注
關注
0文章
90瀏覽量
11914 -
機器學習
+關注
關注
66文章
8406瀏覽量
132567 -
數據集
+關注
關注
4文章
1208瀏覽量
24689
原文標題:何愷明團隊新作ResNext:Instagram圖片預訓練,挑戰ImageNet新精度
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論