1. 程式人生 > >利用shell指令碼下載ImageNet資料集

利用shell指令碼下載ImageNet資料集

第一次寫部落格分享近期的一些工作

ImageNet介紹

ImageNet是目前世界上影象識別最大的資料庫,該資料庫包含了海量的影象資訊,同時這些影象基本都有標籤資訊,這避免了自己手工標記影象,給使用者節省了不少時間。

準備工作

在下載資料集前,需要在官網註冊,官網的註冊連結:http://www.image-net.org/signup
註冊介面
注意,在註冊的時候,Email最好是填學校的郵箱,就是字尾是edu.cn的郵箱,基本每個學生都會有一個郵箱的。
註冊完,就可以申請許可權了,官網上說註冊郵箱像類似gmail,Hotmail這些郵箱基本不會給下載許可權,申請完,就可以去學校郵箱點選連結獲得下載許可權。
登入官網:

http://www.image-net.org/login登入賬號,檢視my profile
my profile
圖中的username 以及 accesskey是後面下載資料集需要的東西。

開始下載

在官網上查詢自己需要的物體圖片,在ImageNet上每個類別的圖片都有自己的synset,synset網址:http://www.image-net.org/archive/words.txt,在本地建立一個檔案,儲存自己需要的synset。
以下為本人的shell批處理程式碼:

#!/bin/bash 
#save_path="$1"
class_id="$1"

#讀取檔案內容並儲存
id_arr=($(cat $class_id
| sed '/^#.*\|^$/d')) id_num=${#id_arr[@]} n=0 for var1 in ${id_arr[*]} do #$(wget -c ${id_arr[n]} -O ${name_arr[n]}) $(wget -c "http://www.image-net.org/downloads/bbox/bbox/${id_arr[n]}.tar.gz" -O "${id_arr[n]}.tar.gz") $(wget -c "http://www.image-net.org/download/synset?wnid=${id_arr[n]}&username=[此處填寫你的username]&accesskey=[此處填寫你的accesskey]&release=latest&src=stanford"
-O "${id_arr[n]}.tar") let n+=1 done echo "download finsh"

然後執行 bash [批處理的名字] [儲存synset檔案的名字] 即可開始下載

注意ImageNet資料集不可應用於商業用途,同時你獲得的許可只能本人使用。使用ImageNet前請認真閱讀http://www.image-net.org/download-faq中的內容