Create Dataset from Google Image

สำหรับคนที่ต้องการเริ่มทำ Image Classification แต่ไม่รู้จะไปหารูปภาพเพื่อนำมา Train จากไหน เราจะใช้ Google Image ซึ่งมีรูปภาพอยู่มากมายดึงออกมา โดยเราจะใช้ Javascript ในการดึง URL และใช้ Python ในการดาวน์โหลด


Get Started

  • หารูปภาพที่เราต้องการ ผมลองหา ท่านผู้นำของเรา หล่อเหลาเอาเรื่อง
  • จากนั้นคลิกขวาบน Browser เลือก Inspect Element เปิด Console ขึ้นมา แล้วไปที่ Console
  • เลื่อน Scroll Bar เพื่อดูภาพให้มันอ่าน URL จากนั้นนำ Javascript ไปวางใน Console
// pull down jquery into the JavaScript console
var script = document.createElement('script');
script.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(script);

// grab the URLs
var urls = $('.rg_di .rg_meta').map(function() { return JSON.parse($(this).text()).ou; });

// write the URls to file (one per line)
var textToSave = urls.toArray().join('\n');
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:attachment/text,' + encodeURI(textToSave);
hiddenElement.target = '_blank';
hiddenElement.download = 'urls.txt';
hiddenElement.click();
  • หาก Browser ขึ้นเตือนให้ไป Allow Permission ก่อน ส่วนบน Firefox จะไม่ยอมให้ Copy Paste อันนี้ก็เหนื่อยหน่อย
  • หลังจากเรา Copy Paste เสร็จเรียบร้อยเราจะได้ไฟล์ urls.txt โดยเราต้อง Copy Paste ทีละชุด
  • ภายในไฟล์ urls.txt จะเป็นลิงก์ของรูปภาพ
  • จากนั้นเราจะมาโหลด Library ของ Python กันก่อน
# pip install requests
# pip install imutils
  •  สร้างไฟล์ load-dataset.py ขึ้นมา
# import the necessary packages
from imutils import paths
import argparse
import requests
import cv2
import os

# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-u", "--urls", required=True, help="path to file containing image URLs")
ap.add_argument("-o", "--output", required=True, help="path to output directory of images")
args = vars(ap.parse_args())
 
# grab the list of URLs from the input file, then initialize the
# total number of images downloaded thus far
rows = open(args["urls"]).read().strip().split("\n")
total = 0

# loop the URLs
for url in rows:
    try:
        # try to download the image
        r = requests.get(url, timeout=60)

        # save the image to disk
        p = os.path.sep.join([args["output"], "{}.jpg".format(
            str(total).zfill(8))])
        f = open(p, "wb")
        f.write(r.content)
        f.close()

        # update the counter
        print("[INFO] downloaded: {}".format(p))
        total += 1

    # handle if any exceptions are thrown during the download process
    except:
        print("[INFO] error downloading {}...skipping".format(p))
  • เปิด Command Prompt ขึ้นมาแล้วสั่งรัน Python ด้วยคำสั่ง
# python load-dataset.py --urls urls.txt --output dataset/ลุงตู๋
  • ผลลัพธ์ที่ได้ก็จะประมาณนี้ครับ
  • กลับมาดูที่โฟลเดอร์ก็จะเห็นรูปภาพ

อ่านเพิ่มเติม : https://bit.ly/2rdjTYL

2 responses to “Create Dataset from Google Image”

  1. doraemon Avatar
    doraemon

    ได้ [INFO] error downloading images\avocado/00000000.jpg…skipping
    [INFO] error downloading images\avocado/00000000.jpg…skipping
    [INFO] error downloading images\avocado/00000000.jpg…skipping
    [INFO] error downloading images\avocado/00000000.jpg…skipping มาค่ะ มีวิธีแก้ไหมคะ

    1. User Avatar

      โหลดไฟล์ urls.txt สำเร็จมั้ยเอย น่าจะผิดที่ url เพราะผมลองยังใช้ได้อยู่นะครับ

Leave a Reply

Your email address will not be published. Required fields are marked *