Image Classification
timm
PyTorch
Safetensors
English
chart
charts
fintwit
stocks
crypto
finance
financial
financial charts
graphs
financial graphs
plot
plots
financial plots
cryptocurrency
image-recognition
recognition
Eval Results (legacy)
Instructions to use StephanAkkerman/chart-recognizer with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- timm
How to use StephanAkkerman/chart-recognizer with timm:
import timm model = timm.create_model("hf_hub:StephanAkkerman/chart-recognizer", pretrained=True) - Notebooks
- Google Colab
- Kaggle
| tags: | |
| - image-classification | |
| - timm | |
| - chart | |
| - charts | |
| - fintwit | |
| - stocks | |
| - crypto | |
| - finance | |
| - financial | |
| - financial charts | |
| - graphs | |
| - financial graphs | |
| - plot | |
| - plots | |
| - financial plots | |
| - cryptocurrency | |
| - image-recognition | |
| - recognition | |
| library_name: timm | |
| license: mit | |
| datasets: | |
| - StephanAkkerman/crypto-charts | |
| - StephanAkkerman/stock-charts | |
| - StephanAkkerman/fintwit-images | |
| language: | |
| - en | |
| metrics: | |
| - accuracy | |
| - f1 | |
| - precision | |
| - recall | |
| model-index: | |
| - name: chart-recognizer | |
| results: | |
| - task: | |
| type: image-classification | |
| dataset: | |
| name: Test Set | |
| type: images | |
| metrics: | |
| - type: accuracy | |
| value: 0.9782 | |
| - type: f1 | |
| value: 0.9685 | |
| pipeline_tag: image-classification | |
| base_model: timm/efficientnet_b0.ra_in1k | |
| # Chart Recognizer | |
| chart-recognizer is a finetuned model for classifying images. It uses efficientnet as its base model, making it a fast and small model. | |
| This model is trained on my own dataset of financial charts posted on Twitter, which can be found here [StephanAkkerman/fintwit-charts](https://huggingface.co/datasets/StephanAkkerman/fintwit-charts). | |
| ## Intended Uses | |
| chart-recognizer is intended for classifying images, mainly images posted on social media. | |
| ## Dataset | |
| chart-recognizer has been trained on my own dataset. So far I have not been able to find another image dataset about financial charts. | |
| - [StephanAkkerman/crypto-charts](https://huggingface.co/datasets/StephanAkkerman/crypto-charts): 4,880 images. | |
| - [StephanAkkerman/stock-charts](https://huggingface.co/datasets/StephanAkkerman/stock-charts): 5,203 images. | |
| - [StephanAkkerman/fintwit-images](https://huggingface.co/datasets/StephanAkkerman/fintwit-images): 4,579 images. | |
| ### Example Images | |
| The following images are not part of the training set and can be used for testing purposes. | |
| #### Chart | |
|  | |
| #### Non-Chart | |
| This can be any image that does not represent a (financial) chart. | |
|  | |
| ## More Information | |
| For a comprehensive overview, including the training setup and analysis of the model, visit the [chart-recognizer GitHub repository](https://github.com/StephanAkkerman/chart-recognizer). | |
| ## Usage | |
| Using [HuggingFace's transformers library](https://huggingface.co/docs/transformers/index) the model can be converted into a pipeline for image classification. | |
| ```python | |
| import timm | |
| import torch | |
| from PIL import Image | |
| from timm.data import resolve_data_config, create_transform | |
| # Load and set model to eval mode | |
| model = timm.create_model("hf_hub:StephanAkkerman/chart-recognizer", pretrained=True) | |
| model.eval() | |
| # Create transform and get labels | |
| transform = create_transform(**resolve_data_config(model.pretrained_cfg, model=model)) | |
| labels = model.pretrained_cfg["label_names"] | |
| # Load and preprocess image | |
| image = Image.open("img/examples/tweet_example.png").convert("RGB") | |
| x = transform(image).unsqueeze(0) | |
| # Get model output and apply softmax | |
| probabilities = torch.nn.functional.softmax(model(x)[0], dim=0) | |
| # Map probabilities to labels | |
| output = {label: prob.item() for label, prob in zip(labels, probabilities)} | |
| # Print the predicted probabilities | |
| print(output) | |
| ``` | |
| ## Citing & Authors | |
| If you use chart-recognizer in your research, please cite me as follows: | |
| ``` | |
| @misc{chart-recognizer, | |
| author = {Stephan Akkerman}, | |
| title = {chart-recognizer: A Specialized Image Model for Financial Charts}, | |
| year = {2024}, | |
| publisher = {GitHub}, | |
| journal = {GitHub repository}, | |
| howpublished = {\url{https://github.com/StephanAkkerman/chart-recognizer}} | |
| } | |
| ``` | |
| ## License | |
| This project is licensed under the MIT License. See the [LICENSE](https://choosealicense.com/licenses/mit/) file for details. |