# Sample annotation for multi-category anomaly detection ## Template A dictionary includes two primary keys: `anomaly_ids` and `annotations`. - Key `anomaly_ids` has the value as the dictionary mapping anomaly catogories to integer indices. - Key `annotations` has keys as video names. Each key has the value as a list that each component in this list is the sub-dictionary includes three keys that are `frame_start`, `frame_end` and `anomalies`. Two keys `frame_start`, `frame_end` indicate the sequence of frames appearing anomalous events. `anomalies` has the value as a list. Each component in this list is a sub-dictionary includes three keys `frame_start`, `frame_end`, and `anomaly_ids`. The key `anomaly_ids` has the value as a integer list that includes indices as anomalous categories. ```[python3] { "anomaly_ids": { "name-anomaly-1": int, "name-anomaly-2": int, ... "name-anomaly-n": int } "annotations": { "video-name-1_[num_frame]": { "frame-start": int, "frame-end": int, "anomalies": [ { "frame-start": int, "frame-end": int, "anomaly_ids": [int, int, ..., int] } ] }, ... "video-name-n": { "frame-start": int, "frame-end": int, "anomalies": [ { "frame-start": int, "frame-end": int, "anomaly_ids": [int, int, ..., int] } ] } } } ``` ## Example - Video name: DJI_0065 (1908 frames) - Link video demo: [Link](https://drive.google.com/file/d/1RS4LXFY2bwS4NfiZ-dctGL59Epyh49BR/view?usp=drive_link) - Sample json file: [Link](https://drive.google.com/file/d/1aBB5jlx6b8DHB9LMQylefQQ3_JN3cBNm/view?usp=sharing) ```[python3] { "anomaly_ids": { "crossing-the-road-at-the-wrong-line": 0, "walking-under-the-street": 1, "driving-in-the-wrong-roundabout": 2, "driving-on-the-side-walk": 3, "illegal-turn": 4, "illegal-parking": 5, "carrying-bulky-goods": 6, "parking-on-the-sidewalk": 7, "driving-in-the-opposite-directions": 8, "falling-off-motorcycles": 9 }, "annotations": { "DJI_0065_1908": [ { "frame_start": 17, "frame_end": 75, "anomalies": [ { "frame_start": 17, "frame_end": 75, "anomaly_ids": [0], "bbox": { 0: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], } } ] }, { "frame_start": 179, "frame_end": 287, "anomalies": [ { "frame_start": 179, "frame_end": 287, "anomaly_ids": [4], "bbox": { 4: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], } } ] }, { "frame_start": 371, "frame_end": 399, "anomalies": [ { "frame_start": 371, "frame_end": 399, "anomaly_ids": [4], "bbox": { 4: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], } } ] }, { "frame_start": 498, "frame_end": 555, "anomalies": [ { "frame_start": 498, "frame_end": 555, "anomaly_ids": [4], "bbox": { 4: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], } } ] }, { "frame_start": 800, "frame_end": 822, "anomalies": [ { "frame_start": 800, "frame_end": 822, "anomaly_ids": [4], "bbox": { 4: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], } } ] }, { "frame_start": 878, "frame_end": 905, "anomalies": [ { "frame_start": 878, "frame_end": 905, "anomaly_ids": [4], "bbox": { 4: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], } } ] }, { "frame_start": 1065, "frame_end": 1127, "anomalies": [ { "frame_start": 1065, "frame_end": 1090, "anomaly_ids": [0, 4] "bbox": { 0: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], 4: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], } }, { "frame_start": 1091, "frame_end": 1127, "anomaly_ids": [4], "bbox": { 4: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], } } ] }, { "frame_start": 1320, "frame_end": 1504, "anomalies": [ { "frame_start": 1320, "frame_end": 1504, "anomaly_ids": [0], "bbox": { 0: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], } } ] }, { "frame_start": 1696, "frame_end": 1778, "anomalies": [ { "frame_start": 1696, "frame_end": 1778, "anomaly_ids": [4], "bbox": { 4: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], } } ] }, { "frame_start": 1784, "frame_end": 1799, "anomalies": [ { "frame_start": 1784, "frame_end": 1799, "anomaly_ids": [4], "bbox": { 4: [[x1, y1, x2, y2], ..., [x1, y1, x2, y2]], } } ] } ] } } ```