Imagenet 画像のダウンロード | python3Xのブログ

python3Xのブログ

ここでは40代、50代の方が日々の生活で役に立つ情報や私の趣味であるプログラム、Excelや科学に関する内容で投稿する予定です。

は、本当に辛抱が必要のようです
いつまでも、終わりません(苦笑)
流れは、下記URLをそのまま利用させていただきました
URL:
Imagenet画像のダウンロード

download
画像取得に関する3つのポイント
①ImageNetにある画像URLリストのダウンロード
②Pythonスクリプトで画像URLリストをID別に分割
③batファイルを実行してwgetでひたすら画像をダウンロード

画像URLリストはtar.gzで固めてあるので、解凍
1GBほどのテキストファイルができあがる
ImageNet Download Image URLs http://image-net.org/download-imageurls

ImageNetのIDごとのURLリストに分割
ID=画像に写っている物体のカテゴリ
IDとタグの対応表となるテキストファイルのダウンロード(URL)
http://image-net.org/archive/words.txt
下記のPythonスクリプトを作成してコマンドラインから実行
引数に解凍したテキストファイル名を指定(sys.argv[1]の部分)
listsフォルダにIDと同じファイル名の分割URLリストが作成される
注)予めlistsフォルダは作成しておく
 
# -*- coding: utf-8 -*-
import os
import sys
import codecs
f = codecs.open(sys.argv[1], 'r', 'utf8', 'ignore')
lines = f.readlines()
id = ''
fl = None
for line in lines:
    line = line.strip()
    arr = line.split('\t')
    id_num = arr[0]
    url = arr[1]
    nid, num = id_num.split('_')
    if id != nid:
        id = nid
        if fl:
            fl.close()
        fl = codecs.open('lists/' + id + '.txt', 'a', 'ignore')
    fl.write(url + '\n')
fl.close()
f.close()

Windows版wget取得し、使用可能にする
下記公式ページからBinariesと Dependenciesをダウンロードしてzip解凍⇒
Dependenciesのbinフォルダの中身をBinariesのbinフォルダにコピー⇒
Binariesのbinフォルダパスを環境変数PATHに追加し、パスを通す
wget公式ページ http://gnuwin32.sourceforge.net/packages/wget.htm
下記のbatファイルを作成
 
@echo off
cd /d %~dp0
for %%i in (lists\*.txt) do (
  echo [DOWNLOAD BEGIN] %%~ni
  wget -i %%i -P images\%%~ni -T 1 -t 1 -nc
  move %%i done\%%~nxi
pause
 
画像ダウンロード先のimagesフォルダ+
ダウンロードが完了したURLリストを格納するdoneフォルダを作成
batファイルを実行し、ひたすらwgetで画像をダウンロード
かなりの量のため数日かかるかもしれない
ダウンロードした画像はimages/[ID]/****.jpgの形で格納される
ダウンロードが全て完了したURLリストファイルはdoneフォルダに移される
そのため、ダウンロードを中断しても後で途中から再開できるようになっている