{"id":21930021,"url":"https://github.com/ai-mindset/weepoc","last_synced_at":"2026-04-27T01:31:48.475Z","repository":{"id":167631187,"uuid":"352690742","full_name":"ai-mindset/weePoC","owner":"ai-mindset","description":"Learning more Julialang","archived":false,"fork":false,"pushed_at":"2023-04-02T17:33:23.000Z","size":2989,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-29T07:43:10.186Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ai-mindset.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-29T15:23:29.000Z","updated_at":"2024-11-21T14:29:43.000Z","dependencies_parsed_at":"2023-07-21T15:23:59.196Z","dependency_job_id":null,"html_url":"https://github.com/ai-mindset/weePoC","commit_stats":null,"previous_names":["inferential/weepoc","ai-mindset/weepoc"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ai-mindset/weePoC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai-mindset%2FweePoC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai-mindset%2FweePoC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai-mindset%2FweePoC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai-mindset%2FweePoC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ai-mindset","download_url":"https://codeload.github.com/ai-mindset/weePoC/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai-mindset%2FweePoC/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32319559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"ssl_error","status_checked_at":"2026-04-26T23:26:25.802Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-28T23:07:19.191Z","updated_at":"2026-04-27T01:31:48.456Z","avatar_url":"https://github.com/ai-mindset.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Expanding my knowledge in Julia\n\nJulia is advertised as a fast, dynamically typed, reproducible, composable (through multiple dispatch), general and open-source programming language. It is gaining traction fast in the Data Science and Scientific Computing communities. Can it be used for writing web apps too? Let's find out 🧐     \n\nMy requirements are:   \nI want to build a web-service that receives an image and returns the classification of that image.  \nThen, I'd like to save the requests and responses from this API to a database.  \n\nLibraries used:  \n- [Genie](https://www.genieframework.com/), a well known Julia web framework. I'll try to keep everything simple for now.  \n- [Metalhead.jl](https://github.com/FluxML/Metalhead.jl), a set of Computer Vision models for [Flux.jl](https://github.com/FluxML/Flux.jl). I'll use VGG19\u003csup\u003e[1](#vgg)\u003c/sup\u003e, since it has better accuracy.  \n- [ImageMagick.jl](https://github.com/JuliaIO/ImageMagick.jl) to load images.  \n- [SQLite.jl](https://github.com/JuliaDatabases/SQLite.jl) for saving data into a database. \n- [DataFrames.jl](https://github.com/JuliaData/DataFrames.jl) for pretty printing tabular data.  \n\n## Usage   \n\nClone repository `git clone https://github.com/inferential/weePoC`  \nNavigate into the directory `cd weePoC`  \nRun `$ ./launch.sh`. This will:  \n1. Download [Julia 1.6.0](https://julialang.org/downloads/)  \n2. Decompress Julia on Linux and WSL (or mount the Julia image on macOS)  \n3. Launch app.jl, listen on port 8001 on Linux or WSL (no action for macOS)  \nOn macOS, you can launch the app with `julia --project src/app.jl [port_num]` at a [port number](https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers) of choice.  \n\nTo use the app: \n1. Navigate to `localhost:port_num/`  \n2. Press `Browse` to select an image (examples are included in `/img`)  \n3. Press `Submit` to submit your selection. The classifier will return a label, save it to a database and print a dataframe with the database contents on the browser and on the terminal window.  \n\nShould you wish to stop the server and restart it, press `Ctrl/Cmd-C` and run `./julia-1.6.0/bin/julia --project src/app.jl 8001` where 8001 is a randomly chosen port number.  \n\n\n\nWhy VGG instead of DenseNet\u003csup\u003e[2](#dn)\u003c/sup\u003e or ResNet\u003csup\u003e[3](#rn)\u003c/sup\u003e, both of which exist in Metalhead.jl?   \n![load photo|10%](./img/spacex.jpg)    \nWhen I load this ☝️  SpaceX launcher, here is what different pre-trained convolutional neural networks recognise   \n```\njulia\u003e img = load(\"spacex.jpg\")  \njulia\u003e dn = DenseNet()  \nDenseNet()  \njulia\u003e classify(dn, img)  \n\"candle, taper, wax light\"  \njulia\u003e rn = ResNet()  \nResNet()  \njulia\u003e classify(rn, img)  \n\"tennis ball\"  \njulia\u003e vgg = VGG()  \nVGG()  \njulia\u003e classify(vgg, img)  \n\"missile\"  \n```\n\n\n---\n\u003ca name=\"vgg\"\u003e1\u003c/a\u003e: \"_[VGG](https://paperswithcode.com/method/vgg) is a classical convolutional neural network architecture. It was based on an analysis of how to increase the depth of such networks. The network utilises small 3 x 3 filters. Otherwise the network is characterized by its simplicity: the only other components being pooling layers and a fully connected layer._\"  \n \u003ca name=\"dn\"\u003e2\u003c/a\u003e: \"_A [DenseNet](https://paperswithcode.com/method/densenet) is a type of convolutional neural network that utilises dense connections between layers, through Dense Blocks, where we connect all layers (with matching feature-map sizes) directly with each other. To preserve the feed-forward nature, each layer obtains additional inputs from all preceding layers and passes on its own feature-maps to all subsequent layers._\"  \n\u003ca name=\"rn\"\u003e3\u003c/a\u003e: \"_[ResNets](https://paperswithcode.com/method/resnet) learn residual functions with reference to the layer inputs, instead of learning unreferenced functions. Instead of hoping each few stacked layers directly fit a desired underlying mapping, residual nets let these layers fit a residual mapping. They stack residual blocks ontop of each other to form network: e.g. a ResNet-50 has fifty layers using these blocks._\"  \n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fai-mindset%2Fweepoc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fai-mindset%2Fweepoc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fai-mindset%2Fweepoc/lists"}