- Python (3.8 ~ 3.10)
- Anaconda3 (κΆμ₯, Miniconda μ¬μ© κ°λ₯)
- CUDA νκ²½ (골격 λ°μ΄ν° μΆμΆ κ°μ)
μλ³Έ λΉλμ€μμ νμμ€ν¬ν κΈ°λ°μΌλ‘ νλ ν΄λ¦½μ μΆμΆνλ€.
MMPoseμ HRNet κΈ°λ°μΌλ‘ Top down Pose Estimationμ μννμ¬ COCO-Keypoint νμ 17 ν€ν¬μΈνΈλ₯Ό μΆμΆνλ€. κ²°κ³Όλ¬Όμ κ° ν΄λ¦½μ λν .pkl νμΌμ΄λ€.
κ° ν΄λ¦½ .pklμ μ€νλ¦Ώ(train or val) λ¨μλ‘ λ¬Άμ΄ μ΅μ’
λ°μ΄ν°μ
μ μμ±νλ€.
{
"annotations": {
"duration": "00:05:00",
"resourceId": "JFID_002330967",
"resource": "FD_In_H11H22H31_0001_20201016_20.mp4",
"resourcePath": ".//PID_000001857/",
"fps": 29.97,
"totFrame": 0,
"resourceSize": 381141978,
"object": [
{
"startPosition": {
"x": "1968.2953307735665",
"y": "377.0414201183432",
"keyFrame": 7801.0
},
"endPosition": {
"x": "2083.3255773772166",
"y": "939.4082840236686",
"keyFrame": 7860.0
},
"startFrame": 7801.0,
"endFrame": 7860.0,
"actionType": "ABNOR_H",
"actionName": "H11H22H31"
}
]
}
}duration: μμ μ΄ κΈΈμ΄fps: μμ FPSobject: μ΄μνλ νμμ€ν¬νstartPosition: νλ μμ μ μμΉ (κ°μ΄ μ€μ)endPosition: νλ μ’ λ£ μ μμΉ (κ°μ΄ μ€μ)startFrame: νλ μμ μ νλ μendFrame: νλ μ’ λ£ μ νλ μactionType: μ΄μνλ νμABNOR_H: λμABNOR_W: λ°°νACT_I_TYPE: μΌμμν
{
"split":
{
"train": ["S001C001P001R001A001", ...],
"val": ["S001C001P003R001A001", ...],
...
}
"annotations":
[
{
{
"frame_dir": "S001C001P001R001A001",
"label": 0,
"img_shape": (1080, 1920),
"original_shape": (1080, 1920),
"total_frames": 103,
"keypoint": array([[[[1032. , 334.8], ...]]])
"keypoint_score": array([[[0.934 , 0.9766, ...]]])
},
{
"frame_dir": "S001C001P003R001A001",
...
},
...
}
]
}split: Dictionary, ν€λ μ€νλ¦Ώ μ΄λ¦, κ°μ ν΄λΉνλ μ€νλ¦Ώμ λν ν΄λ¦½ κ³ μ μ΄λ¦μ λͺ¨μ 리μ€νΈannotations: List of Dictionary, κ° λμ λ리λ ν΄λ¦½λ³ νλ μ 보λ₯Ό ν¬ν¨frame_dir: ν΄λ¦½μ κ³ μ μ΄λ¦label: μ μν ν΄λμ€img_shape: μμμ ν¬κΈ°,(Height, Width)νμoriginal_shape:img_shapeμ κ°μtotal_frames: ν΄λ¦½ μ΄ κΈΈμ΄keypoint: List of Tuple, ν€ν¬μΈνΈ μ 보- ν€ν¬μΈνΈμ μ’ν,
(X, Y)νμ (μ¬λ μ, νλ μ, 17, 2)
- ν€ν¬μΈνΈμ μ’ν,
keypoint_score: ν€ν¬μΈνΈ μ μ(μ¬λ μ, νλ μ, 17)
- μμ(
.mp4,.avi), 골격 λ°μ΄ν°(.pkl)λ₯Ό μ§μ μ λ‘λνμ§ λ§ κ².git add .,git add *μ¬μ© μ§μ