Computer science undergraduate student.
- ๐ฌ Diving into deep learning and natural language processing
- ๐ท Computer vision has a special place in my heart
- โ I'm powered by coffee
- โค๏ธ Open source rules!!
Studies conducted on top of readminds' data, aimed to discover and implement new features.
License: GNU General Public License v3.0
We could setup a testing pipeline using googletest. But, we should keep things simple for "fast implementation" if this testing pipeline will only turn things more complex it shouldn't be implemented. However, in a mediapipe application we've identified a lot of boilerplate code, so automated tests could come in handy.
This issue aims at providing a convention (for coding, file structure...) for everyone to follow. The follow rules are just a suggestion, we should further discuss about them.
General rules:
Follow the Google C++ Style Guide.
The face mesh calculator must be explored to latter implementation and new features extraction.
readminds-features-study/mediapipe/graphs/face_mesh
;Deadline: 08/01/2020.
The report should discuss the following topics:
Other relevant topics should be argued on this issue.
Note: We may start this report by December 26th.
We must now implement the work by Swedish team, to test our features against original implementation.
This is part of #30.
We should provide documentation on how to run feature extractors and models. Also, we should adapt the code, if needed, to be easy-to-use with external scripts (readmind's scripts).
The calculator must be able to read from devices and from video files. (Names can be changed, these are just suggestions).
Name: VideoCaptureCalculator
;
Input: device
(Input device, or video file path);
Output: RGB ImageFrame
;
ICA remote photoplethysmography method - by Poh, M. Z., McDuff, D. J., & Picard, R. W. (2010), available at github.com/phuselab/pyVHR, should be implemented. Later, we'll expand implementation to benchmark all available methods.
This issue aims at providing a convention (for coding, file structure...) for everyone to follow. The follow rules are just a suggestion, we should further discuss about them.
string
and single for char
;Follow the Google C++ Style Guide.
For documentation, use only single line comments: //
. Check existing code for examples on how to document files, classes and functions.
Code must follow PEP 8, and documentation must follow PEP 257.
Every .py
that don't follow theses PEPs won't be accepted in pull request. For checking this standards, we'll use pycodestyle.
For docstring documentation, PEP 257 may not be strictly used. Every docstring must specify the behavior of functions, classes, etc such that others can "easily understand".
As for PEP 8, some exceptions are acceptable:
Follow Google Bash Style Guide. Everything defined there is ok to be used.
When running the application using the current mediapipe version some errors popped up. Updating the mediapipe version might solve them. If any API call being used have changed we may need to refactor some code ๐.
This issue concerns three topics:
We should perform a refactor under whole repository, following strictly the conventions defined in issue #2. Also, we should set up an easy way for updating mediapipe to latest version (which is basically a clone from current MediaPipe's master
).
We've stated that Google C++ Style Guide would be used, but we haven't followed it strictly. Thus, after the refactor, we should be more severe on code reviews. Also we must define an convention for documentation (we may discuss this in issue #2), providing at least a minimal API.
Now, we should be starting Report I as defined in issue #16. But this should be done after repository refactor.
#10 is required;
In order to implement these features we need to know in advance what are the landmark points related (and relevant) to them. Thus, using the images (within data/faces/
) produced in issue #10, we must first identify such points. The division (generated by a random algorithm) of who gets which feature mapping is the following:
F3
and F7
;F5
and F6
;F2
and F4
;The feature F1
was left aside, so the first to finish their mapping gets it.
The objective of this stage is to obtain all the landmark points related to each feature.
All the mappings should be reported on the document shared. Later, it will be better developed into a formal report.
I've detected a possible bug with F3
feature. When running feature_extractor_video
, the value of the feature keeps increasing every time (press Enter
to get feature values). Not sure if this is a bug with feature_extractor_video
or with F3
, we should check this before running experiments.
Milestone 2 should be finished by February 1st but it couldn't be accomplished. In March 1st we started another step in the project, but Milestone 2 is still not ready.
This issue aims at reporting this delay. We are late for a month and MUST work this in the further stages.
We should improve repository structure following tips from this repository about releasing research code.
Also we should improve our documentation.
With this same refactor, we should provide scripts for updating mediapipe.
The calculator must be able to convert an image to gray scale format. (Names can be changed, these are just suggestions).
Name: GrayScaleConverterCalculator
;
Input: image
(RGB ImageFrame
);
Output: image
(RGB ImageFrame
converted to gray scale);
The calculator must be able to write image frames into a video. (Names can be changed, these are just suggestions).
Name: VideoWrittingCalculator
;
Input: frame
(RGB ImageFrame
);
Output: video
(Video gathering the frames);
The calculator must be able to apply the gaussian blur into an image. (Names can be changed, these are just suggestions).
Name: GaussianBlurCalculator
;
Input: image
(RGB ImageFrame
);
Output: image
(RGB ImageFrame
);
That could be accomplished by two approaches:
deadline: 01/02/2020
depends on #20.
We've implemented most of our features descriptors. Now we must assemble them in order to generate the features files and
corresponding datasets.
We should have a single script accomplishing this task (in bash probably). It should call the c++
script to generate a brand new csv file with the facial features (a.k.a. F1 to F7). After, the python script should be used to generate the HR signals and append them to the existing csv. This final csv file is our feature file.
Important to note: We should extract the existing features in the same timestamp they were extracted in Bevilacqua's original implementation. Thus, we may insert them in the original csv files, and we won't need to implement features described in #24 for now. These features don't seems to be so relevant, in the model implementation from #26 their performance was worse than the others features.
We were saving the "generic model" (trained on all subjects) mistakenly. The result of that is the "subject-level" model wasn't beginning with any weights, therefore the training was starting fresh for each individual.
The fix is pretty simple and is already under implementation.
#14 is required
Based on the exploration of the face mesh functionality (#10), the already existing facial features must be implemented using MediaPipe. Thus, features F1
to F7
will be reimplemented.
*Note: We should try to end this issue at 3rd December, when we'll meet with swedish team.
Deadline: 30/01/2021.
The experiments will be executed using a helper program (preferably a CLI-like). This program must provide following functionalities:
N
times and compute the final result as the mean of the N
individual results taken);As we'll inevitably use python for issue #20, the csv generation must have two parts: one in C++, for things related to mediapipe and another for python, for things related to HR and any additional implementation in the language.
Since anything in python is simpler, the c++ csv generation we'll just write to a file, and in python we'll add content to this written csv.
Deadline: 02/02/2021.
Implement features present in the gux-deeplearning readminds dataset however not highlighted in Fernando's paper.
face_blinks_1s
face_blinks_5s
face_motion_error
face_motion_instability
face_mouth_edges_change
face_mouth_histogram_change
face_reference_scale
Check this doc for a basic understanding of each feature.
MediaPipe has some papers related to it, regarding machile learning architectures used by the framework, among other things. Here are some (maybe) interesting for our study:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.