2025/7/10(목)
1.Rat Training

#Rat No. 49 Group : comparison study of no reward vs negative feedback on learning Current weight : 458g(+ 10g) Pellet/Water : 10g, Experiment time : 09:20 ~ 10:00 Stage : Handling(Towel handlin & Grabbing) - DAY 4
10분의 적응 시간을 주고 handling을 진행했다. 10분 적응 시간동안 rat handling training 영상을 통해 배운 handling의 거부감을 없애는 방식을 시도해 보았다. 먼저 왼 손바닥에 푸룻릅을 잘개 잘라 올려주었다. 그리고 쥐에게 주는 대신에 손 위에서 먹을 수 있도록 한다. 적응이 되었다면, 오른손 손바닥에 푸룻릅을 올려준다. 이때 쥐에게 왼 손바닥(아무것도 없는 손바닥)을 가까이 대주고 멀리 오른손 손바닥에 푸릇룹을 올려서 준다. 이렇게 하면 쥐가 왼 손바닥에 올라와서 푸릇룹을 먹게 된다. 시도 해보니 49번은 왼 손바닥 위에서 푸릇릅을 먹었다. 추가로 손에 올려 더 높게 들어 손 위에서도 푸룻릅을 주니 편안하게 먹었다. 그 후 13분에 grabbing을 진행했다.(2mL) 처음 grabbing을 진행 했을 때는 저항이 있었다. 16분에 처음으로 얼굴 그루밍을 진행했다. 21분에 grabbing을 진행하는 도중 똥 4개를 쌌다. 25분 grabbing에서는 저항이 있어 충격을 주어 저항을 교정했다. 충격을 주니 확실히 효과가 있었다. 26분에 몸 전체적으로 그루밍을 진행했다. 49번은 어제 grabbing에 대한 반발감이 심해 걱정이었지만, 금일 grabbing에서 좋은 모습을 많이 보여줬다.(손에서 가만히 있는 모습을 정말 많이 보여줌) 추가로 syringe에 대한 두려움이 많이 사라진 모습을 보였다. 49번은 왼손으로 grabbing을 진행했는데, reward를 주는 공간을 실험자 기준 오른쪽으로 설정했다. 오른쪽으로 오면 reward를 주는 것 까지 학습시켰다. 금일 푸룻릅은 6개를 먹었고, suger water은 9mL를 먹었다.
Rat No. 50
Group : comparison study of no reward vs negative feedback on learning Current weight : 440g(+ 11g), Pellet/Water : 10g, Experiment time : 10:10 ~ 10:50 Stage : Handling(Towel handling & Grabbing) - DAY 4
10분의 적응 시간을 주고 handling을 진행했다. 50번은 어제 handling에 대한 거부감이 심하지 않아 49번에 적용한 handling의 거부감을 없애는 방식을 사용하지 않았다. 적응시간이 지난 후 grabbing을 진행하였다. grabbing을 진행한 직후 12분에 똥 3개를 쌌으며, 13분에 추가로 똥 1개를 쌌다. 19분에 처음으로 저항없이 grabbing에 성공했다. 20분에 얼굴을 처음으로 그루밍 했다. 그 후 grabbing을 계속 진행했으나, 뒷 발의 저항이 너무 거셌다. 수빈 선배님께서 grabbing을 진행 했을 때는 얌전히 있었다. 필자가 grabbing을 진행 했을 때는 저항이 너무 거셌다. 아마도 필자의 grabbing이 불편한 것 같다. 추가로 50번은 오른손으로 grabbing을 진행했다. 그리하여 reward를 주는 공간을 왼쪽으로 학습시켰다. grabbing을 계속 진행했지만 저항이 정말 거셌다. 그리하여 grab 후 몸에 붙여 저항을 줄이는 방식으로 변경했다. 추가로 앞 발을 크로스하여 잡는 방식이 아닌 앞 발 바로 뒤를 양 손으로 감싸는 방식으로 grabbing 방식을 변경했다. 방식을 변경 후 grabbing을 진행하니 눈에 보일 정도로 저항이 많이 줄었다. 마지막에는 거의 저항이 없어질 정도로 줄었다. 아마도 필자가 아직 grabbing이 익숙하지 않아 쥐가 불편해 하는 것 같다. 쥐를 잡아도 편한 자세를 좀 더 연구하고 찾아보아야 할 것 같다. 그리하여 연습하기 위해서

