집의 공용 노트북이 인텔 셀러론 B820 CPU + 4GB RAM 조합인지라 이제는 SSD로도 넘나 느려서 교체를 마음먹었습니다.

  • 어차피 노트북으로 무슨 게임...
  • LG 그램/삼성 노트북9 급 고급 초경량 모델은 살 돈이 없고...

하다 미국 massgenie 사이트에서 그럭저럭 좋은 딜이 떠서 하나 구입했습니다.

  • 나름 가벼운 무게: HDD 빼면 1.5 kg
  • 15.6인치 FHD IPS 디스플레이
  • (8세대부터는 코어 수 늘어서 의미있는) 인텔 모바일 i5 프로세서, 이제는 최소사양인 8 GiB 메모리
  • 깔끔한 디자인

    이 장점이고, 키감은 그냥저냥 봐줄만하지 상판이 단단히 고정되어 있지 못해서 그리 좋지는 않습니다.

국내에서 파는 ASUS S510 시리즈와 외관은 동일하나,

  • 같은 값에 MS 윈도 10 홈 정품 라이선스 포함
  • SSD는 없지만 (쟁여둔 삼성 T3 휴대용 SSD를 이용하기로) 조금 싼 가격

이 구매 결정의 이유였고요.

결제 실패 사례가 은근 많았으나, 스리슬쩍 진행되더니 별 메일도 없이 배대지로 배송시켜버리더군요. 조금 느리지만 검수 잘 해준다는 가지다 배송대행업체를 이용했으나 싸게 배송받겠다고 비검수를 택한 이상 의미는 없었죠.. 느리다더니 빠르게 집까지 잘 왔습니다.

수령

받아보니 다른 후기와 같이 별다른 보호 상자 없이 노트북 상자만 덩그러니 (뽁뽁이는 배대지에서 둘러줬습니다) 왔습니다. 엄청 싼 것도 아님에도 부실한 포장은 실망이었습니다. 구성품은 노트북 본체, 전원 어댑터 뿐입니다.

구겨진 박스 모서리...
구성품은 노트북 본체와, ...
전원 어댑터 뿐...

쓰지는 않을 것 같지만 지문 센서가 트랙패드 우상단에 있습니다. 과제 암살자 전원 버튼이 키보드 우상단에 있고 다른 키와 재질, 모양이 똑같습니다. 키감이 달라 조금 강하게 눌러야 동작하기는 하고, 윈도 설정에서 전원 버튼 기능을 없애버리면 그나마 안심할 수 있겠습니다. 직관대로 전원 버튼을 오래 누르면 강제로 전원을 끌 수 있습니다.

전원 단자는 우측에 위치해 있으며 전원 플러그는 맥세이프, 서피스 커넥터 같은 자석식 아니고 그냥 일반적인 모양입니다. 고가 모델은 아니니까 인정..

SSD로 마이그레이션

삼성 SSD 쓸 거니까 삼성 홈페이지에서 SSD 마이그레이션 툴을 받아왔습니다. 시키는 대로 하면 간단하게 옮길 수 있습니다. 재설치하고 드라이버 잡기는 귀찮으니까...

외장형 SSD 분해해서 장착 준비

지금은 SSD 가격이 폭락하다시피 해서 의미는 없지만, 작년 단종 할인 때 적당히 구입한 삼성 T3 외장형 SSD와 mSATA to SATA 변환 어댑터를 드디어 쓸 때가 왔습니다.

  • 앞뒤 스티커 떼어내고 (A/S 안녕..) 나사 풀기
  • 잠금쇠 고려하여 강하게 잡아당겨 뚜껑 떼어내기
  • SSD 및 보드 떼어내고, 나사 풀어 SSD만 꺼내기
  • 미리 준비한 변환 어댑터에 장착하면 끝.

분해 완료한 모습
mSATA -> SATA 어댑터
SSD 장착...

노트북 하판 뜯어서 HDD 떼어내고 SSD 장착

노트북을 뒤집어서 나사를 모두 풀고, 하판 테두리를 따라 안 쓰는 신용카드 등을 이용해 걸쇠를 잘 (저는 어려웠습니다) 분리하면 내부를 볼 수 있습니다.

하판 나사들

힌지 쪽 고무받침 두 개 밑에도 나사가 숨겨져 있으니 꼭 풀어내야 합니다. 저는 고무받침 떼어내려다 하판 케이스에 생채기를 만들었습니다... 실패!

좌측 하단을 보면 HDD, 그리고 왼쪽에 M.2 SATA (NVMe 아님!!! ㅠ) 슬롯을 볼 수 있습니다. 저는 HDD를 일반 SATA SSD로 교체할 거니까 HDD를 떼어냈습니다. 고정 나사 4개를 풀어내고 커넥터가 손상되지 않도록 HDD 왼쪽을 들고 조심스럽게 왼쪽으로 잡아당기면 빠집니다.

떼어내기 전 HDD (커넥터 보호하는 천 쪼가리 떼어내고 나사도 뺀 상태)
나사 풀고...
떼어낸 HDD. 외장하드 케이스에 꽂아봅니다..
SSD 장착 완료. 휑하네요. 고정은... 뭐 노트북 안 던질거니까...
하판 조립 전 테스트. 잘 켜지고 마이그레이션도 잘 되었군요.

스코코 보호필름, 한글 스티커 부착

더럽게 비싸기는 하지만 (2만원 대) 마음 편하게 노트북 쓰기 위해 스코코 무광 보호필름을 붙여 봅니다. 근거는 없지만 유광보다 무광이 좋더군요. 질감이 좋고, 유광 대비 접착제가 테두리로 묻어나오질 않아 오래 쓸 수 있었습니다. 요새 유광은 다르겠죠.

붙이기는 그럭저럭 잘 진행되었으나, 키보드/트랙패드 주위 필름 붙이기가 어려웠습니다. 절단선 따라 매끄럽게 붙이지 못했습니다.. 옆면 필름이 있는 점은 매우 좋았는데, 앞쪽인지 뒤쪽인지 알 수가 없어서 잘 붙였는지 알 수가 없었습니다.

가족끼리 쓰는 노트북이라서 한글 스티커도 사다 붙였습니다. 11번가에서 1천원 (배송비 2,500원.........) 스티커를 투명/검정 총 두 장 샀고요. 혹시나 해서 검정도 사 보았으나 원래 디자인을 살리는 투명만 붙였습니다. 삐뚤빼뚤 붙였지만 값싼 것 생각하면 만족스럽고요, 시간이 지나 스티커에서 접착제가 묻어나오는 일이 없었으면 좋겠습니다. 벌써부터 조금 끈적이는 것 같기는 하지만 착각이겠죠.

