Tencent/tencent-ml-images Readme说明
Tencent/tencent-ml-images說明
- 包括
- 更新
- 依賴
- 數據
- 下載
- 圖片來源
- 分類的語義層次
- 標注
- 統計
- 訓練
- 下載圖片URL
- 怎么樣處理下載中的無效URL?
- 對于來自OpenImages的URL
- 準備TFRecord文件
- ML_Images預訓練
- 在ImageNet的調優
- 檢查點
- 單標簽圖像分類
- 特征抽取
- 結果
- 試用
git地址: https://github.com/Tencent/tencent-ml-images/tree/297ee9fb1e4b4b3f72e97e183e4589bd0ee024c1
包括
- ML-Images:最大的開源多標簽圖像數據集,包括17,609,752 訓練和88,739 個驗證URL,覆蓋了11,166類別
- ResNet-101模型:在ML-Images上訓練得到,通過遷移學習在ImageNet上的top1準確率達到了 80.73%
更新
- 提供了清晰的通過URL下載原始圖片的說明
- 單標簽圖像分類的demo:可以用提供的checkpoint來預測任何類型的圖
依賴
- Linux
- Python2.7
- Tensorflow >= 1.6.0
數據
下載
- train_urls.txt https://pan.baidu.com/s/1cx6n6CYNqegKVq1O2YVCJg
- val_urls.txt https://pan.baidu.com/s/1BfipStD2PY7MAMRoZa9ecg
train_url.txt格式如下:
URL 分類號:置信度
分類號從0開始,具體信息:https://github.com/Tencent/tencent-ml-images/blob/master/data/dictionary_and_semantic_hierarchy.txt
圖片來源
圖片URL來自ImageNet和Open Images
- Part1:來自整個ImageNet數據庫, 10,706,941訓練, 50,000驗證,覆蓋 10,032 個分類
- Part2:來自Open Images 6,902,811訓練, 38,739驗證,覆蓋 1,134個唯一分類(一些其他的分類已經和ImagNet的分類進行了合并)
最終,ML_Images包括 17,609,752訓練, 88,739驗證,覆蓋 11,166分類
分類的語義層次
根據WordNet建立了 11,166 個分了ide語義層次。整個語義機構包括4個獨立的樹,根節點分別為thing, matter, object ,physical object and atmospheric phenomenon.從根節點到葉子節點最長語義路徑為16, 平均長度為7.47.
標注
由于ML_Image的URL來自Image net 和Open Images, ML-Images 的標記基于以上兩個庫。Open Image的原始標記由谷歌授權 under CC BY-4.0.
所以,使用一下步驟構建新的 ML-Images.標注
- 來自OpenImages的 6,902,811訓練URL,清除了保留的 1,134 分類之外的標簽
- 根據構建的 11,166 分類的語義樹,根據祖先類增加 ML-Images中所有圖片的標注:如果一個URL被標注為i類,那么所有i類的祖先分類也被標注于這個URL
- 使用來自OpenImages的 6,902,811 個訓練URL和1134個輸出訓練了一個ResNet-101模型。使用這個模型,對來自ImageNet的 10,756,941個但標注圖片進行預測打標。所以,使用來自ImageNet的 10,032 categories分類和來自OpenImages的 1,134個分類得到了一個歸一化共生矩陣。我們可以確定強共現類對。例如,類別i和類別j是強共生的,那么如果如果一張圖片被標注為i類,那么也將被標注為j類。
ML_Images中所有URL的標注結果存入了train_urls.txt和val_urls.txt
統計
Trainable class為超過100張訓練圖片的類
每個類的圖片數和訓練集中標注數量的額柱狀圖如下表:
訓練
下載圖片URL
完整的 train_urls.txt 非常大, 使用小文件 train_urls_tiny.txt 顯示下下載流程
cd data ./download_urls_multithreading.sh生成子文件夾 data/images 來存放下載的jpeg圖片, rain_im_list_tiny.txt保存了圖片列表和對應的標注
怎么樣處理下載中的無效URL?
對于ImageNet的URL
train_urls.txt文件的前 10,706,941行和 val_urls.txt文件的前 50,000 行是來自ImageNet的圖片。這些URL很大一部分已經過期。但ImageNet網站提供了原始圖片(參考 http://image-net.org/download)也就是每張圖片ID和原始URL的對應關系。因此,我們提供了兩個新文件,用來告知我們數據庫中每個URL的image ID,包括 train_urls_and_index_from_imagenet.txt和 val_urls_and_index_from_imagenet.txt。
- train_urls_and_index_from_imagenet.txt https://pan.baidu.com/s/145sGwH8Tv3RVwXZ95DuN4w
- val_urls_and_index_from_imagenet.txt https://pan.baidu.com/s/1p5sQrMUbfxiG94OjHj9-mQ
格式如下:
每一行,第一列是ImageNet中的image ID,,其他列是對應的URL和標注。然后,獲得在 ML-Images中使用的圖片,選按照如下兩步:
- 從 http://image-net.org/download) 下載整個ImageNet數據庫的原始圖片,和關聯URL文件 List of all image URLs of Fall 2011 Release (參考 http://image-net.org/download-imageurls))
- 利用 train_urls_and_index_from_imagenet.txt和val_urls_and_index_from_imagenet.txt 挑出用在 ML-Images中的圖片
對于來自OpenImages的URL
train_urls.txt的后 6,902,811 行和val——urls.txt的后 38,739 行是來自OpenImage的,這些URL多數是有效的,可以直接使用提供的 download_urls_multithreading.sh腳本進行下載。
準備TFRecord文件
用多線程模塊來生成tfrecords。首先切分 train_im_list_tiny.txt成多個小文件,然后保存他們到子文件夾 data/image_lists/
cd data ../tfrecord.sh多個tfrecords(命名為 x.tfrecords)會保存到 data/tfrecords/
ML_Images預訓練
訓練前,需要把訓練和驗證的 tfrecords分別移到 data/ml-images/train和 data/ml-images/val。然后,
./example/train.sh注意:我們這里只提供了單節點單GPU框架的訓練代碼,但我們真實的ML-Image是基于一個內部的分布式框架(未發布)。你可以按照 distributed tensorFlow.修改訓練代碼偽分布式框架
在ImageNet的調優
首先要下載ImageNet( ILSVRC2012)數據庫,并按照 tfrecord.sh.轉為tfrecord文件。然后,你可以使用在ML-Images上預訓練的checkpoint來調優在Imagenet的模型ResNet-101
./example/finetune.sh檢查點
- ckpt-resnet101-mlimages(https://pan.baidu.com/s/1166673BNWuIeWxD7lf6RNA):在 ML-Images上預訓練的
- ckpt-resnet101-mlimages-imagenet(https://pan.baidu.com/s/1UE7gavcVznYVA5NZ-GFAvg):在 ML-Images上預訓練,且在 ImageNet (ILSVRC2012)上調優過的
下載上面的兩個checkpoint并把他們放在 checkpoints/目錄下,可以用他們來抽取特征。
單標簽圖像分類
這里我們提供了一個單標簽圖像分類的demo,使用的是 ckpt-resnet101-mlimages-imagenet 檢查點的
./example/image_classification.sh預測結果保存到了 label_pred.txt。如果想識別其他圖片,可以修改 data/im_list_for_classification.txt 文件來包含這些圖片的路徑。
特征抽取
./example/extract_feature.sh結果
不同checkpoint的 ResNet-101在 ImageNet (ILSVRC2012)驗證集上的結果總結如下表:
注意:
- 非特殊情況,訓練或調優的圖片大小為224*224
- 在ImageNet上的調優從224到299的意思是前期調優迭代中的圖片大小是224224, 后期迭代為299299
- Top-1 acc on Val 224 表示在224*224驗證圖片上的top1準確率
試用
已下載模型:
/home/tencent-ml
ckpt-resnet101-mlimages-imagenet.zip和ckpt-resnet101-mlimages.zip
解壓到:/home/tencent-ml/tencent-ml-images-master/checkpoints下
- 單標簽圖像分類
這里我們提供了一個單標簽圖像分類的demo,使用的是 ckpt-resnet101-mlimages-imagenet 檢查點的
預測結果保存到了 label_pred.txt。內容如下:
如果想識別其他圖片,可以修改 data/im_list_for_classification.txt 文件來包含這些圖片的路徑。
- 特征抽取
此外還需修改extract_feature.py文件中94行:
ffeat.write(sp[0] + “\t” + sp[1] + “\t” + " ".join([str(x) for x in list(feats)]) + ‘\n’)為
ffeat.write(sp[0] + “\t” + " ".join([str(x) for x in list(feats)]) + ‘\n’)
否則會報數組越界錯誤
運行后,生成結果文件test.txt
每行一張圖片,一組該圖片對應的特征。
總結
以上是生活随笔為你收集整理的Tencent/tencent-ml-images Readme说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络安全(一):信息收集之玩转nmap(
- 下一篇: SANGFOR深信服短信插件