|
4 | 4 |
|
5 | 5 | A JABS project is a directory of video files and their corresponding pose |
6 | 6 | estimation files. The first time a project directory is opened in JABS, it will |
7 | | -create a subdirectory called "rotta", which contains various files created by |
| 7 | +create a subdirectory called "jabs", which contains various files created by |
8 | 8 | JABS to save project state, including labels and current predictions. |
9 | 9 |
|
10 | 10 | ### Example JABS project directory listing: |
11 | 11 |
|
12 | 12 | ```text |
13 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_08-00-00_500.avi |
14 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_08-00-00_500_pose_est_v3.h5 |
15 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_09-00-00_500.avi |
16 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_09-00-00_500_pose_est_v3.h5 |
17 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_10-00-00_500.avi |
18 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_10-00-00_500_pose_est_v3.h5 |
19 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_11-00-00_500.avi |
20 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_11-00-00_500_pose_est_v3.h5 |
21 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_12-00-00_500.avi |
22 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_12-00-00_500_pose_est_v3.h5 |
23 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_13-00-00_500.avi |
24 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_13-00-00_500_pose_est_v3.h5 |
25 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_14-00-00_500.avi |
26 | | -NV11-CBAX2+2019-07-26+MDX0009_2019-07-26_14-00-00_500_pose_est_v3.h5 rotta |
| 13 | +VIDEO_1.avi |
| 14 | +VIDEO_1_pose_est_v3.h5 |
| 15 | +VIDEO_2.avi |
| 16 | +VIDEO_2_pose_est_v3.h5 |
| 17 | +VIDEO_3.avi |
| 18 | +VIDEO_3_pose_est_v3.h5 |
| 19 | +VIDEO_4.avi |
| 20 | +VIDEO_4_pose_est_v3.h5 |
| 21 | +VIDEO_5.avi |
| 22 | +VIDEO_5_pose_est_v3.h5 |
| 23 | +VIDEO_6.avi |
| 24 | +VIDEO_6_pose_est_v3.h5 |
| 25 | +VIDEO_7.avi |
| 26 | +VIDEO_7_pose_est_v3.h5 jabs |
27 | 27 | ``` |
28 | 28 |
|
29 | | -## Initializing A JABS Project Directory |
| 29 | +## Initializing A JABS Project Directory |
30 | 30 |
|
31 | 31 | The first time you open a project directory in with JABS it will create the " |
32 | | -rotta" subdirectory. Features will be computed the first time the "Train" button |
| 32 | +jabs" subdirectory. Features will be computed the first time the "Train" button |
33 | 33 | is clicked. This can be very time consuming depending on the number and length |
34 | 34 | of videos in the project directory. |
35 | 35 |
|
@@ -76,48 +76,48 @@ will use up to 4 processes. |
76 | 76 |
|
77 | 77 | `./initialize_project.py -p8 -w2 -w5 -w10 <path/to/project/dir>` |
78 | 78 |
|
79 | | -## The Rotta Directory |
| 79 | +## The JABS Directory |
80 | 80 |
|
81 | | -JABS creates a subdirectory called "rotta" inside the project directory (this |
82 | | -directory is called "rotta" for historical reasons and may change prior to the |
83 | | -1.0.0 release of JABS). This directory contains app-specific data such as |
84 | | -project settings, generated features, user labels, cache files, and the latest |
85 | | -predictions. |
| 81 | +JABS creates a subdirectory called "jabs" inside the project directory. This |
| 82 | +directory contains app-specific data such as project settings, generated |
| 83 | +features, user labels, cache files, and the latest predictions. |
86 | 84 |
|
87 | 85 | project.json This file contains project settings and metadata. |
88 | 86 |
|
89 | | -### rotta/annotations |
| 87 | +### jabs/annotations |
90 | 88 |
|
91 | 89 | This directory stores the user's labels, stored in one JSON file per labeled |
92 | 90 | video. |
93 | 91 |
|
94 | | -### rotta/archive |
| 92 | +### jabs/archive |
95 | 93 |
|
96 | 94 | This directory contains archived labels. These are compressed files (gzip) |
97 | 95 | containing labels for behaviors that the user has removed from the project. |
98 | 96 | Rotta only archives labels. Trained classifiers and predictions are deleted if a |
99 | 97 | user removes a behavior from a project. |
100 | 98 |
|
101 | | -### rotta/cache |
| 99 | +### jabs/cache |
102 | 100 |
|
103 | 101 | Files cached by JABS to speed up performance. Some of these files may not be |
104 | 102 | portable, so this directory should be deleted if a JABS project is copied to a |
105 | 103 | different platform. |
106 | 104 |
|
107 | | -### rotta/classifiers |
| 105 | +### jabs/classifiers |
108 | 106 |
|
109 | 107 | This directory contains trained classifiers. Currently, these are stored in |
110 | | -Python Pickle files and should be considered non-portable. |
| 108 | +Python Pickle files and should be considered non-portable. While non-portable, |
| 109 | +these files can be used alongside `classify.py classify --classifier` for |
| 110 | +predicting on the same machine the gui running the training. |
111 | 111 |
|
112 | | -### rotta/features |
| 112 | +### jabs/features |
113 | 113 |
|
114 | 114 | This directory contains the computed features. There is one directory per |
115 | 115 | project video, and within each video directory there will be one feature |
116 | | -directory per identity. Feature files are usually portable, but JABS may need |
| 116 | +directory per identity. Feature files are portable, but JABS may need |
117 | 117 | to recompute the features if they were created with a different version of |
118 | 118 | JABS. |
119 | 119 |
|
120 | | -### rotta/predictions |
| 120 | +### jabs/predictions |
121 | 121 |
|
122 | 122 | This directory contains prediction files. There will be one subdirectory per |
123 | 123 | behavior containing one prediction file per video. Prediction files are |
@@ -173,9 +173,6 @@ tool (`classify.py`). |
173 | 173 | means that 11 frames are included into the window feature calculations for |
174 | 174 | each frame (5 previous frames, current frame, 5 following frames). |
175 | 175 | - **New Window Size:** Add a new window size to the project. |
176 | | -- **Social Feature Toggle:** Turn on/off social features (disabled if project |
177 | | - includes pose file version 2). Allows training a classifier backwards |
178 | | - compatible with V2 pose files using V3 or higher poses. |
179 | 176 | - **Label Balancing Toggle:** Balances the training data by downsampling the class with more labels such that the distribution is equal. |
180 | 177 | - **Symmetric Behavior Toggle:** Tells the classifier that the behavior is symmetric. A symmetric behavior is when left and right features are interchangeable. |
181 | 178 | - **All k-fold Toggle:** Uses the maximum number of cross validation folds. Useful when you wish to compare classifier performance and may have an outlier that can be held-out. |
@@ -222,6 +219,22 @@ tool (`classify.py`). |
222 | 219 | mouse |
223 | 220 | - **View→Overlay Landmarks:** toggle the overlay of arena landmarks over the |
224 | 221 | video. |
| 222 | +- **Features:** Menu item for controlling per-behavior classifier settings. |
| 223 | + Menu items are disabled when at least 1 pose file in the project does not |
| 224 | + contain the data to calculate features. |
| 225 | +- **Features→CM Units:** toggle using CM or pixel units |
| 226 | + (Warning! Changing this will require features to be re-calculated) |
| 227 | +- **Features→Enable Window Features:** toggle using statistical window features |
| 228 | +- **Features→Enable Signal Features:** toggle using fft-based window features |
| 229 | +- **Features→Enable Social Features:** toggle using social features (v3+ projects) |
| 230 | +- **Features→Enable Corners Features:** toggle using arena corner features |
| 231 | + (v5+ projects with arena corner static object) |
| 232 | +- **Features→Enable Lixit Features:** toggle using lixit features |
| 233 | + (v5+ projects with lixit static object) |
| 234 | +- **Features→Enable Food_hopper Features:** toggle using food hopper features |
| 235 | + (v5+ projects with food hopper static object) |
| 236 | +- **Features→Enable Segmentation Features:** toggle using segmentation features |
| 237 | + (v6+ projects) |
225 | 238 |
|
226 | 239 | **Track Overlay Example:** |
227 | 240 | <img src="imgs/track_overlay.png" alt="Track Overlay" width=400 /> |
@@ -412,7 +425,7 @@ one video file. |
412 | 425 | #### Location |
413 | 426 |
|
414 | 427 | The prediction files are saved |
415 | | -in `<JABS project dir>/rotta/predictions/<behavior_name>/<video_name>.h5` if |
| 428 | +in `<JABS project dir>/jabs/predictions/<behavior_name>/<video_name>.h5` if |
416 | 429 | they were generated by the JABS GUI. The `classify.py` script saves inference |
417 | 430 | files in `<out-dir>/<behavior_name>/<video_name>.h5` |
418 | 431 |
|
|
0 commit comments