[HN Gopher] Show HN: VisionScript, abstract programming language...
___________________________________________________________________
Show HN: VisionScript, abstract programming language for computer
vision
Hello! I'm James and I am working on VisionScript. With
VisionScript, I want to empower people -- including everyone
without any prior programming experience -- to build cool apps with
vision. This weekend, I recorded a demo for VisionScript, in which
I made apps that count how many cats are in an image and hides
people in a video. Each app was < 10 lines of code.
https://vimeo.com/856043804 VisionScript is built for the 10 year
old inside of me who would have loved more visual programming
languages with which to play. I want to show people the potential
of programming and how you can make what you want with computers,
whether it be a game that counts cats or an app that monitors how
many birds flew past a tree. Those "wow" moments should come as
soon as possible in one's learning experience. VisionScript is in
active development. I started work on this project in July. There
will likely be bugs; this is a passion project. Inspiration comes
from Wolfram and Python. Behind the scenes, I am adopting what I am
calling "lexical inference", which is to say there is a last state
value on which functions infer; the language manages types and
state.
Author : zerojames
Score : 59 points
Date : 2023-08-21 18:48 UTC (4 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| tgv wrote:
| Looks cool. I'm not sure about the implicit state in the
| language. It sort of worked for Hypercard, but not always.
|
| And can you iterate over multiple objects with the same label,
| e.g. if you want to replace all faces by emoji?
| zerojames wrote:
| Thank you for your comment! Iteration is in the works right
| now.
|
| I wrote this script at the weekend:
| Load["./bus.jpg"] In[Detect["person"]]
| Greyscale[] Endin Show[]
|
| In[] is our iterator (which came from "in a folder", which was
| the original use). I'm adding data types. In the above program,
| In[] is iterating over a Detection object. Behind the scenes,
| each bounding box is selected, the nested statements (in this
| case, Greyscale[] are evaluated), then any transformations are
| applied to only the regions in the bounding box.
|
| Thus the impact is: 1. Load a file 2.
| Find all the people 3. For each person, turn that
| region greyscale 4. Show the resulting image
|
| My rationale for implicit state (I haven't heard that term
| until now -- thank you!) is that it may be more intuitive for a
| beginner. Maybe that will be wrong, but I'm eager to
| experiment!
|
| (I am beyond elated to be on the front page of HN!)
|
| (edited to get the code snippet and list formatting right!)
| rocauc wrote:
| This is really powerful. Can't wait till there's the ability to
| make custom detection blocks!
| zerojames wrote:
| I have been thinking about this! What would you like to be able
| to do?
|
| On a separate note, one idea I had was to have rock paper
| scissors as a quickstart. You could Use["rock paper scissors"]
| to use that as a model; there could perhaps be a registry of
| curated, fun models that people can play with out of the box
| (aka ones good for classroom use).
| bippihippi1 wrote:
| huggingface integration?
| janalsncm wrote:
| This is really cool. I wonder if there's a way to extend Scratch
| to include functionality like this.
| zerojames wrote:
| Thank you so much! Comments like this have really made my day.
|
| Scratch does have an "Extensions" feature, so perhaps it would
| be possible (https://github.com/scratchfoundation/scratch-
| vm/blob/develop...)!
| ulrikhansen54 wrote:
| How do you plan to expand the functionality? I've been looking
| for a more modern alternative to OpenCV for a while - especially
| replacements some of the aged object tracking functions, there's
| been a wad of new stuff coming out that OpenCV has been slow to
| implement.
| zerojames wrote:
| Great question! Development has been guided by my asking myself
| -- and discussing with friends -- what problems I/we would like
| to solve (or what would be fun!), then building for those use
| cases. This is evident in the WIP DetectDistinctScenes[]
| method.
|
| Example script: In["file.mov"]
| Classify["building", "garden"] Endin
| DetectDistinctFrames[]
|
| This method is more advanced than most. It uses CLIP behind the
| scenes to detect when classifications change for more than N
| frames in a video, and generates a list of timestamps you can
| use to determine scene changes.
|
| I'm keen to build more specific functions for common CV tasks.
| My code most certainly needs cleaned (the main lang.py is > 2k
| LOCs right now) but I do have a contributing guide that you can
| follow to add features should you be interested:
| https://github.com/capjamesg/visionscript/blob/main/CONTRIBU...
| symisc_devel wrote:
| Shameless plug: take a look to our embedded computer vision
| library SOD: https://sod.pixlab.io. It's a lightweight OpenCV
| alternative targeting embedded devices with most of the modern
| image processing algorithms already implemented including an
| experimental Stable Diffusion implementation.
___________________________________________________________________
(page generated 2023-08-21 23:00 UTC)