Bolorsoft Hiring Process - Practical Exam Эхэлсэн: 2024/06/29 afternoon Дуусгасан: 2024/06/30 early in the morning
Үндсэн даалгавар бол Монгол хэлний OCR 7 хоногийн хугацаанд хийх байсан. Би дараах төлөвлөгөөний дагуу уг даалгаврыг гүйцэтгэсэн:
- Assume Ideal Condition: Жигд гэрэлтүүлэгтэй, цагаан дэвсгэртэй, урд нь саад хийсэн зүйл байхгүй гэх мэт
- Generate Synthetic Data for Recognition: Тэмдэгт таних модел сургахад зохиомлоор өгөгдөл үүсгэх
- Ашиглах үгсийн сан - eduge news dataset: Галигаар бичигдсэн үг, линк, тэмдэгт гэх мэт зүйлсийг устгаж цэвэрлэх
- Эхний ээлжинд дан ганц тэмдэгт танихад гол анхаарлаа төвлөрүүлэх
- Ideal condition assumption доор tesseract ашиглан тэмдэгт ялгах
- Дээр үүсгэсэн өгөгдлийг ашиглан тэмдэгт ялгах өгөгдөл зохиомлоор үүсгэх (Not high priority at the moment)
- Нийт ажлаа цэгцлэх
- Бага сага documentation бичих
- Сургалтын өгөгдлөө Kaggle руу шидэх
- Майл илгээх
Өгөгдөл зохиомлоор үүсгэхийн тулд TextRecognitionDataGenerator-г ашигласан. Уг tool-г ашиглахад Монгол фонт хэрэгтэй тул Noto Sans фонт татаж ашигласан.
№ | Цагаан дэвсгэртэй | Эсэн шидийн зурагтай дэвсгэртэй |
---|---|---|
A | 30000 | 30000 |
B | 50000 | 50000 |
№ | Цагаан дэвсгэртэй | Эсэн шидийн зурагтай дэвсгэртэй |
---|---|---|
A | 300 | 300 |
B | 1500 | 1500 |
Үгийн сан: eduge дотроос дан ганц улс төр ангилалыг ашигласан.
Text Recognition repo-г ашиглан крилл үсэг ялгах модел finetune хийсэн.
-
cyrillic_g2.pth модел дээр сургалтын
A
хэсгийг ашиглаж туршиж үзсэн.1.1. Нийт 10 epoch сургасны үр дүнд дараах байдалтай байсан:
| Ground Truth | Prediction | Confidence Score & T/F | |--------------|--------------|------------------------| | ахлөх | дулэу | 0.0143 False | | семийн | гѓкжйн | 0.1124 False | | сольё | гтйъд | 0.0247 False | | дээрдүүлэн | дээргуауйэл | 0.0019 False | | тесо | үржъ | 0.0009 False |
1.2. Нийт 150 epoch сургасны дараагаар:
| Ground Truth | Prediction | Confidence Score & T/F | |----------------|----------------|------------------------| | цонжинболдог | цонкинболдог | 0.0295 False | | доромжлуулаад | доэоүхлуулаад | 0.0656 False | | үнэлэх | үнэлэх | 0.9743 True | | хэсгийнхэнд | хэсгийнхэнд | 0.2898 True | | дарангуйллыг | аатугиө | 0.0000 False |
Test Accuracy (A): 15.500
-
Дээрх моделийг сургалтын
B
хэсгийг ашиглан 1000 epoch finetune хийсний дараагаар
Ground Truth | Prediction | Confidence Score & T/F |
---|---|---|
шийдевэрлэжээ | шийдввэрлэжээ | 0.4727 False |
хэтэрчихээд | хэтэрчихээд | 0.5595 True |
амралтаараа | амралтаараа | 0.6647 True |
нийцэхүйц | нийцэхүйц | 0.6271 True |
хумигдсанаас | хумигдсанаас | 0.2758 True |
Test Accuracy (B): 77.867
Сургалт хийхэд ашиглах параметрүүд mn_conf
фолдер дотор байгаа. Мөн сургалт хийхэд:
python deep-text-recognition-benchmark/demo.py --demo_conf mn_conf/demo_parameters_conf.yaml
Цагаан дэвсгэртэй үед tesseract ашиглан зургаас Монгол тэмдэгтүүдийг ялгасан.
Дараагаах нь тэмдэгт бүрд танилт хийсэн.
- clean_eduge_news - Eduge news цэвэрлэж, ашиглах үгсийн сан бэлтгэсэн
- generate_mn_synth_data - Зохиомол өгөгдөл болон label үүсгэх
- test_model_on_small_subset - var_small болон demo_multiple_word жишээ өгөгдлийг ашиглан моделийн гүйцэтгэлийг танилцуулах
- detect_and_recognize_mn - Цагаан дэвсгэртэй зургаас Tesseract ашиглан тэмдэгт ялгаж, дарагаар нь таних.