Views
No views yet
DotNeuralNet
ㄴ assets - example images and train/val logs
ㄴ dataset
ㄴ AngelinaDataset - book background
ㄴ braille_natural - natural scene background
ㄴ DSBI - book background
ㄴ KaggleDataset - arbitrary 6 dots
ㄴ yolo.yaml - yolo dataset config
ㄴ src
ㄴ utils
ㄴ angelina_utils.py
ㄴ braille_natural_utils.py
ㄴ dsbi_utils.py
ㄴ kaggle_utils.py
ㄴ crop_bbox.py
ㄴ dataset.py
ㄴ model.py
ㄴ pseudo_label.py
ㄴ train.py
ㄴ visualize.py
ㄴ weights
ㄴ yolov5_braille.pt # yolov5-m checkpoint
ㄴ yolov8_braille.pt # yolov8-m checkpoint



1apt-get update && apt-get install ffmpeg libsm6 libxext6 -y
2git clone https://github.com/ultralytics/yolov5 # clone
3cd yolov5
4pip install -r requirements.txt # installsrc/inference.py or src/demo.py to run the model.1import PIL
2from ultralytics import YOLO
3from convert import convert_to_braille_unicode, parse_xywh_and_class
4
5def load_model(model_path):
6 """load model from path"""
7 model = YOLO(model_path)
8 return model
9
10def load_image(image_path):
11 """load image from path"""
12 image = PIL.Image.open(image_path)
13 return image
14
15# constants
16CONF = 0.15 # or other desirable confidence threshold level
17MODEL_PATH = "./weights/yolov8_braille.pt"
18IMAGE_PATH = "./assets/alpha-numeric.jpeg"
19
20# receiving results from the model
21image = load_image(IMAGE_PATH)
22model = YOLO(MODEL_PATH)
23res = model.predict(image, save=True, save_txt=True, exist_ok=True, conf=CONF)
24boxes = res[0].boxes # first image
25list_boxes = parse_xywh_and_class(boxes)
26
27result = ""
28for box_line in list_boxes:
29 str_left_to_right = ""
30 box_classes = box_line[:, -1]
31 for each_class in box_classes:
32 str_left_to_right += convert_to_braille_unicode(model.names[int(each_class)])
33 result += str_left_to_right + "\n"
34
35print(result)
36"""
37⠁⠃⠉⠋⠙⠑⠙⠋⠛⠓⠊⠑
38⠓⠇⠇⠍⠝⠕⠏⠟⠗
39⠎⠞⠥⠼⠗⠭⠵
40⠼⠧⠚⠁⠃⠉⠙⠑⠙⠛⠚⠊⠑
41"""
42@misc{ahn2024dotneuralnet,
author={Ahn, Young Jin},
title={DotNeuralNet: Light-weight Neural Network for Optical Braille Recognition in the Wild},
year={2023},
}