저해상도 이미지와 정답 이미지가 주어짐.
저해상도 이미지를 이용해서 정답 이미지의 해상도만큼 끌어 올려야함.
막 끌어올리면 안되고 파이썬으로 실험해본 결과
해상화된 이미지를 가로세로 2픽셀만큼 시프트시킨게 psnr 수치가 가장 높았음. 기존 방식보다 해상도가 더 올라갔다는거임.
이렇게 틀을 잡았고 그 다음으로는 파이썬으로 어셈블리어만큼 저수준으로 알고리즘을 구현한 것임. 그리고 그 파이썬 코드를 지피티 o1 pro에게 넘겨줬고 지피티는 어셈블리어로 코드를 뱉었음.
자, 이제 가장 어려운 부분. 오류가 나는대로 다 고치러 디버깅을 해야함.
어셈블리어라서 디버깅도 어려움. printf같은거 못찍음. 직접 돌려가면서 레지스터값을 확인해야함. 그리고 어셈블리어는 함수를 지원 안해서 서브루틴을 짜려면 pc값을 lr에 복사하고 callee쪽에서 lr과 레지스터들을 콜스택에 백업해둠. 리턴할때는 백업해둔 레지스터값들을 복원하고 pc값을 이전 백업해뒀던 lr 값으로 덮어씌우기. 보통 r4-r10,r12,lr 이렇게 해두는게 표준이었나? 그런데 나는 그 필요성을 못느껴서 r4-r12,lr을 push했음.
또 어려웠던 점이 한정된 변수자원(레지스터)를 이용해서 (부족하다면 스택을 활용해서) 계산해봐야했던 점임.
결국에 완성 했음. 이걸 만들면서 의외로 시그모이드 함수도 이용했음.
이것보다 더 똑똑하게 할 수 있을까?
- dc official App
댓글 0