본문 바로가기

분류 전체보기

Dockerfile로 부터 Container 생성 개요 Dockerfile은 텍스트 파일로서 이미지(image)를 빌드 할때 호출 할 수 있는 명령어(+인자) 목록을 담고 있다. 주요 명령어 주요 명령어로는 FROM, CMD, ENTRYPOINT, VOLUME, ENV이 있다. 예시) #Pull base image FROM ubuntu #Install Apache RUN apt-get update -y && apt-get install apache2 apache2-utils -y#Define default port EXPOSE 80 ENTRYPOINT [ "/usr/sbin/apache2ctl" ]#Define default command CMD [ "-D", "FOREGROUND" ] FROM : 도커 이미지 이름을 적는다 RUN : 사용할 디펜던시와.. 더보기
[Vision] EfficientDet(2020) 1. 개요 - 55.1AP on COCO test-dev with 77M parameters and 410B Flops - 최신 대비 4 ~ 9배 파라미터수 적고, 13 ~ 42배 Flops수가 적다. 2. 동기 - 어떤 모델들은 정확도가 높고 파라미터수가 많으며 FLOP수가 크다. 반면, 어떤 모델들은 경량화에 초점을 맞추었다. 본 논문에서는 정확도도 높으면서 효율성이 좋은 (자원 상황에 따라 골라 쓸 수있는) 디택터를 만들고자 하였다. - One-Stage Detector를 계승하되, 백본, 특징 퓨전, Class/Box 네트워크 등을 고려하여 모델을 고려하다가 두가지 도전적 과제를 발견하였다. 2-1. 과거 동향 더보기 MultiScale Feature Representations - SSD(ECC.. 더보기
ORB (Oriented FAST and Rotated BRIEF) 출처: https://docs.opencv.org/3.4/d1/d89/tutorial_py_orb.html OpenCV: ORB (Oriented FAST and Rotated BRIEF) Goal In this chapter, We will see the basics of ORB Theory As an OpenCV enthusiast, the most important thing about the ORB is that it came from "OpenCV Labs". This algorithm was brought up by Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary R. Bradski docs.opencv.org ※ 본 포스팅의 위의 ORB 설명 문.. 더보기
fstream 처음 위치로 옮겨서 덮어쓰기 문제 상황 - 본인은 구조체를 파일에 쓰려고 하였다. 파일 스트림 std::fstream fIn({FILE_PATH}, std::ios::in | std::ios::out) 으로 파일을 열었고, 예를 들어 구조체 5개를 썼다. 하지만, 5개가 한번에 쓰여지는 상황은 아니고 (3개 + 2개) 혹은 (1개 + 4개)로 나뉘어서 씌여지는 상황이다. - 이때 구조체는 다음과 같은 순서로 쓰여지는 문제가 발생하였다. 구조체 3개를 쓰고, 파일이 닫힌뒤 다시 열어서 쓰면 구조체 4번째, 5번째가 파일 처음에 위치하게 되었다. 즉, 기존에 쓰였던 파일이 뒤로 밀렸다. struct{4} // 최근에 쓴 구조체 struct{5} struct{1} // 이하 기존에 쓴 구조체 struct{2} struct{3} - 본인은.. 더보기
C++ 파일 입출력 정리 1. 텍스트 파일과 바이너리 파일 2. C++ 파일 입출력 라이브러리 3. C++ 파일 입출력 모드 : 텍스트 I/O 와 바이너리 I/O, 파일 읽기 쓰기 4. 파일 모드 : 텍스트 I/O 와 바이너리 I/O 5. 멤버 함수를 이용한 텍스트 I/O : get(), put(), read(), write() 출처 : 명품 C++ 프로그래밍 (저자: 황기태) 1. 텍스트 파일과 바이너리 파일 파일은 기록되는 데이터 종류에 따라 텍스트 파일과 바이너리 파일로 나뉜다. 오직 글자로만 이루어진 문서 파일이 텍스트 파일이다. 각 글자에 2Byte 바이너리 코드를 부여하여 ASCII/UNICODE 를 만들었다. 공백은 ASCII로 0x20으로 저장된다. 키는 '\r(0x0D)'+'\n(0x0A)' 두 제어 문자로 기록.. 더보기
Unit testing 이란 https://www.jetbrains.com/help/clion/unit-testing-tutorial.html#basics Unit testing tutorial | CLion www.jetbrains.com ※ 본 포스팅은 위의 글을 번역한 것입니다. 1. 유닛 테스트의 장점 1. 코드를 모듈화 해준다. - 단위 테스트를 수행하기 위해서는 코드가 모듈화 되어야 하기 때문에, 단위 테스트를 수행하기 위해서라도 코드를 모듈화하게(혹은 테스트하기 쉽게)(Code Testability) 설계를 하게 된다 2. (테스트) 회귀를 피해준다 - 단위 테스트는 작업의 진전이 있을 때 마다 반복적으로 수행을 한다. 따라서, 계속 적으로 작업이 옳은 방향으로 나아갈 수 있게 도와준다. 3. 코드를 문서화 해준다. -.. 더보기
Json 파일 읽어 들이는 2가지 방법 파일로 된 Json 데이터를 읽어 들이는 (본인이 알고 있는) 두가지 방법을 정리한다. 1. Json 관련 라이브러리를 이용하는 방법 - https://json-c.github.io/json-c/ - 사용 방법은 다른 포스트에 정리해 놓았다. 2. 파일 스트림을 이용하는 방법 - (1) fstream을 이용해서 파일을 스트림으로 바꾼다. - (2) 파일 스트림을 json 유틸을 이용해서 읽어온다(본인의 경우 사용자가 많은 rapidJson을 이용하였다) #include #include #include #include "rapidjson/document.h" int main() { std::ifstream fIn("test.json"); std::string str; if (in.is_open()) { f.. 더보기
쉘 프로그래밍(Shell Programming) 파일 포맷 - 파일 첫머리의 #!은 shebang 으로 부르는 것으로 스크립트를 실행하기 위한 인터프리터(여기서는 bash) 이름을 시스템에게 알려준다. #!/bin/bash echo "Hello World" 실행 시 - 스크립트 실행 시에 아래와 같이 경로를 포함해야 한다. - 경로를 포함하지 않으면 (예를 들어 $ hello_world) 시스템은 환경변수 PATH에 규정된 디렉토리 목록에 있는 실행프로그램을 검색하게 된다. $ ./hello_world ※ 스크립트 저장 장소 ~/bin 디렉토리에는 개인적인 용도로 사용하려는 스크립트를 주로 저장하도록 한다. (이를 위해서는 먼저 .bashrc에 ~/bin 디렉토리를 PATH 변수에 자동으로 추가하게끔 해야 한다) ($ export PATH=~/bin:.. 더보기