pretraing_LayoutLMv3_PubLayNet

Abstract

This code is "pretraining LayoutLMv3 in scientific papers".
Original LayoutLMv3 repo don't give implementation of pretraining.
so I created pretrain code.

original repo: https://github.com/microsoft/unilm/tree/master/layoutlmv3
paper: https://arxiv.org/abs/2204.08387

利用方法

0. Download dataset

PubLayNet:
https://github.com/ibm-aur-nlp/PubLayNet
上記URLからPDFのデータセットをダウンロード

1. create image(src/pdf2image.py)

PDFからimage(.png)を生成

 sh ./scirpt/pdf2image.sh

2. create vocab for tokenizer (src/create_vocab.py)

新しい辞書を作成

 sh ./script/create_vocab.sh

3. preprocessing (src/preprocessing.py)

前処理

 sh ./script/preprocessing.sh

4. pretrain (src/pretrain_3.py)

学習

 sh ./script/pretrain.sh

Done

・元コードのLayoutLMv3はfine tuning用に書かれたものなので、事前学習用にMasked language model(MLM)を作成
・LayoutLMv3はspan maskを使用
・↑実装コードがなかったため自分で実装 (src/utils/utils.py)
・論文の文字数は長いため512で切り捨てずに512ごとに分割(src/utils/utils.py)
・Masked image model(MIM)の実装
・Word-Patch Alignment (WPA)の実装