An open API service indexing awesome lists of open source software.

https://github.com/atelierarith/visualatom.jl

Unofficial Project: Generate the VisualAtom dataset using JuliaLang (within an hour).
https://github.com/atelierarith/visualatom.jl

fdsl julia julialang

Last synced: 4 months ago
JSON representation

Unofficial Project: Generate the VisualAtom dataset using JuliaLang (within an hour).

Awesome Lists containing this project

README

          

# VisualAtom.jl [![Build Status](https://github.com/AtelierArith/VisualAtom.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/AtelierArith/VisualAtom.jl/actions/workflows/CI.yml?query=branch%3Amain)

:warning: This implementation is unofficial.

# Description

This repository contains [Julia](https://julialang.org/) implementation of [`visual_atomic_renderer/render_VisualAtom.py`](https://github.com/masora1030/CVPR2023-FDSL-on-VisualAtom/blob/47de71748abde6bd6568ee6e045ea23a047636da/visual_atomic_renderer/render_VisualAtom.py#L1-L130), originally implemented in Python. The original Python implementation can be found at [masora1030/CVPR2023-FDSL-on-VisualAtom](https://github.com/masora1030/CVPR2023-FDSL-on-VisualAtom)

# Getting Started

## Prerequisites

To use this Julia implementation, you will need:

- [Julia version](https://julialang.org/downloads/) ≥ 1.8

## Installation

1. Clone [this repository](https://github.com/AtelierArith/VisualAtom.jl):

```bash
$ git clone https://github.com/AtelierArith/VisualAtom.jl.git
```

2. Change directory into the repository:

```bash
$ cd VisualAtom.jl
```

3. Install the required Julia packages:

```console
$ julia --project=@. -e 'import Pkg; Pkg.instantiate()'
Activating project at `~/work/atelier_arith/VisualAtom.jl`
Precompiling project...
Progress [> ] 0/1
◓ VisualAtom
```

## Usage

⚠️ Make sure you have enough storage space (200GB).⚠️

Easy! Just run:

```console
$ julia --project=@. --procs auto run.jl
```

It will create a directory `VisualAtom_dataset` by default and 1000 * 1000 images will be generated.

image

The following screenshot was captured while running on my iMac 2019 with `--procs 16`.

If you are surprised by these results, you may want to consider moving from Python to Julia.

### Tip

> `--procs {N|auto}`
> Integer value N launches N additional local worker processes
> "auto" launches as many workers as the number of local CPU threads (logical cores)

See [Command-line switches for Julia](https://docs.julialang.org/en/v1/manual/command-line-options/#Command-line-switches-for-Julia) to learn more.

### Another easy shortcut

Having trouble installing Julia? You can save yourself the trouble of installation by using a Docker container.

```console
$ make && docker compose run --rm shell julia --procs auto run.jl
```

The entrypoint script `run.jl` uses parallel processing via `Distributed` module (Julia's standard library).

For those who want to run with multiple threads, use `run_mt.jl`:

```console
$ make && docker compose run --rm shell julia --threads auto run_mt.jl
```

You can adjust the number of threads using the `-t` or `--threads` option:

```console
-t, --threads {N|auto} Enable N threads; "auto" currently sets N to the number of local
CPU threads but this might change in the future
```

## License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

## Acknowledgments

- The original Python implementation: https://github.com/masora1030/CVPR2023-FDSL-on-VisualAtom
- The authors of the CVPR 2023 paper for their novel work on the FDSL algorithm
- The authors of Perlin noise library for Python: https://github.com/caseman/noise
- [JuliaLang](https://julialang.org/) and [its community](https://julialang.org/community/discourse/)
- ChatGPT-3.5/ChatGPT-4