0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Caffeモデルの転移学習をやってみる

Last updated at Posted at 2018-12-24

1.転移学習

2.再学習用のデータの収集

image.png

ラベルには人工知能がラベル付けしたものを使います。人間によってラベリングされたデータは、許容度が大きく、「サングラスをかけた猫」「アニメの猫」も猫としてラベリングされているので、fine tuningは適さないのでやめておきましょう。

wget https://storage.googleapis.com/openimages/2017_07/images_2017_07.tar.gz
tar -zxvf images_2017_07.tar.gz
wget https://storage.googleapis.com/openimages/2017_07/annotations_machine_2017_07.tar.gz
tar -zxvf annotations_machine_2017_07.tar.gz

image.png

import csv
import os
import time
from PIL import Image
import urllib
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True

all_tgt = ["cat", "dog", "person", "yard"]

for cur_tgt in all_tgt:
    print '\nClass : ' + str(cur_tgt) + '\n\n'
    f1 = open('/home/ubuntu/labels_'+str(cur_tgt)+'.csv', 'r')
    reader1 = csv.reader(f1)
    f2 = open('/home/ubuntu/2017_07/train/images.csv', 'r')
    reader2 = csv.reader(f2)
    confidence = 1.0
    if cur_tgt == 'yard':
        confidence = 0.9

    cnt = 0
    for row1 in reader1:

        if float(row1[3]) == confidence:

            for row2 in reader2:
                if row1[0] == row2[0]:
                    break
            print str(cnt)+' : '+row2[2]

            #load image
            try:
                urlimg = urllib.urlopen(row2[2])            
                img = Image.open(urlimg)
            except:
                continue # skip if error happened

            fname = '/home/ubuntu/downloaded_images/'+str(cur_tgt)+'.'+str(cnt)+'.jpg'
            if urlimg.url.find('unavailable') == -1:
                if cur_tgt != 'yard':
                    #resize image
                    ratio = img.width / 227.0
                    if img.height < img.width:
                        ratio = img.height / 227.0
                    img_resize = img.resize((int(round(img.width/ratio)), int(round(img.height/ratio))))
                    img_resize.save(fname)
                else:
                    img.save(fname)

                cnt = cnt + 1
                if 10000 <= cnt:
                    break
    f1.close()
    f2.close()

images.csvの中身は以下のようになっています。
image.png

annotations-machine.csvには、各行に画像IDとそれに対応する画像のラベルがあります。の中身はこんな形になっています。Open Images Datasetの中で猫に相当するID(/m/01yrx)の画像IDとラベル名がありますね。
image.png

そして900万枚という画像の中から、以下のコマンドで、猫に関する画像だけを
抽出しましょう。
/home/ubuntu/labels_cat.csv

0000de486dc6c49f,machine,/m/01yrx,0.9
00056e547b7c00d6,machine,/m/01yrx,1.0
00067fe83e3e21c8,machine,/m/01yrx,1.0
0008ab3d8674f6ca,machine,/m/01yrx,1.0
000aa552a9d80891,machine,/m/01yrx,1.0
000c01d8269e1554,machine,/m/01yrx,0.7
000c24660cd3fd95,machine,/m/01yrx,0.7
00129ccb99612727,machine,/m/01yrx,1.0

結果、/home/ubuntu/に
labals_cat.csv
labals_dog.csv
labals_person.csv
labals_yard.csv
という今回fine tuningしたい自分のカテゴリ群にあった学習データ収集用の
メタデータファイルが生成されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?