Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
efb226b
fixing start
Nasochec Aug 29, 2024
c6bcc9e
Merge branch 'main' of https://github.com/DemidNeuroLab/NeuroLabel
Nasochec Aug 29, 2024
bbd31e5
updated readme
Nasochec Aug 29, 2024
19f9e9b
MARK-8. Removed the Save With Image Data function
Nasochec Oct 13, 2024
14a3e2e
MARK-9 Редактирование Edit Menu (#4)
Delone2002 Oct 13, 2024
3509230
MARK-3. Removed Brightness contrast (#3)
DLlord47 Oct 13, 2024
d3f5e3d
Добавил в bbox иерархию
Nasochec Oct 15, 2024
40863dd
Подчистил мусор оставшийся от brightness_contrast
Nasochec Oct 17, 2024
8782b97
Поправил проблему со скролом после перехода к прямоугольнику и пробле…
Nasochec Oct 17, 2024
9e086d9
MARK-18 Добавил настройку для сохранения последнего открытого каталог…
Delone2002 Oct 18, 2024
f0f28f8
Mark#6 Перетаскивание фото с помощью зажатого колёсика (#5)
Delone2002 Oct 18, 2024
762192e
MARK-18 Исправление бага
Nasochec Oct 18, 2024
11af3c3
MARK#19 Сделал панкльку с отображением уровня разметки (#7)
Nasochec Oct 20, 2024
a4c7f58
MARK#4, MARK#21 Удаление элемента Flags, изменения в меню View (#9)
Ro0ngo Oct 22, 2024
ef479f9
MARK-20. Добавлена возможность выбора типа рукописи. Тип закрепляется…
DLlord47 Oct 25, 2024
7bb6274
Mark#1 Удалил AIPrompt и AIMask (#10)
Snowfox7676 Oct 25, 2024
16f9855
Кто-то нагадил выводами в консоль
Nasochec Oct 25, 2024
6b4b24d
MARK-12 + MARK-13 + MARK-17 + MARK-23 + MARK-25 :) (#8)
mimalakhov Nov 1, 2024
b20e432
Локализованы все элементы предложения (кроме кнопок Ok/Cancel)
Nov 1, 2024
4b83cc8
Локализация готова + небольшие фиксы
mimalakhov Nov 1, 2024
f593aa2
Доделана локализация + изменено название приложения
mimalakhov Nov 3, 2024
d6fd8e0
Исправил ошибку с hide/show polygons. Исправил исключение при загрузке
Nasochec Nov 3, 2024
aeca56c
Небольшие фиксы
mimalakhov Nov 3, 2024
35a044b
Завершено + изменён подсчёт количества удаляемых прямоугольников
mimalakhov Nov 4, 2024
19be1bf
Mark-14 Сделал удаление и перемещение вложенных элементов, ограничил …
Nasochec Nov 6, 2024
f9c1804
Убрал доработку подсчёта удаляемых прямоугольников
Nov 7, 2024
07c2866
fix fix fix
mimalakhov Nov 8, 2024
4d43a9a
Merge branch 'local' of https://github.com/DemidNeuroLab/NeuroLabel i…
mimalakhov Nov 8, 2024
d366699
Добавил новую иконку для приложения. Название и так уже было изменено
mimalakhov Nov 8, 2024
8b2744e
MARK-2 Локализация приложения (#13)
mimalakhov Nov 9, 2024
322ac89
Изменена иконка + поправлены списки букв + изменено название
mimalakhov Nov 9, 2024
a3c31d8
Merge branch 'main' into appName
mimalakhov Nov 16, 2024
f7fce0c
Изменён список букв, добавлен новый логотип и изменено название прило…
mimalakhov Nov 16, 2024
fc39259
Добавлено диалоговое окно отображения справки и класс для загрузки те…
mimalakhov Nov 22, 2024
609cff1
Исправлен баг с открытием нескольких справок во вложеных модальных окнах
mimalakhov Nov 23, 2024
97e4786
Доделано до конца
mimalakhov Nov 23, 2024
3eeb03f
fix fix fix fix fix
mimalakhov Nov 23, 2024
0c5b958
Добавлены справки для окон + мелкие фиксы (#15)
mimalakhov Nov 23, 2024
da20379
Нужно доделать
mimalakhov Dec 16, 2024
dd46124
Доделано
mimalakhov Dec 19, 2024
0679daa
Поправлены титлы
mimalakhov Dec 19, 2024
6d38fc0
Написал инструкцию и все виды справок.
Dec 24, 2024
362ea61
MARK-27 Финальные фиксы замечаний от Леонида (#16)
Nasochec Dec 24, 2024
cdae657
MARK-22 Help для историков (#17)
Nasochec Dec 24, 2024
fc1c290
Исправления для компиляции исполняемого файла.
Nasochec Dec 24, 2024
f9c94e3
Добавлено т-титло
mimalakhov Apr 26, 2025
75a10f4
Добавлено окно с информацией о букве и её большой отрисовкой. Убрана …
mimalakhov Jun 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@

.DS_Store
.idea/

/venv/*

/.vscode/
60 changes: 58 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,67 @@

<h1 align="center">
<img src="labelme/icons/icon.png"><br/>labelme
<img src="labelme/icons/icon.png"><br/>Нейролаб
</h1>

<h4 align="center">
Image Polygonal Annotation with Python
Программа для разметки древнерусских текстов
</h4>

<h2 align="center">
Гайд для установки
</h2>
Разрабы не смогли нормально написать что необходимо для запуска программы и какие зависимости необходимо подгрузить, так что придётся это делать мне.

Для начала нужен питон с официального сайта (у меня работает на 3.11.9).

Клонируем репозиторий:
```
git clone https://github.com/DemidNeuroLab/NeuroLabel

cd ./NeuroLabel
```

Далее рекомендую создать vevn:
```
python -m venv venv

.\venv\Scripts\activate
```

Далее устанавливаем зависимости:
```
pip install -r requirements.txt

pip install -r requirements-dev.txt
```

Для запуска приложения нужно запустить файл start.py.
```
python start.py
```

<h2 align="center">
Для создания exe-файла
</h2>
Пишем команду:

```
pyinstaller labelme.spec
```
<h2 align="center">
Для компиляции ресурсов файлов помощи
</h2>
После исправления файлов с помощью их надо перекомпиллировать:

Открываем терминал, выполняем команды.

```
cd .\labelme\widgets\helper_text\
pyrcc5 -o help.py help.qrc
```
# Далее ридми от разрабов:


<div align="center">
<a href="https://pypi.python.org/pypi/labelme"><img src="https://img.shields.io/pypi/v/labelme.svg"></a>
<a href="https://pypi.org/project/labelme"><img src="https://img.shields.io/pypi/pyversions/labelme.svg"></a>
Expand Down
5 changes: 3 additions & 2 deletions labelme.spec
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ a = Analysis(
pathex=['labelme'],
binaries=[],
datas=[
('labelme/widgets/helper_text/*', 'labelme/widgets/helper_text'),
('labelme/config/default_config.yaml', 'labelme/config'),
('labelme/icons/*', 'labelme/icons'),
('labelme/translate/*.qm', 'translate'),
Expand All @@ -38,7 +39,7 @@ exe = EXE(
a.binaries,
a.zipfiles,
a.datas,
name='labelme',
name='neurolab_markup',
debug=False,
strip=False,
upx=True,
Expand All @@ -48,7 +49,7 @@ exe = EXE(
)
app = BUNDLE(
exe,
name='Labelme.app',
name='neurolab_markup.app',
icon='labelme/icons/icon.icns',
bundle_identifier=None,
info_plist={'NSHighResolutionCapable': 'True'},
Expand Down
3 changes: 1 addition & 2 deletions labelme/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@

from qtpy import QT_VERSION


__appname__ = "labelme"
__appname__ = "Нейролаб"

# Semantic Versioning 2.0.0: https://semver.org/
# 1. MAJOR version when you make incompatible API changes;
Expand Down
35 changes: 1 addition & 34 deletions labelme/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def main():
"-O",
"-o",
help="output file or directory (if it ends with .json it is "
"recognized as file, else as directory)",
"recognized as file, else as directory)",
)
default_config_file = os.path.join(os.path.expanduser("~"), ".labelmerc")
parser.add_argument(
Expand Down Expand Up @@ -66,19 +66,6 @@ def main():
help="stop sorting labels",
default=argparse.SUPPRESS,
)
parser.add_argument(
"--flags",
help="comma separated list of flags OR file containing flags",
default=argparse.SUPPRESS,
)
parser.add_argument(
"--labelflags",
dest="label_flags",
help=r"yaml string of label specific flags OR file containing json "
r"string of label specific flags (ex. {person-\d+: [male, tall], "
r"dog-\d+: [black, brown, white], .*: [occluded]})", # NOQA
default=argparse.SUPPRESS,
)
parser.add_argument(
"--labels",
help="comma separated list of labels OR file containing labels",
Expand All @@ -91,12 +78,6 @@ def main():
help="label validation types",
default=argparse.SUPPRESS,
)
parser.add_argument(
"--keep-prev",
action="store_true",
help="keep annotation of previous frame",
default=argparse.SUPPRESS,
)
parser.add_argument(
"--epsilon",
type=float,
Expand All @@ -111,27 +92,13 @@ def main():

logger.setLevel(getattr(logging, args.logger_level.upper()))

if hasattr(args, "flags"):
if os.path.isfile(args.flags):
with codecs.open(args.flags, "r", encoding="utf-8") as f:
args.flags = [line.strip() for line in f if line.strip()]
else:
args.flags = [line for line in args.flags.split(",") if line]

if hasattr(args, "labels"):
if os.path.isfile(args.labels):
with codecs.open(args.labels, "r", encoding="utf-8") as f:
args.labels = [line.strip() for line in f if line.strip()]
else:
args.labels = [line for line in args.labels.split(",") if line]

if hasattr(args, "label_flags"):
if os.path.isfile(args.label_flags):
with codecs.open(args.label_flags, "r", encoding="utf-8") as f:
args.label_flags = yaml.safe_load(f)
else:
args.label_flags = yaml.safe_load(args.label_flags)

config_from_args = args.__dict__
config_from_args.pop("version")
reset_config = config_from_args.pop("reset_config")
Expand Down
6 changes: 3 additions & 3 deletions labelme/ai/efficient_sam.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import imgviz
import numpy as np
import onnxruntime
# import onnxruntime
import skimage

from ..logger import logger
Expand All @@ -12,8 +12,8 @@

class EfficientSam:
def __init__(self, encoder_path, decoder_path):
self._encoder_session = onnxruntime.InferenceSession(encoder_path)
self._decoder_session = onnxruntime.InferenceSession(decoder_path)
self._encoder_session = None # onnxruntime.InferenceSession(encoder_path)
self._decoder_session = None # onnxruntime.InferenceSession(decoder_path)

self._lock = threading.Lock()
self._image_embedding_cache = collections.OrderedDict()
Expand Down
6 changes: 3 additions & 3 deletions labelme/ai/segment_anything_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import imgviz
import numpy as np
import onnxruntime
# import onnxruntime
import skimage

from ..logger import logger
Expand All @@ -14,8 +14,8 @@ class SegmentAnythingModel:
def __init__(self, encoder_path, decoder_path):
self._image_size = 1024

self._encoder_session = onnxruntime.InferenceSession(encoder_path)
self._decoder_session = onnxruntime.InferenceSession(decoder_path)
self._encoder_session = None # onnxruntime.InferenceSession(encoder_path)
self._decoder_session = None # onnxruntime.InferenceSession(decoder_path)

self._lock = threading.Lock()
self._image_embedding_cache = collections.OrderedDict()
Expand Down
23 changes: 4 additions & 19 deletions labelme/ai/text_to_annotation.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,21 @@
import time

import numpy as np
import osam
# import osam

from labelme.logger import logger


def get_rectangles_from_texts(
model: str, image: np.ndarray, texts: list[str]
) -> tuple[np.ndarray, np.ndarray, np.ndarray]:
request: osam.types.GenerateRequest = osam.types.GenerateRequest(
model=model,
image=image,
prompt=osam.types.Prompt(
texts=texts,
iou_threshold=1.0,
score_threshold=0.01,
max_annotations=1000,
),
)
request = None
logger.debug(
f"Requesting with model={model!r}, image={(image.shape, image.dtype)}, "
f"prompt={request.prompt!r}"
)
t_start = time.time()
response: osam.types.GenerateResponse = osam.apis.generate(request=request)
response = None

num_annotations = len(response.annotations)
logger.debug(
Expand Down Expand Up @@ -62,13 +53,7 @@ def non_maximum_suppression(
for i, (score, label) in enumerate(zip(scores, labels)):
scores_of_all_classes[i, label] = score
logger.debug(f"Input: num_boxes={len(boxes)}")
boxes, scores, labels = osam.apis.non_maximum_suppression(
boxes=boxes,
scores=scores_of_all_classes,
iou_threshold=iou_threshold,
score_threshold=score_threshold,
max_num_detections=max_num_detections,
)
boxes, scores, labels = None, None, None
logger.debug(f"Output: num_boxes={len(boxes)}")
return boxes, scores, labels

Expand Down
Loading