generated from daniil-berg/boilerplate-py
Compare commits
3 Commits
7c9f97f21b
...
master
Author | SHA1 | Date | |
---|---|---|---|
b7894787ca | |||
a8636822c9 | |||
18870a3786 |
@ -1,3 +1 @@
|
||||
tensorflow
|
||||
numpy
|
||||
matplotlib
|
||||
|
2
requirements/plt.txt
Normal file
2
requirements/plt.txt
Normal file
@ -0,0 +1,2 @@
|
||||
-r common.txt
|
||||
matplotlib
|
@ -1,6 +1,6 @@
|
||||
[metadata]
|
||||
name = ccaptchas
|
||||
version = 0.0.1
|
||||
version = 0.1.2
|
||||
author = Daniil Fajnberg
|
||||
author_email = mail@daniil.fajnberg.de
|
||||
description = Character CAPTCHA Solver
|
||||
@ -17,14 +17,15 @@ classifiers =
|
||||
package_dir =
|
||||
= src
|
||||
packages = find:
|
||||
python_requires = >=3
|
||||
python_requires = >=3.9
|
||||
install_requires =
|
||||
numpy
|
||||
matplotlib
|
||||
|
||||
[options.extras_require]
|
||||
dev =
|
||||
coverage
|
||||
plt =
|
||||
matplotlib
|
||||
|
||||
[options.packages.find]
|
||||
where = src
|
||||
|
@ -1,3 +1,5 @@
|
||||
import os
|
||||
import warnings
|
||||
from argparse import ArgumentParser
|
||||
from pathlib import Path
|
||||
from typing import Any, Sequence
|
||||
@ -156,4 +158,8 @@ def main() -> None:
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Shut up Tensorflow:
|
||||
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
|
||||
# Shut up numpy:
|
||||
warnings.filterwarnings('ignore', 'elementwise comparison failed', FutureWarning, module='numpy')
|
||||
main()
|
||||
|
@ -11,7 +11,6 @@ from keras.api._v2.keras.backend import ctc_decode
|
||||
from .config import CONFIG
|
||||
from .preprocess import process_image, decode_label, find_image_files, get_lookup_table
|
||||
from .types import PathT, ImgT, Array
|
||||
from .visualize import plot_images
|
||||
|
||||
|
||||
def process_predictions(predictions: tf.Tensor) -> tf.Tensor:
|
||||
@ -53,7 +52,7 @@ def load_inference_model(model_dir: PathT) -> tuple[Model, StringLookup]:
|
||||
|
||||
def predict_and_decode(images: Sequence[ImgT], model: Model, backward_lookup: StringLookup) -> tuple[Array, list[str]]:
|
||||
dataset = np.array([process_image(img) for img in images])
|
||||
encoded_labels = process_predictions(model.predict(dataset))
|
||||
encoded_labels = process_predictions(model.predict(dataset, verbose=0))
|
||||
return dataset, [decode_label(label, backward_lookup) for label in encoded_labels]
|
||||
|
||||
|
||||
@ -61,6 +60,7 @@ def load_and_infer(images: Sequence[ImgT], model_dir: PathT, plot_results: bool
|
||||
model, backward_lookup = load_inference_model(model_dir)
|
||||
images, labels = predict_and_decode(images, model, backward_lookup)
|
||||
if plot_results:
|
||||
from .visualize import plot_images
|
||||
per_plot = 24
|
||||
for i in range(0, len(images), per_plot):
|
||||
plot_images(images[i:(i + per_plot)], labels=labels[i:(i + per_plot)])
|
||||
|
Reference in New Issue
Block a user