수빈선배님께서 쥐 인형을 구해주셨다.(LE49.5) 실험이 없는 시간에 연습하여 최적의 grabbing을 찾아 보려고 한다. 계속 손목이 꺾여 grabbing이 잘 못 되는 것 같다. 손목 부분을 확실하게 피는 연습과, 쥐를 제압할 수 있는 알맞은 grabbing 세기를 찾아야 할 것 같다. 50번은 금일 푸릇룹을 2.5개를 먹었고, suger water는 10mL를 먹었다.
2. DLC project
어제 install 되지 않는 cuda install를 해결했다. GUI로 install을 진행하려 했지만 어제와 마찬가지로 GUI에서는 깔리지 않았다. 그리하여 anaconda 가상환경에서 직접 set up후 cuda와 cuDNN 설치를 진행했다.
Deeplabcut은 python과 tensorflow를 기반으로 한 program이다. tensorflow를 desktop set up인 RTX 3090에 맞는 tensorflow 2.12를 사용하고 싶었으나, tensorflow가 gpu를 잡지 못하는 문제를 발견했다. 그리하여 tensorflow는 한 단계 낮은 2.11 version을 사용하여 set up을 진행하기로 결정했다. 추가로 tensorflow 2.12에 사용할 수 있는 cuda toolkit 11.8 version도 tensorflow 2.11 version에 맞게 설정하기 위해 11.2 version으로 install을 진행하기로 했다. 마지막으로 cuDNN도 8.6 version에서 8.1 version으로 진행했다.
https://www.tensorflow.org/install?hl=ko
tensorflow 공식 홈페이지이다. 여기서 필자는 tensorflow version에 호환되는 cudatoolkit, cuDNN version을 data sheet를 통해 알 수 있었다.
install에 들어가기 앞서 conda update를 진행해 주었다. version이 맞지 않는 문제를 미리 방지하기 위해 anaconda에서
conda upgrade를 입력하여 conda를 최신 버전으로 upgrade 해준다.
deeplabcut이 설치되어 있는 가상 환경에 들어가 주었다. anaconda에서
conda activate deeplabcut명령어를 통해 deeplabcut 가상환경에 접속해주었다.
다음으로
conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1.0을 통해 cudatoolkit = 11.2 version과 cudnn=8.1.0 version을 install해준다.
그 후
pip install "tensorflow<2.11"를 입력하여 tensorflow 2.11 version을 입력해주었다.
마지막으로 tensorflow에 gpu가 잡히는지 확인해 주어야 한다.
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"입력하여 gpu 2개가 잡히는지 확인한다. 엊그제 위 명령어를 입력했을 때에는 [ ]로 빈 list가 출력되었다. 빈 list가 출력되는 이유는 gpu가 잡히지 않는 문제를 보여주는 것이다. 금일은 tensorflow에서 gpu 2개가 잡히는 결과값을 출력했다.
마지막으로 cmd 창에서
nvidia -smi
을 입력하여 gpu 2개가 잘 작동하는지 확인했다. 확인해보니 cuda version과 gpu 2개 모두 정상 작동하는 결과를 볼 수 있었다.
GPU가 잡혔으니 deeplabcut 내에서 트레이닝이 되는지 확인했다.
Python -m deeplabcut을 입력하여 deeplabcut gui를 실행시켜 준다. 0100 mp4로 test를 진행한 project로 test를 진행했다. project에 존재하는 yaml file을 선택하여 실행시켜 주었다. labeling은 hyper drive의 동,서,남,북 그리고 쥐의 nose에 찍은 data가 아직 존재하여 labeling data를 다시 불러온 후 학습을 진행시켰다.
yaml file에서 batch_size를 1로 그대로 두었다. batch_size를 16으로 늘려야 gpu를 2개를 사용할 수 있지만, 먼저 gpu를 1개만 사용하여 learning time이 얼마정도 걸리는지 test 해본 후 batch_size를 16으로 늘려 learning time을 test 하여 비교해 보려고 한다.
Train network에서 iterations값을 지정시켜 주었다. iterations값을 얼마를 지정해 줄 지 고민했다. test 과정이라 기본으로 존재하는 save interations : 50000 Maximum iterations : 100000 값을 주었다.

13:55분 부터 학습을 시작하여 18:05분에 학습을 끝냈다.
추가로 다른 file에 존재하는 0100 .mp4로 analyze videos를 진행했다. 기본 test이기 때문에 다른 설정은 건드리지 않았다.

명일 analyze video 출력물을 확인 하고 csv 데이터를 통해 학습 데이터에 대한 출력물을 분석해보겠다.