macOS 설치 실패기

돈이 없어서 영접할 수 없었던 맥북을 드디어 한 번 만들어보려 했습니다.

SSD 용량도 남아돌겠다,

인텔 CPU + 내장 그래픽 + (그저 사랑인) 클로버 부트로더 + 국내외의 수많은 ASUS 노트북 이용 성공사례 + F510UA 모델 성공사례 모두 있으니 가능하겠죠.

그러나,

  • 윈도에서 설치 USB 만들려 했으나, 부팅은 잘 되지만 함께 넣은 설치 이미지 못알아먹고 인터넷으로 받으려 함
  • 트랙패드 인식시키기 실패...?
  • 인텔 무선랜카드 내장이라 인식 안 됨 (이건 어쩔 수 없는 부분, 무조건 타사 무선랜 카드로 교체 필요)
  • 집에 있는 싸구려 USB 무선랜 동작 안 됨...
  • 역시 집에 있는 싸구려 USB 유선랜 어찌어찌 인식시켰으나 설치 이미지 다운로드 지나치게 오래 걸리고 더 이상하게도 집안 네트워크 트래픽 폭주시킴...?
  • 맥에서 설치 USB 만들어 오니 일사천리로 설치 완료. 하이 시에라 버전이라 파일 시스템이 APFS이긴 한데 괜찮겠지..

데스크탑 화면 띄우니 예쁘긴 예쁘더군요. 다행히 GPU 가속은 그냥 활성화가 되어서 화면보호기도 잘 뜨고..

그러나 여전히,

  • 트랙패드 인식 안 됨
  • 노트북인데 무슨 유선랜
  • USB 무선랜 카드 여전히 인식 안 됨
  • 교체용 브로드컴 무선랜카드 이제 한국으로 여정 시작
  • 가장 큰 문제, 귀찮음

일단 멈추기로 했습니다. 다음에 무선랜카드 오면 한 번 더 건드려보기로.

무선랜카드 교체했으나 실패...

이베이에서 구입한 DW1820A (해킨 잘 된다길래...) 한 달 조금 지나 받아서 교체를 해 봤습니다.

그러나... 교체했더니 설치해둔 해킨 부팅이 안 되고 (1차 망), 새로 설치하려고 모하비 USB 만들었더니 설치 안 되고 (2차 망) 해서 때려치웠습니다. 해외에 성공 사례가 여럿 있어서 안 될 이유는 없긴 한데 내공이 부족해서 어렵네요. 순정 macOS 쓰고 싶어서 Unibeast 같은 커스텀은 왠지 쓰기 싫고...

