Bagian 3: Dataset kuzushiji-recognition

Home Forums Instance Segmentation and SAHI Bagian 3: Dataset kuzushiji-recognition

  • This topic is empty.
Viewing 1 post (of 1 total)
  • Author
    Posts
  • #12206
    mulkan syarif
    Keymaster

    Dataset kuzushiji-recognition
    lokasi URL untuk download https://www.kaggle.com/c/kuzushiji-recognition/data

    Property Dataset

    dengan jumlah gambar di train_image yaitu

    df = pd.read_csv('train.csv')
    len(df)

    3.605 file dan jumlah unicode tersebut yaitu

    def get_unicode(df):
        df_final = []
        for no_record in range(0,len(df)):
            bounding = df.iloc[no_record]['labels'].split(' ')
            cols = 5
            record = [bounding[i:i+cols] for i in range(0, len(bounding), cols)]
            df2 = pd.DataFrame(record, columns=['unicode','x','y','w','h'])
            df2['image_id'] = df.iloc[no_record]['image_id']
            df_final.append(df2)
        df_final = pd.concat(df_final, ignore_index=True)
        df_final['x'] = df_final['x'].astype(int)
        df_final['y'] = df_final['y'].astype(int)
        df_final['w'] = df_final['w'].astype(int)
        df_final['h'] = df_final['h'].astype(int)
        return df_final
    df_final = get_unicode(df)
    
    
    print("jumlah unicode: ",len(df_final['unicode'].unique()))

    jumlah unicode: 4.212 karakter tapi tidak seimbang jumlah sebaran karakter unicode tersebut.

    Berikut contoh gambar dari dataset tersebut (labelling nya tidak berurutan!)

    Karena ukuranya sangat besar akan dilakukan croping overlapping dengan ration 20%

    untuk block n0 1,2, dan 3 tidak terdapat bounding box! walaupun ada secuil huruf kanji maka tidak dianggap huruf kanji

    source code: 1. Show Labelling.ipnyb

    Pembuatan Class Dataset

    Ukuran gambar walaupun sudah di croping masih sangat terasa besar sekali sehingga akan memakan banyak RAM oleh karena itu saya buat function khusus untuk me resize gambar (juga termasuk memindahkan koordinasi bounding box)

    semula ukuran

    orig_size = (2404,3874)

    menjadi

    new_size = (800,1200)

    dengan ukuran croping yaitu 400 x 400 dan overlapping ratio 20%

    source code: library/lib_dataset.py

    Pelatihan

    Pelatihan menggunakan model RCNN lebih jelasnya lihat kode berikut

    def create_model(num_classes):
        # load Faster RCNN pre-trained model
        model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True,
                                                                    box_detections_per_img = 100,
                                                                    min_size = 400,
                                                                    max_size = 400)
        # get the number of input features 
        in_features = model.roi_heads.box_predictor.cls_score.in_features
        # define a new head for the detector with required number of classes
        model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes) 
        return model

     

    Untuk pelatihan hanya menggunakan file no 0,1,2,3,4,5 saja dengan kode sebagai berikut

    dataset = MyDatasetCroping(df,a=[0,5])

    1 file gambar akan di resize

    orig_size = (2404,3874)

    menjadi
    new_size = (800,1200)

    kemudian croping menjadi 12 bagian dengan ukuran 400×400. Jadi walaupun 6 file gambar saja, sebenarnya ada 6 x 12 croping = 72 tile gambar!

    source: 4. kasus dataset croping sekaligus resize.ipynb

    Pengujian

    Untuk pengujian hasil dalam bentuk croping belum satu gambar utuh (sedang ditulis kode untuk merge hasil dari croping)

    Berikut hasil loss

    dengan hasil seperti berikut

    Source: 5. Cek Hasil Training Resize.ipynb

Viewing 1 post (of 1 total)
  • You must be logged in to reply to this topic.