RAPID-MIX_API issueshttps://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues2017-09-20T13:35:28Zhttps://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues/34Communicating the Interactive Machine Learning workflow to users2017-09-20T13:35:28ZFrancisco BernardoCommunicating the Interactive Machine Learning workflow to usersThe interactive machine learning workflow is difficult to convey with static sources of descriptive knowledge, such as text (documentation, comments, etc.) and even code. This is because of of procedural nature that the workflow entails....The interactive machine learning workflow is difficult to convey with static sources of descriptive knowledge, such as text (documentation, comments, etc.) and even code. This is because of of procedural nature that the workflow entails. Live demonstrations have been working pretty well for us, but were not always there.
Recommendation: We should find way to complement the documentation with richer media. Richer media, such as video and animations, are more effective at communicating the procedural nature of the workflow and yield better adoption.https://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues/35Make server-side technologies robust and resilient, and pack them for local i...2017-12-02T23:09:29ZFrancisco BernardoMake server-side technologies robust and resilient, and pack them for local installationAll technologies should be made cross-platform (windows & linux support), to prevent the risk of the RAPID-MIX API to miss out on a significant share of end-users. This happened recurrently across the many of the UCD sessions.
Recommend...All technologies should be made cross-platform (windows & linux support), to prevent the risk of the RAPID-MIX API to miss out on a significant share of end-users. This happened recurrently across the many of the UCD sessions.
Recommendation: Server-side technologies should be open-sourced, and made robust and resilient for quick set and local installation, specially during UCD and dissemination actions.https://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues/36Writing examples as building blocks2017-09-20T14:03:39ZFrancisco BernardoWriting examples as building blocksExamples were considered “cool", “ea. one useful in its one way", “the whole set providing of building blocks” which can be “borrowed”.
Recommendation:
* Users will benefit from examples become building blocks that they can readily in...Examples were considered “cool", “ea. one useful in its one way", “the whole set providing of building blocks” which can be “borrowed”.
Recommendation:
* Users will benefit from examples become building blocks that they can readily integrate in their code (scaffolding for capturing data, either to local storage or to a service)
* Some of the external libraries like the MYO have hidden global values it makes it difficult to use. The building blocks (i.e., sensor bridges) should have the exposed methods and state carefully designed, just as the API.https://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues/37Design windowed process2017-12-04T16:37:12ZMichael ZbyszyńskiDesign windowed processMZ is about to add a feature to RapidLib to allow users to run "continuous" processing on a window of input frames. In other words, this function gets input data frame-by-frame and buffers it into the right size series and calls dtw.run(...MZ is about to add a feature to RapidLib to allow users to run "continuous" processing on a window of input frames. In other words, this function gets input data frame-by-frame and buffers it into the right size series and calls dtw.run() every n number of frames.
Since this is going to co-exist with similar functions in Rapid-Mix API, we should come up with some general design for this kind of use.
@francisco This is basically what is happening when GVF is in following mode. AFAIK, GVF only does following -- there is no discreet mode for processing a pre-recorded input series.
@Joseph I think that hhmm.filter() is the same type of function as GVF.update() for continuous recognition?
This suggests to me that RapidLib/DTW should handle its own windowing.
I did consider a design that was some kind of windowedML object. That might take a pointer to a specific model and some window parameters. So something like:
```
temporalClassification myModel;
windowedMLObject myWindowThing(*myModel, <window size>, <hopsize>);
myWindowThing.continuousProcessMethod(<new data frame>);
```
That would need better names.
Is there any value in having this kind of object in the RAPID-MIX API?
I'll tag @rebeccaf and @FredB here, too,Michael ZbyszyńskiMichael Zbyszyńskihttps://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues/38Reconsider trainingData.startRecording()2017-11-27T17:59:51ZMichael ZbyszyńskiReconsider trainingData.startRecording()@fabian Brought up a point about the trainingData class, and its current, stateful API.
It does this:
```cpp
trainingData.startRecording("myLabel");
trainingData.addElement(element);
trainingData.stopRecording();
```
That could ...@fabian Brought up a point about the trainingData class, and its current, stateful API.
It does this:
```cpp
trainingData.startRecording("myLabel");
trainingData.addElement(element);
trainingData.stopRecording();
```
That could cause problems if these functions aren't called in the right order. A safer API would be:
```cpp
trainingData::phrase *myPhrase = trainingData.createPhase(); //returns a pointer to a phrase
myPhrase.addElement(<element>);
```https://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues/40Composition vs CRTP2017-12-01T08:55:48ZMichael ZbyszyńskiComposition vs CRTPMZ and Fabian discussed that JUCE users would be uncomfortable with the use of templates in the machine learning class.
We could use composition and a factory, which would probably be more familiar C++. Also, we could then do things l...MZ and Fabian discussed that JUCE users would be uncomfortable with the use of templates in the machine learning class.
We could use composition and a factory, which would probably be more familiar C++. Also, we could then do things like ```temporalClassification(HMM)``` rather than ```xmmTemporalClassification()```
It's probably not worth it to rewrite this class right now.Michael ZbyszyńskiMichael Zbyszyńskihttps://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues/44User finds functions that won't work2017-12-01T09:02:40ZMichael ZbyszyńskiUser finds functions that won't workThere are multiple unspecialized run methods in machinelearning.h that are potentially confusing to users.
This could be fixed by specialization, or by moving to a different wrapper based on composition.There are multiple unspecialized run methods in machinelearning.h that are potentially confusing to users.
This could be fixed by specialization, or by moving to a different wrapper based on composition.Michael ZbyszyńskiMichael Zbyszyńskihttps://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues/46Make training API match JS2017-11-27T17:59:50ZMichael ZbyszyńskiMake training API match JSWe've made some changes to the API in JS that are improvements and should be mirrored in JS.
For example:
* trainingData changes to trainingSet
* phrase changes to example
* the recording() methods are replaced by createExample() and a...We've made some changes to the API in JS that are improvements and should be mirrored in JS.
For example:
* trainingData changes to trainingSet
* phrase changes to example
* the recording() methods are replaced by createExample() and addElement()
@MikeZ did a sketch of this that is now in the "next_api" branch:
http://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/tree/next_api
@Joseph Uploaded a .zip here: #44 that addresses some of the same issues.
These two drafts need to be merged into one version on the next_api branch that is as close to the JS api we can make it.Joseph LarraldeJoseph Larraldehttps://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues/47Make sure everything follows the JSON API2017-11-28T11:17:52ZMichael ZbyszyńskiMake sure everything follows the JSON APIThe JSON API is documented on the website, implemented in C++, and implemented in JS.
We should make sure that all of these places are compatible.
Also, the new JSON API is not compatible with the one @MikeZ implemented in Wekinator....The JSON API is documented on the website, implemented in C++, and implemented in JS.
We should make sure that all of these places are compatible.
Also, the new JSON API is not compatible with the one @MikeZ implemented in Wekinator. So, that needs to be updated (this is probably a separate issue).https://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues/48template/typedef function calls2017-11-28T14:14:38ZMichael Zbyszyńskitemplate/typedef function callsIt would be nice if RAPID-MIX could work with floats or doubles.
```
typedef float rapidmixValue;
```
??
Or, with templates?It would be nice if RAPID-MIX could work with floats or doubles.
```
typedef float rapidmixValue;
```
??
Or, with templates?https://gitlab.doc.gold.ac.uk/rapid-mix/RAPID-MIX_API/-/issues/52JUCE example buggy2017-12-13T14:23:03ZMichael ZbyszyńskiJUCE example buggySam has demonstrated on his machine that the JUCE example seems to be failing to record training data. When he goes through the steps of holding the space bar and moving the mouse, it complains that there isn't any data.
I'm not able to...Sam has demonstrated on his machine that the JUCE example seems to be failing to record training data. When he goes through the steps of holding the space bar and moving the mouse, it complains that there isn't any data.
I'm not able to reproduce this on my machine. He's using an older version of JUCE, and I'm using a tablet rather than the trackpad.