문제는 윈도 부팅 상태에서도 무선랜 장치가 불안정하더라구요. 가끔 장치가 아예 죽어버리고 재부팅해야 살아납니다. 랜카드를 잘못 뽑은 듯... ㅠ.ㅠ 살 때 좀 더 알아봤어야 했는데, DW1820A 모델이 값은 싸지만 해킨 설치가 어렵다네요. 여러분은 비싸더라도 딴 거 사세요 :(

반응형

'리뷰' 카테고리의 다른 글

2019년 감상 영화 소고  (0) 2019.03.19
2018년 감상 영화 소고  (0) 2019.03.19
2016년 감상 영화 소고  (0) 2017.10.16
2017년 감상 영화 소고  (0) 2017.10.16
책 '소수의견'을 읽고  (0) 2017.05.15

Mp3tag에서 벅스로 앨범에 태그 자동으로 입력하기 v0.4.15

❕Mp3tag v3.23 이상에서 동작하는 새 버전(>=v0.4.15)으로 업데이트해주세요. 기존 파일을 새 파일로 덮어쓰세요.

💬 v0.4.9에서 일부 노래 동기가사의 시간 포맷이 다른 점을 반영하여 수정하였습니다.
댓글 주신 마루오디오 개발자님 감사합니다!

🔔 2020년 2월 모바일 페이지 개편을 v0.4.8에 반영했습니다.

원전

클리앙 > 팁과강좌 > mp3tag를 이용해서 멜론의 정보를 mp3에 입력하기 / "고추장불고기"님
클리앙 > 자료실 > 파이썬 싱크가사 한꺼번에 적용하기 FLAC한정 / "citruse"님

특장점

  • 고오급 음악 태그 품질을 자랑하는 벅스에서 곡 정보를 가져올 수 있습니다!
    • 타사 대비 고품질 앨범 아트 이미지를 이용할 수 있습니다.
    • 곡 제목에 붙은 설명 문구는 무시합니다.
      • 예시: Ah-Choo (드라마 월계수 양복점 신사들 삽입곡) --> Ah-Choo
    • 여러 디스크로 이루어진 경우도 이제 문제 없습니다. (>= v0.4)

검색 결과 예시 1
검색 결과 예시 2 :: 한 앨범이 여러 디스크로 이루어졌을 때

  • 키워드 검색은(앨범명, 곡 제목) 모바일 페이지를 이용하므로, 데이터 트래픽을 조금 절감합니다!
  • 입력이 번거로운 부가 정보도 함께 가져옵니다.
    • 앨범 정보 예. 장르, 스타일, 기획사, 유통사, 앨범 설명
    • 트랙 정보 예. 가사 및 보컬, 작곡, 작사, 편곡 (정보가 있는 경우에만)
  • 벅스의 고오오오급 초고화질 앨범 커버를 입맛에 맞는 해상도로 가져올 수 있습니다.
    • 기본값은 1000이며, 소스 파일을 수정하여 200, 500, 1000, 원본 중 선택할 수 있겠습니다
  • 가사 및 참여정보 입력이 가능합니다. 동기가사(시간 맞춰 나오는 가사)도 가져올 수 있습니다.

한계

  • 벅스 웹페이지 개편이 있는 순간 고장납니다
  • 검색 결과 첫 번째 페이지에 나타난 항목만 찾을 수 있으며, 일부 특수문자 (쌍따옴표("), 억음부호(`)) 포함 시 검색이 안 됩니다.
  • 동기 가사: LRC 형식으로 만들고, 대충 "LYRICS" 태그에 기록합니다.
    • 안타깝게도 Mp3tag를 통해서는 올바른 태그에 올바른 형식으로 기록할 수 없는 것 같습니다.
    • 곡 길이가 15분 이내인 경우에만 가져올 수 있습니다. LRC 포맷 변환을 수동으로 했기 때문입니다..
    • Mp3tag 프로그램에서 LRC 가사 파일을 트랙별로 내보낼 방법이 아직 없습니다. 참고: 보조 프로그램 이용
    • 동기 가사가 별로라면 GetLyrics2 프로그램을 통해 알송 서버의 수준급 데이터베이스를 이용하세요. 바로 LRC 파일로 저장할 수 있습니다. 태그 기록도 되고요. (댓글 주신 분에 따르면 역시 태그 인식은 안 된다고 함)
  • 그 외 예상치 못한 벅스 웹페이지 문서 구조로 인해 오류가 발생할 수 있습니다. 댓글 주시면 언젠가 개선됩니다 :)

설치

[GitHub 배포 페이지]

  • 위 링크에서 최신 버전의 압축 파일을 받고,
  • Windows 탐색기에서 %appdata%\Mp3tag\data\sources\ 경로로 이동하세요.
    • 실행 창을([Win+R] 단축키) 이용해도 됩니다.
  • 압축 파일에 들어있는 .src 확장자 및 .inc 확장자인 모든 파일을 위 경로에 붙여넣으세요. 끝!

세부 조정 예시

  • 여는 소괄호 앞에 일부러 빈 칸을 두었습니다. 싫으시면 다음 코드를 찾아 주석처리하거나 지우세요.
    RegexpReplace "(\w{2,})(" "$1 (" 1
  • 앨범 커버 해상도 기본값은 1000입니다. 바꾸려면 다음 코드를 찾아 1000을 다른 값으로 바꾸세요: 200, 500
    RegexpReplace "(album/images/)(\d+)" "$1@1000"
  • 발매년도 태그인 YEAR에 발매일을 전부 적고 있습니다 (YYYY.MM.DD)
    • 대신, 발매년도만 적으려면, "Bugs#Common_AlbumPage.inc" 파일을 열고 아래와 같이 해 보세요
    • # 0. 발매년도("YEAR") 태그를 입력하는 부분을 찾아보세요. 그 부분 근처에서.. # 1. 아래 줄을 찾아 주석처리하거나 (앞에 '#' 글자 붙이기) 지우고 SayUntil "<" # 2. 아래 줄을 찾아 주석 표시를 지우세요 (앞에 붙인 '#' 글자 지우기) # SayNChars 4

사용법

  • ...대충 써 보면 알 수 있습니다

앨범 정보 (또는 곡 정보) 검색

  • Mp3tag를 열고, 태그를 편집할 음악 파일을 불러옵니다
  • 같은 앨범에 속한 음악 파일을 선택한 후,
    • Mp3tag 프로그램 설계상 앨범 단위로 검색됩니다
  • 메뉴의 [태그 소스 > Bugs]에서 원하는 스크립트를 선택해 실행하세요
    • 보통은 앨범 검색을 이용하세요
  • 검색어를 묻는 창이 뜹니다. 선택한 기능에 따라 앨범명 또는 곡명을 입력하고 다음 버튼을 클릭하세요
  • 검색 결과 페이지를 불러온 후, 원하는 결과를 선택하는 창이 뜹니다
    • 결과가 하나 뿐이면 바로 다음 단계로 넘어갑니다

  • 이제 선택한 앨범에 대한 정보 페이지를 읽어들인 후, 앨범 정보 창이 표시됩니다
    • 가져온 태그를 입맛에 맞게 수정하세요
    • 하단 좌측 트랙 창과 우측 파일 창의 순서가 원하는 대로 일치하도록 우측 창의 음악파일 순서를 조정하세요
      (마우스 드래그, 또는 항목 선택 후 오른쪽의 이동 버튼 활용)

  • 확인을 누르면 태그가 파일에 반영됩니다
    • 만약 곡 태그에 기존 앨범 커버가 있다면, 기존 커버 이미지를 그대로 둘 지 묻습니다
      • 아니오를 클릭해야 기존 커버가 삭제됩니다

앨범 정보 입력 후, 곡별가사 및 참여정보, 또는 동기가사 입력

  • 앞의 과정에서 태그에 벅스 트랙 ID가 함께 입력됩니다.
    이를 이용해 트랙 페이지에서 가사 및 (정보가 있다면) 참여 아티스트 (작사가, 작곡가 등) 정보를 가져올 수 있습니다.
    • 이번에는 한 곡만 선택한 뒤, 위의 태그 소스 메뉴 중 곡 ID - 가사 항목을 선택하세요.
      • 일부 곡의 경우 가사를 불러오지 못한다면, 대신 곡 ID - 가사 (alt.) 메뉴를 이용하세요
    • 검색어를 묻는 창이 뜹니다. 앞에서 입력한 트랙 ID가 이미 검색창에 나타나 있습니다. 다음 클릭!
    • 이제 트랙 페이지를 읽어들인 후, 가사와 참여 정보(있으면)만 표시된 앨범 정보 창이 표시됩니다.
    • 확인을 누르면 태그가 파일에 반영됩니다
    • 위 절차를 앨범의 각 트랙에 대해 반복하세요... 아래의 단축키를 이용하면 조금 쉬워집니다
  • 한편, "동기 가사" 메뉴를 통해 (곡 ID - 동기가사) 동기가사를 (=시간별 가사) 입력할 수 있습니다

빠른 작업 진행을 위한 팁

  • 도구 모음 오른쪽 끝에 [지구본+화살표] 아이콘이 태그 소스 기능입니다.
    • 화살표가 지구를 감싸고 도는 아이콘: 검색어 묻지 않고 태그 정보로 바로 검색
    • 지구 앞 양방향 화살표 아이콘: 검색어 묻고 나서 검색
      • 옆의 아래 방향 화살표를 누르면 태그 소스 목록이 뜹니다.
  • 사용할 스크립트를 한 번 골라서 실행한 뒤,
    • 그 다음부터는 둘 중 원하는 아이콘을 누르면, 이전에 선택한 스크립트가 바로 실행됩니다.
  • 단축키를 이용하면 더 편리합니다. (도움말에서 단축키 목록 확인 가능)
    • 바로 검색: Ctrl + Shift + I, 검색 실행: Ctrl + I

참고

동기가사를 "LYRICS" 태그에 넣은 이유

먼저, 웹 소스에서 바로 음악 태그가 아닌 외부 파일로 결과물을 내보내는 기능은 없는 것으로 알고 있습니다. 그래서 찾은 동기가사 텍스트를 무슨 태그가 되었든 태그에 넣기는 해야 합니다.

또한, 'LRC 포맷 동기가사'를 "LYRICS" 태그를 만들어 적어넣는 것은 표준은 아닌 것으로 알고 있습니다. 그럼에도 태그명을 "LYRICS"라고 적은 것은 아래와 같은 이유입니다

그냥 가사용 태그인 "UNSYNCEDLYRICS"에 동기가사를 적어넣긴 뭐해서.  
예전에 foobar2000 LRC 가사 플러그인이 LYRICS 태그를 읽을 수 있어서.

한편, 삼성뮤직 앱 (버전 16.2.18.6 / 19.7.31) 테스트 결과,

  • FLAC
    • 태그로는 LYRICS 태그에 적은 그냥 가사만 인식
    • 동기가사는 별도 파일 (LRC, XSYL 포맷 (slf 파일?)) 준비 필요
      (cf. XSYL 포맷 가사는 멜론 앱에서 음악 재생하여 얻을 수 있다 함 참고)
      • NOTE 동기가사 파일 내용 사이에 빈 줄이 있으면 가사 인식이 되지 않음! (~v0.4.10, 해당 문제 수정 필요)
  • MP3
    • UNSYNCEDLYRICS ('USLT') 태그에서는 그냥 가사만 인식, 'ULT' 태그도 마찬가지인 것으로 보임
    • 'XSYL' 태그에서 LRC 포맷 말고 XSYL(?) 포맷 가사 인식할 수 있으나 MP3TAG 프로그램에서는 해당 태그를 읽고 쓸 수 없음
    • FLAC와 같이, 별도 가사 파일 만들면 가능

따라서 Mp3tag만으로는 태그 내장이 여러 모로 어려울 것 같네요.

누구는 벅스, 멜론, 네이버뮤직에서 산 음원이 된다 하는데 아마 위의 'XSLT' 태그에 동기가사를 써넣지 않을까 싶네요.
참고1, 참고2, 참고3

제가 PC에서 받은 벅스, 네이버뮤직 음원은 전부 동기가사 지원이 안 되었지만요. 왜 그러는지 🙄

반응형

'도구' 카테고리의 다른 글

LG 휴대폰 통신사 문구 숨김 테마  (0) 2019.04.28
Mp3tag 웹 태그 소스 - 벅스 v0.3  (0) 2018.08.16
Mp3tag 웹 태그 소스 - 벅스 v0.2.1  (7) 2017.11.05
Mp3tag 웹 태그 소스 - 벅스  (2) 2017.03.12

업데이트되었습니다. 클릭해주세요.

Mp3tag에서 벅스로 앨범에 태그 자동으로 입력하기 v0.3

원전

클리앙에서 "고추장불고기"님의 아래 글을 보고, 내가 좋아라 하는 벅스용으로 만들면 좋겠다 싶었다.

클리앙 > 팁과강좌 > mp3tag를 이용해서 멜론의 정보를 mp3에 입력하기

특징

  • 모바일 페이지를 통해 앨범명 검색
  • 앨범 페이지에 보이는 부가 정보도 함께 끌어옴
    • 장르, 스타일, 기획사, 유통사, 앨범 설명
  • 벅스에서 지원하는 앨범 커버 이미지 크기 중 골라 쓸 수 있다.
    • 200, 500, 1000, 원본
  • 곡명으로 검색도 가능 (곡 하나에 대해서만 입력할 때)
  • 태그 입력 후, 함께 가져온 곡 ID를 통해 가사 입력이 가능 (단, 각 트랙마다 검색 돌려야 함. 현재로써는 자동화 불가.)

안 되는 것

  • 벅스 개편으로 페이지 구성이 조금만 달라져도 해석이 안 될 것이다. (빈 창이 뜸.)
  • 검색 결과 페이지 중 첫 번째 페이지만 불러올 수 있다.
  • 가사 입력은 별도로 각 트랙마다 진행해야 한다. 게다가 동기 가사는 비공개되어 있어 불가하다.
    • 동기 가사는 (= 시간별로 입력된 가사) GetLyrics2 프로그램을 통해 알송 가사를 받아 이용하시기 바란다. 예를 들어 "삼성뮤직" 앱도 LRC 동기 가사 파일을 지원한다. (엘지 개발자님들... 혹시 시간 괜찮으시면...)
  • 파싱 실패 사례
    • 판매 금지 곡이 있는 경우 (i.e. "불후의 명곡 - 장윤정" -- "어머나"...)
    • 아티스트가 여럿인 경우 한 명만 가져옴 (i.e. "Beautiful" / 솔루션스 & 케이)
    • 여러 장 CD인 경우 한 장만 해석됨 (i.e. "윤상 20주년")
  • 싱글 앨범이면 (=곡이 하나) 태그 입력은 정상적이나, 트랙 목록에 아무것도 표시되지 않는다. (내 잘못인가, Mp3tag 개발자님 잘못인가...)
  • Mp3tag v2.89a 기준 if문 동작이 예상과 달라서, 예상치 못한 오류가 더 있겠지만...

설치법

  • 아래 링크에서 스크립트를 다운로드한다.
    GitHub/limerainne/mp3tag-ws-bugs/releases/v0.3.zip

  • Windows 탐색기에서 다음 경로로 이동하고, 다운로드한 압축 파일 중 "src" 확장자 파일만 넣는다.

    • "%appdata%\Mp3tag\data\sources\"
  • 태그 정보가 마음에 안 든다면...
    • 스크립트 중 필요한 파일을 열어서 (줄 번호는 v0.3 기준, 앨범, 곡 검색 순서)
    • 앨범 커버 해상도 (132줄, 134줄)
      • 앨범 커버 이미지 URL 수정하는 아래 코드
      • " RegexpReplace "(album/images/)(\d+)" "$1@1000" "
      • 35번째 줄의 키워드를 참고하여 앨범 커버 해상도 "1000"을 원하는 크기로 바꾼다. (200, 500, 1000, original 중 하나)
    • 전체 앨범 발매일 대신 발매년도 (174줄, 176줄)
      • 이 줄의 '#'을 지워서 발매일의 첫 4글자(=연도)만 사용하도록 한다.
  • 이외 사항 및 오류에 관해서는 직접 수정해주신 후 댓글로 방법 공유, 또는 댓글 의견이나 GitHub 저장소에 이슈 발행을 부탁드린다.

사용법

  • Mp3tag를 열고, 태그를 편집할 음악 파일을 불러온다.
  • 같은 앨범에 속한 음악 파일을 선택한 후,
    • Mp3tag 프로그램 설계상 앨범 단위로 검색이 이루어진다.
  • 메뉴의 [태그 소스 > Bugs]에서 필요한 기능을 선택한다.

    • 앨범명 검색: "1. 앨범", 곡명 검색 (곡별로 개별 입력하는 경우): "1. 곡명"
    • (메뉴명은 스크립트 파일 이름을 따른다.)
  • 검색어를 묻는 창이 뜬다. 앨범명 또는 곡명을 입력하고 [다음] 클릭.

    • 벅스에서 검색 가능한 키워드라면 무엇이든 상관없다.
  • 여러 검색 결과 중 하나를 고르는 창이 뜬다. 올바른 항목을 고르고 [확인] 클릭.

    • 검색 결과가 하나 뿐이면 바로 다음 페이지로 넘어간다.
  • 앨범 정보 창

    • 태그 내용을 입맛에 맞게 수정하고, 트랙 순서를 바로잡는다.
    • 다 되면 [확인] 클릭.
  • 만약 곡 태그에 기존 앨범 커버가 있다면, 기존 커버를 그대로 둘 지 묻는다.
    • [아니오] 클릭해서 기존 커버 삭제.

빠른 작업 진행을 위한 팁

  • 도구 모음 오른쪽 끝에 [지구본+화살표] 아이콘이 태그 소스 기능이다.
    • 화살표가 지구를 감싸고 도는 아이콘: 검색어 묻지 않고 태그 정보로 바로 검색
    • 지구 앞 양방향 화살표 아이콘: 검색어 묻는 검색
      • 옆에 아래 방향 화살표 누르면 태그 소스 메뉴와 같은 메뉴가 뜬다.
  • 사용할 스크립트를 한 번 골라서 실행하면...
  • 그 다음부터는 둘 중 알맞은 아이콘만 누르면, 이전에 선택한 스크립트가 실행된다!
  • 도움말에서 보실 수 있는 단축키를 이용하면 더 편리하겠다.
    • 감싼 아이콘: [Ctrl + Shift + I], 앞에 화살표: [Ctrl + I]

곡별 개별 가사 입력

  • 곡별 가사 입력은 위의 절차를 진행한 뒤에 사용할 수 있다.
    • 벅스 곡 ID를 이용해서 곡 페이지에 있는 가사를 가져오기 때문.
  • 입력 절차는 대동소이하다.
    • "앨범 정보 창"에 다른 정보는 안 뜨고 "UNSYNCEDLYRICS" 태그로 표기된 가사만 나타난다. 그대로 [확인] 클릭.
      • 항목 값을 보면 줄넘김 안 되어 있지만, 입력 후에는 정상 표기된다.
  • 입력된 후 곡 항목 오른쪽 클릭 > "확장 태그 정보"를 선택하면 입력된 태그 확인이 가능하다.
    • 문제: 입력된 가사 앞에 "eng||"이라고 표기되어 있다. 앞의 언어 키워드는 가사 언어를 나타낸다고 한다. 이는 자동 입력된 것이며, 태그 소스 스크립트에서 바꿀 방법이 없는 듯 하다. 해결 방법 알고 계시면 공유를 부탁드린다.

반응형

Jupyter 노트북 파일은 무식하게 요약하면,

  • 소스 코드
  • 마크다운 문서
  • 실행 결과
    들이 각각 셀 단위로 묶인 XML 문법 파일이라고 할 수 있습니다.

이에 따라 버전관리 툴의 일반적인 비교, 병합 툴로는 노트북 파일을 어떻게 효율적으로 저장할 지 알 길이 없습니다.
예를 들어, 소스코드 변경사항만 저장하고 싶은데, 비교 툴은 어디가 소스이고 어디가 실행결과인지 모르니 그렇게 안 된다는 거죠.

이를 해결하기 위해 nbdime 플러그인을 사용해볼 수 있습니다. 노트북 문서를 소스코드 (및 문서 셀) 위주로 비교, 병합하는 기능을 제공하는 플러그인인데요. 문제가 있습니다...

  • 개발 진척도가 그리 빠르지는 않은 것 같고...
  • 비교, 병합 속도가 느으으리며...
  • 출력 셀 비교, 병합은 개발 목표가 아니라고 하며...
  • JupyterLab이라고 해서 다음 세대 버전 나온다는데, 걔는 이 플러그인이 지원하지 않겠지...딱히 상관 없는 것 같네요.

따라서, 프로덕션 수준은 아닌 것 같으니 각자 목적에 맞는지 시험 사용을 해 본 후 본격적으로 써 보시기 바랍니다.

GitHub 저장소
공식 문서

설치

설명서에 나와 있는 대로 pip install nbdime, 또는 Anaconda 환경이라면 conda install -c conda-forge nbdime하면 됩니다.

Git 연동

nbdime를 쓰려는 Git 저장소 디렉토리에서 nbdime config-git --enable 하면 됩니다.
.gitattributes 파일 및 git config -l 명령 결과에서 정상 적용 여부를 확인할 수 있다고 하네요.

반응형

2017년 8월자 Insider Preview 버전부터 (RS3; 2017 Fall Creator Update) Xilinx Vivado (2017.x) 실행이 안 되는 문제가 발생했다.

공식 포럼 등에서도 비슷한 문의가 나왔으나 해결책 답변은 없었던 상황에서...

몇 주 전 공식 지원 페이지에 임시 해결책이 업로드된 것을 뒤늦게 발견했다.

2017.3 - Vivado does not launch with Windows 10 Fall Creators Update

여기 안내된 해결 방법은,

  1. Navigate to (Vivado Installed Directory)\2017.3\bin\unwrapped\win64.o
  2. Backup 'vivado.exe' by renaming it to 'vivado.exe.backup'
  3. Copy 'vivado-vg.exe' and paste it into the same folder.
  4. Rename 'vivado-vg - Copy.exe' to 'vivado.exe'

그렇다. 실행 파일 하나 지우고, 다른 파일로 대체하는 것. Windows 최신 버전에서 틀어막은 기능을 Xilinx 개발자들이 쓰고 있었나 보다.

반응형

Python은 기본적으로 single-process, single-thread로 동작한다. GIL (Global Interpreter Lock) 이라는 것이 있어서 다중 스레드로 인한 데이터 오염을 막는 동시에 다중 프로세싱까지 막아버린다. 그렇잖아도 스크립트 언어라 느린데 멀티프로세싱이 쉽지많은 않으니 죽을 맛이다. GIL을 버린다 버린다 토론은 하는 모양인데 동시 접근으로 인한 문제를 고려하기가 어려우니 지지부진한가 보다. 애초에 다중 프로세싱 환경을 고려한 Rust 같은 언어로 갈아타면 되겠지만 아직 Python이 좋다...

한편 멀티프로세싱 또는 멀티스레딩이 필요한 경우는 크게 둘로 나눌 수 있다.

  1. 병렬화가 작업 레벨이든, 데이터 레벨이든 가능하긴 한 상황을 상정한다.
  2. I/O 작업이 오래 걸리는 경우, I/O 기다리는 동안 다른 작업을 수행해 보면 좋다. 이 때는 굳이 비싼 새 프로세스를 만들 것 없이 스레드를 하나 만들고 GIL을 새 스레드에 넘겨주도록 한다고 한다. ''concurrent.future.ThreadPoolExecutor''로 편리하게 할 수 있으나 안 써봤다.

1에 대해서는 3.5부터 도입된 AsyncIO를 공부하여 써먹어야 하겠다. 좋아보이는 정리글

  1. CPU 작업이 오래 걸리는 경우, 코어 하나를 공유하는 스레드로는 안 되고 여러 프로세스를 만들어서 최신 CPU의 다코어를 활발히 활용해야 한다. 문제는 비용 값싼 프로세스간 데이터 공유 방법을 적용하기.

이 중 두 번째 문제에 대해 Py3.2부터 도입된 ProcessPoolExecutor와 NumPy 행렬 공유를 위한 공유 메모리 multiprocessing.sharedctypes 를 사용해 보았다.

ProcessPoolExecutor는 프로세스간 통신을 Pickle을 통해 수행하는 다중 프로세스 관리 툴이다. Pickle을 쓰니 성능이 그리 좋지는 않을 것 같다. 연산 결과를 취합하는 가장 일반적인 방침은 메인 프로세스에서 Queue를 사용해서 결과를 모으는 것이 되겠다. 그러나 매우 큰 행렬을 대상으로 연산을 수행하는 경우, 데이터를 주고 받느라 (특히 여기서는 느린 Pickle로) 시간을 잡아먹게 되겠다. 공유 메모리를 사용하는 것이 각 프로세스에게 행렬을 보내거나 새로 만들고, 연산 결과를 받아오느라 불필요한 시간이 들지는 않으니 좋을 테지만, 공유 메모리에 질서를 지켜 접근하느라 병렬 처리의 매력이 떨어질 것이다.

그 전에 ProcessPoolExecutor만 사용해서, 각 프로세스에서 연산한 결과를 메인 프로세스에서 결합하는 예제이다.

공식문서/ProcessPoolExecutor 참고 https://www.reddit.com/r/learnpython/comments/4vpj1w/populate_numpy_array_through_concurrentfutures/

import concurrent.futures
squares = np.zeros((20, 2))
def make_square(i):
    print('iteration', i)
    # compute expensive data here ...
    # return row number and the computed data
    return i, ([i, i**2])
with concurrent.futures.ProcessPoolExecutor(2) as executor:
    for row, result in executor.map(make_square, range(20)):
        squares[row] = result
squares

다음으로 NumPy array를 공유 메모리에 담아서, 각 프로세스가 연산 결과를 바로 공유 메모리에 저장하는 경우이다.

공유 메모리 NumPy array

S_ctypes = None
def sq_prc(i, size, shape):
#     print('iteration', i)
    if i == 0:  # preserve first row
        return None
    from numpy import ctypeslib
    S = ctypeslib.as_array(S_ctypes)
    S.shape = shape
    S[i] = [i, i**2]
    return None

def run_conc(p_num):
    global S_ctypes  # very ugly...

    import numpy as np
    import concurrent.futures
    from numpy import ctypeslib
    S = np.zeros((20, 2), dtype=np.int32)
    S[0, 0] = 10; S[0, 1] = 20
    # copy NumPy array into shared memory
    from multiprocessing import sharedctypes
    size, shape = S.size, S.shape
    S.shape = size
    S_ctypes = sharedctypes.RawArray('i', S)  # double type 'd'; int type 'i'
    S = np.frombuffer(S_ctypes, dtype=np.int32, count=size)
    S.shape = shape
    with concurrent.futures.ProcessPoolExecutor(p_num) as executor:
        fs = []
        for i in range(20):
            f = executor.submit(sq_prc, i, size, shape)
            fs.append(f)
        concurrent.futures.wait(fs)  # has to wait each process finish

run_conc(8)    # or any number up to the number of your cpu core

https://stackoverflow.com/questions/8804830/python-multiprocessing-pickling-error 공식문서/Pickleable objects Pickle 가능한 객체 제한 때문에 worker function을 최상위 레벨로 끌어올린 뒤, 무식하게 공유 메모리 주소 변수를 전역 변수로(...) 두고는 메인 함수 run_conc()에서 같은 변수를 가져다 썼다. 부끄럽다...

반응형

내가 좋으려고 열심히 한글화해본 앱들.

% 혼자 @ 미완성

안드로이드 앱

BeyondPod

  • "crowdin" 플랫폼을 쓴다.
  • 사실 숟가락만 얹... 진 않았지. 나름 기여분 많다.
  • 왕년에는 Windows Mobile, Android 통틀어 최고의 앱이었는데 지금은...
    • v4에서 머티리얼 UX 적용한다고 갈아엎었는데, 그 때 사용자들이 썰물처럼 빠져나감
    • 굳이 이 비싼 돈 주고 살 이유가 없음, 요새는 세일도 잘 안 함
    • 좋은 다른 "무료" 앱 많이 나옴
    • 국내는 팟빵이 다 해먹음, 그 다음 팟티?
  • 그래서 별 의미는 없게 되었다

Transdroid/Transdrone %

  • 웹서버 기능 지원하는 비트토렌트 클라이언트 프로그램을 원격제어하게 돕는 앱
  • 예전에는 자기네 웹사이트에 직접 번역문을 올리면 되었는데,
  • 얼마 전에 보니 "crowdin"으로 이사했다

EBookDroid %

  • 러시아 산 앱인 듯... 최근 카스퍼스키의 NSA 털이를 생각할 때, 사용이 조금 두렵다.
  • 개발자의 원드라이브 계정에 원문이 있고, 이를 번역해서 개발자에게 메일로 보내줬다.
  • 17년 하반기에 한 번 번역문 업데이트했었던 듯.

KOReader

  • 다 된 밥상에 숟가락만 얹음
  • 밥상이 맘에 안 드는 구석이 좀 있으나 숟가락 얹어서 나아졌는지는 글쎄..

데스크탑

Zim

  • "launchpad" 플랫폼을 쓴다.
  • 다른 사람이 다 해놓은 것에 숟가락만 얹었다.
  • 몇 가지 거슬리는 문제가 있기는 하나, 대충 쓰기 좋음 >_<

Zotero @

  • "transifex" 플랫폼을 쓴다.
  • 요것도 숟가락을 얹었다. 숟가락이 좀 큼.
  • 흠... 용어를 몰라서 손대기 애매한 것들이 있다. 틀렸으면 다른 분이 고치겠지.

eM Client % @

  • Outlook도 싫고, Thunderbird도 싫고 해서...
  • 메일, 일정, 연락처 딱 있고, 구글 계정 연동 가능하며(!) 예약 전송 기능도 있다!
  • 문제는 한글 "입력" 기능에 간헐적으로 버그 있음
    • 입력란 바꿀 때 이전에 입력하던 글자가 따라오는 문제
    • 가끔 이유없이 한글 입력 안 되는 문제 (Alt-Tab 해서 갔다 오면 괜찮)
  • 문제 2. 제대로 종료 안 하면 켤 때 DB 검사하느라 한 세월... 그래서 추천을 못 하겠네.
  • 전용 번역 프로그램을 쓴다.
  • 번역문 보냈더니 고맙다고 프로 키 몇 개 주시긴 했는데, 정식 버전에서는 내 번역본 버림받음 >_<

ruTorrent %

  • rTorrent의 웹 프론트엔드
  • GitHub 저장소 포크한 뒤, 번역문 추가해서 리퀘스트 보냄.
  • 오래전에 완료한 뒤로 문장 몇 개 추가되었던데, 무슨 기능인지 잘 몰라서...

Flood %

  • rTorrent의 또다른 웹 프론트엔드, React로 작성되어서 모던한 게 자랑이라고..

Form History Control (확장기능)

  • 유용하게 잘 쓰고 있어서, 조금이나마 기여(방해?)하고자 잽싸게 작업.
반응형

Intel FPGA, "Securing IoT Devices can be Never-Ending"

IoT 요소와 보안 요소

  • IoT device = HW + SW (+firmware) + data + messages into/out-of device
  • 각 요소에 대한 세 가지 가정
    • 각 요소는 신뢰할 수 있는 출처에서 제작되었다
    • 위·변조되지 않았다
    • 시스템 디자이너가 의도한 작업만을 수행한다
    • device는 위 가정을 신뢰하거나, 매 번 시험하는 선택을 할 수 있다.
  • "대전제": 완벽한 보안을 달성할 수는 없다. 주어진 설계/제조 예산 아래서, 시스템이 다루는 작업의 중요성보다 해킹에 필요한 비용이 최대한 비싸도록 만드는 것이 목표.

기기에 도달된 메시지를 신뢰하려면

공개키 인증을 통해 메시지를 검증한다

  • 서버와 기기가 공통된 hash 방법을 구현한다
  • 서버는 메시지와, 메시지의 hash를 개인키로 암호화한 hash를 전달한다
  • 기기는 같은 방법으로 메시지를 hash한 후, 공개키로 hash를 복호화하여 두 hash를 비교한다
  • 같으면 높은 확률로 메시지를 신뢰할 수 있다
  • 메시지 자체를 암호화할 수도 있으나, 공개키 연산은 비싸다

그러면 그 공개키는 어떻게 믿을 수 있을까?

  • Certification Authority (인증 기관) chain이 있다.
  • 키를 인증하는 상위 키도 같은 공개키 암호화 방식으로 작동.
  • chain을 쭉 따라가면 결국 끝이 있는데, 여기는 현실 계약서 서류가 보호해 주는 걸로.

기기의 인증 절차는 믿을 수 있을까? "나"를 믿을 수 있을까?

걱정거리는 더 있다.

  • 인증 절차를 관장하는 코드가 변조되면? 기기 OS가 변조되면?
  • 개발 PC가 해킹당해서 인증서가 변조되면?
  • "하드웨어 디자인에 백도어가 심겨 있다면?"

미사일 발사 시스템도 아닌데 과한 걱정이라구? IoT 아기 모니터를 변조해서 DDoS용 봇넷으로 만든 빌런이 있다. 어떤 시스템을 만들든 최악의 상황을 고려는 해야 한다.

소프트웨어 개발, 업데이트 배포 시에도 위의 메시지 인증 절차와 같이 인증 절차를 넣어 두어야 한다. 그런데 이 소프트웨어는 어떻게 믿지?

"The Root of Trust"

CPU의 보안 동작 모드, 나아가 "Root of Trust"를 구현하는 것은 쉽지 않다

  • "신뢰할 수 있는 하드웨어가 신뢰할 수 있는 코드를 실행해야 한다."를 구현하기 위해,
  • 신뢰할 수 있는 하드웨어
    • 신뢰 수준이 낮아도 된다면, 믿을 수 있는 제조사의 MCU
    • 그렇지 않다면,
      • formal verification 및 functional safety 기준을 만족하도록 철저히 설계·검증한 디자인
      • 당신의 기관에서 검증하거나 직접 다룰 수 있는 공장에서 제조
      • tamper protection, side-channel attack protection 적용된 디자인
      • physically unclonable function (PUF) 통해 유출·복제되지 않는 비밀 ID 부여
  • 신뢰할 수 있는 코드 실행
    • hardware security module (HSM)
      • 보안 키 저장소, (HW 기반) 암호화 엔진, ...
      • tamper, intrusion 감지 기능, secure boot 관장
    • 메모리 보호
      • HSM만 읽고 쓸 수 있는 메모리 영역 제공

Active Monitor

critical system이라면 위의 시스템들과 별개로, 비정상 동작을 감지하여 경고 또는 시스템을 중단시키는 감시자가 필요할 수도 있다.

  • 정상 동작을 간단한 규칙으로 정의할 수 있다면 HSM 내의 소프트웨어든 하드웨어든 만들면 그만
  • 규칙이 복잡하다면? 딥러닝을 활용할 생각을 할 수 있으나,
    • 딥러닝 전문가 인력이 적고,
    • 지도 학습을 위해 옳은/위험한 동작 데이터를 마련하는 일은 불가능하다시피 하다
    • 동작 데이터 자체가 변조될 수 있는 가능성을 걱정해야 한다
    • MCU에서 구현하기에 딥러닝 연산은 자원을 많이 필요로 한다
  • 정말정말 critical system이면, heterogeneous redundancy 개념이 쓰이게 된다
    • 같은 설계 사양을 다르게 구현한 시스템 세 개를 마련해서, 둘 이상이 일치하는 출력 결과로 동작 수행
    • 다른 시스템 두 개 이상을 모두 해킹하기는 비용이 많이 들겠지.

그러나... 설계/제조 비용 문제

1$짜리 MCU 칩에 위 보안 기능을 넣는 것은 현실적으로 불가능하다.

  • HSM 넣을 돈이 없다
  • redundancy 넣을 자리가 없다. 물론 돈도 없다
  • 어쨌든 돈도 없고 아무것도 없다

그러면 어떻게 할까?

  • 무시한다
  • 적당히 포기하고 낮은 수준의 보안을 적용한다
  • 보안 책임을 IoT 기기 대신 상위 단계의 IoT 허브로 넘긴다
  • 보다 미세화된 신공정으로 triple-redundant MCU & internal HSM을 구현한다.
  • 시스템 전체를 통째로 팔면서, 보안을 위한 설계·제조 비용을 시스템 전체 비용에 반영한다.
    • ARM 수석 연구원 왈, "어차피 IoT 시스템은 칩 하나만이 아니라 시스템 전체라야 의미 있는 것 아니냐"
  • 그냥 보안 강화 칩을 비싸게 판다 ($15 > $1)

곧 들이닥칠 IoT 보안 문제, 어떻게든 풀게 될 것이다.

반응형

Caffe-TensorFlow 사용법

요새는 TF도 Model Zoo가 잘 갖춰져 있어서 의미는 없지만, Caffe의 (주로 CNN) Model을 TF로 변환해 주는 좋은 도구이다.
물론 모든 모델을 변환할 수는 없는 노릇이다. 코드 업데이트가 멈춘 지 조금 되었기에 최신 레이어는 지원이 안 되고, 오래 된 레이어라고 다 되는 것도 아닌 것 같다. 따라서 사용 전에 README, GitHub issue란을 잘 살펴보아야 의미 없는 노력을 피할 수 있겠다.
GitHub 저장소

그러나, 변환된 모델이 원래 모델의 정확도를 달성하지 못해서 아직까지는 헛짓거리가 되었다...

설치

  • 깃 저장소에서 소스코드 받아오고..
  • PyCaffe 설치하면 좋지만 건너뛰어도 돌아는 가고..
  • TensorFlow 환경을 갖춰준다: Anaconda 사용자라면 TF가 깔린 환경을 activate해 준다

사용 전 코드 수정

Py2, TF 1.0, protocol buffer 예전 버전 (?) 환경에서 작성된 것으로 보인다. Py3, TF 1.2+, protocol buffer 1.2+에서 사용하려면 몇 가지 수정이 필요하다. 주먹구구로 수정한 코드는 아래와 같다.

(TODO link to patch file)
$ git apply {patch file}

사용법

먼저 Caffemodel, model description 파일을 준비한다.
그 다음, 본 프로젝트 루트에서 아래 명령을 실행하면 된다.

$ ./convert.py --caffemodel <path/to/caffemodel> --data-output-path <path/to/output/model.npy> --code-output-path <path/to/otuput/model.py> <path/to/model/description/file>

요렇게 하면 model parameter를 담는 numpy data 파일과 layer 구조를 정의하는 python code 파일이 생성된다.
프로젝트에 함께 들어있는 TF 코드를 통해 (./kaffe/tensorflow/) 돌려볼 수 있으나, 요걸 쓰는 대신 직접... 모델 코드를 작성했다.

ImageNet / AlexNet

ILSVRC '12 training/test 데이터

올바르게 불러오는 방법은 대체 무엇일지...
요전에 TF 공식 저장소의 Inception network 예제에서 가져온 ImageNet data reader는 Caffe에서의 데이터 가공법과 많이 다른지 모델 정확도가 올라오질 않았다. 내가 코드를 잘못 다뤘겠지만!

대신 DoReFa-Net 코드 찾다가 겸사겸사 본 TensorPack의 data reader를 사용했다. 문제는 Caffe 모델, caffe-tensorflow 코드 저자의 시험 결과보다 모델 성능이 1% 적게 나와서 고민. 편의상 TensorPack data source가 가져온 데이터를 placeholder에 feed dict로 넣는 원시적이고 성능 낮은 방법을 써서 또 고민.

그냥 feeddict에 넣는 대신 Tensorpack과 Multigpu를 활용한 빠른 트레이닝 코드 작성하기 글을 참조해서 TF Queue를 씁시다..

  • tensorpack 설치

  • imagenet dataset 다운로드

  • tensorpack 문서에 따라 dataset 재가공

    • 아래와 같은 코드로 이미지들을 lmdb 포맷으로 (또는 TensorPack가 지원하는 다른 포맷) 압축

      class BinaryILSVRC12(ILSVRC12Files):
      def get_data(self):
      for fname, label in super(BinaryILSVRC12, self).get_data():
          with open(fname, 'rb') as f:
              jpeg = f.read()
          jpeg = np.asarray(bytearray(jpeg), dtype='uint8')
          yield [jpeg, label]
      ds0 = BinaryILSVRC12('/home/dataset/imagenet/', 'val')
      ds1 = PrefetchDataZMQ(ds0, nr_proc=1)
      dftools.dump_dataflow_to_lmdb(ds1, '/home/dataset/imagenet/lmdb/orig/ILSVRC-val.lmdb')
      
    • 요 코드를 실행하면 수 시간 후에 lmdb 파일 생성해 줌.

  • data source 코드 작성 -- 입력 파이프라인 연결 : 읽어서 > 순서 섞고 > 필요한 이미지 가공 (주변부 자르기, 평준화 등) > 준비!

다른 AlexNet 모델 실패기

  • 구글에서 alexnet tensorflow 치면 나오는 모델도 있는데... 위의 예전 data reader 문제와 맞물려 정확도가 안 나와서 실패...

그러나...

얻은 Top-5 정확도

(오른쪽은 Caffe-TF README.md에 언급되어 있는, 제작자가 달성한 정확도)

  • CaffeNet: 78% < 79.93%
  • VGG-16: 88% < 89.88%

왜... 낮지...

반응형

+ Recent posts